【发布时间】:2022-11-11 19:57:48
【问题描述】:
我正在尝试通过服务主体(通过 PowerShell 脚本)建立与 Azure SQL 数据库的连接。
我相信我已遵循 Microsoft 发布的指导,但无法建立连接。我目前的配置是:
- Azure SQL Server 已设置 AAD 管理员(AAD 组)
- AAD 组包含一个服务主体帐户(手动创建)
- Azure SQL Server 具有系统托管标识(并分配有目录读取者角色)
据我了解,我不需要为服务主体显式执行CREATE USER,因为它已经是 Azure SQL Server 上的管理员 AAD 组的成员。
我尝试过 Azure CLI 和 AZ 模块命令,但均无济于事。 举个例子:
az login --service-principal -u "***" -p="***" --tenant "***"
$accessToken = az account get-access-token --resource https://database.windows.net --query accessToken
Invoke-Sqlcmd -ServerInstance "***.database.windows.net" -Database "***" -AccessToken $accessToken -Query "SELECT GETUTCDATE()"
以上在 Invoke-Sqlcmd Invoke-Sqlcmd: Login failed for user '<token-identified principal>' 上生成错误
我也尝试过清理访问令牌(注意到它以" 开始/结束),这样做的错误大致相同,但它确实报告了实际的服务主体(按 ID)
$accessToken = $accessToken -replace """", ""
产生错误Invoke-Sqlcmd: Login failed for user '***@***'
【问题讨论】:
标签: azure azure-sql-database azure-cli azure-sql-server