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

如何在AKS代理池管道中用Azure用户托管标识连接Azure SQL

使用用户分配托管标识(UAMI)从AKS管道连接Azure SQL数据库

前提确认

确保AKS代理池的节点已关联目标UAMI,否则无法通过该标识获取认证令牌。


PowerShell 实现步骤

  1. 获取UAMI的Azure SQL访问令牌
  2. 利用令牌构建连接,执行用户创建/添加操作
# 获取UAMI针对Azure SQL的访问令牌
$token = (Get-AzAccessToken -ResourceUrl "https://database.windows.net/").Token

# 替换为你的SQL服务器和数据库名称
$connectionString = "Server=tcp:<SQL_SERVER_NAME>.database.windows.net,1433;Initial Catalog=<DB_NAME>;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"

# 安装SqlServer模块(首次运行需执行)
Install-Module -Name SqlServer -Force -Scope CurrentUser

# 执行SQL命令,创建/添加AAD用户
Invoke-SqlCmd -ConnectionString $connectionString -AccessToken $token -Query @"
CREATE USER [AAD_PRINCIPAL_NAME] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [AAD_PRINCIPAL_NAME];
"@

Bash 实现步骤

  1. 通过Azure CLI获取UAMI的访问令牌(AKS节点已关联UAMI时,az cli会自动使用该标识认证)
  2. 使用sqlcmd工具传递令牌完成连接并执行SQL
# 获取Azure SQL访问令牌
TOKEN=$(az account get-access-token --resource https://database.windows.net/ --query accessToken -o tsv)

# 替换为你的SQL服务器和数据库名称,执行用户创建命令
sqlcmd -S <SQL_SERVER_NAME>.database.windows.net -d <DB_NAME> -U any@any -P $TOKEN -Q "CREATE USER [AAD_PRINCIPAL_NAME] FROM EXTERNAL PROVIDER; ALTER ROLE db_datareader ADD MEMBER [AAD_PRINCIPAL_NAME];"

注意事项

  • 替换代码中的<SQL_SERVER_NAME>、<DB_NAME>、<AAD_PRINCIPAL_NAME>为实际值(AAD_PRINCIPAL_NAME可以是AAD用户的UPN或AAD组的名称)
  • Bash环境需提前安装Azure CLI和sqlcmd工具
  • 确保UAMI已被设置为目标SQL数据库的AAD管理员

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 02:26:02