You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

YAML流水线部署Azure Analysis Services时配置AAD认证Azure SQL数据源的方法

AAS 对接AAD认证Azure SQL DB的PowerShell配置方案(无密码优先)

以下方案均适配YAML流水线部署场景,优先推荐无需硬编码/存储凭证的实现方式:

方案1:使用AAS托管身份认证(最优无密码方案)

生产环境优先选择该方案,无需维护任何凭证,安全性最高

  • 前置操作:为AAS实例开启系统托管身份/用户分配托管身份,将该托管身份添加为Azure SQL DB的AAD用户,授予db_datareader等所需的访问权限
  • 给流水线服务主体授予AAS实例的管理员权限,无需额外存储任何凭证
  • PowerShell配置示例:
# 安装依赖模块
Install-Module -Name SqlServer, Az.AnalysisServices -Force -AllowClobber

# 连接AAS实例
Connect-AzAnalysisServices -Instance "asazure://<AAS所在区域>.asazure.windows.net/<你的AAS实例名>"

# 读取目标模型的数据源
$aasDb = Get-AzAnalysisServicesDatabase -InstanceName "<AAS实例名>" -Name "<你的模型数据库名>"
$targetDatasource = $aasDb.Model.DataSources | Where-Object {$_.Name -eq "<你的数据源名称>"}

# 配置托管身份模式的连接字符串
$targetDatasource.ConnectionString = "Data Source=tcp:<SQL服务器名>.database.windows.net,1433;Initial Catalog=<SQL数据库名>;Authentication=Active Directory Managed Identity;Connect Timeout=30"

# 保存配置修改
$aasDb.Update()

方案2:使用AAD服务主体证书认证(无密码方案)

适合需要用独立服务身份访问SQL DB的场景,用证书替代密码:

  • 前置操作:为AAD服务主体配置非对称证书,将该服务主体添加为SQL DB的AAD用户并授予访问权限,证书存储在Azure Key Vault中
  • 流水线从Key Vault直接读取证书,无需明文存储敏感信息
  • PowerShell配置示例:
# 从Key Vault读取证书
$cert = Get-AzKeyVaultCertificate -VaultName "<你的Key Vault名称>" -Name "<证书存储名称>"
$certThumbprint = $cert.Thumbprint

# 配置服务主体证书模式的连接字符串
$targetDatasource.ConnectionString = "Data Source=tcp:<SQL服务器名>.database.windows.net,1433;Initial Catalog=<SQL数据库名>;Authentication=Active Directory Service Principal;Application Id=<服务主体客户端ID>;Certificate Thumbprint=$certThumbprint;Certificate Store Location=CurrentUser"

方案3:动态注入AAD访问令牌

适合临时测试、一次性部署场景:

  • 前置操作:给流水线服务主体授予SQL DB的访问权限
  • PowerShell动态获取访问令牌注入配置,无需长期存储凭证,令牌默认1小时有效期
  • 配置示例:
# 获取Azure SQL专属的AAD访问令牌
$sqlAccessToken = (Get-AzAccessToken -ResourceUrl "https://database.windows.net").Token

# 配置带令牌的连接字符串
$targetDatasource.ConnectionString = "Data Source=tcp:<SQL服务器名>.database.windows.net,1433;Initial Catalog=<SQL数据库名>;Password=$sqlAccessToken;Persist Security Info=True"

注意:该方案令牌过期后数据源会连接失败,仅适合一次性部署场景,不建议生产环境长期使用

方案4:AAD用户名密码认证(仅兼容说明,不推荐)

特殊场景需要使用账号密码时,将账号密码存储在Azure Key Vault中,流水线读取后配置:

$targetDatasource.ConnectionString = "Data Source=tcp:<SQL服务器名>.database.windows.net,1433;Initial Catalog=<SQL数据库名>;Authentication=Active Directory Password;User ID=<AAD用户名>;Password=<对应用户密码>"

内容的提问来源于stack exchange,提问作者user94118

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 05:09:03