oli*_*oli 7 powershell azure-powershell azure-active-directory azure-sql-database azure-devops
在 Azure DevOps“发布管道”中,我提供 Azure 资源(包括 SQLServer 数据库)并尝试使用托管标识配置对数据库的访问。
在确保 DevOps 服务主体是定义为数据库服务器的 AAD 管理员的 AAD 组的成员后,我需要运行一些 SQL 来添加托管身份用户并更改角色。这是在 Azure Powershell 任务中使用Invoke-Sqlcmdcmdlet尝试的。
Invoke-Sqlcmd有两种口味,我不清楚我应该使用哪一种以及是否重要。到目前为止,我尝试的所有内容都未能通过 AAD 进行身份验证。
如何将我使用 AAD 身份验证的意图传达给Invoke-Sqlcmd?
我需要先Connect-AzureAD吗?
如果我需要传递一个System.Management.Automation.PSCredential对象,鉴于我们正在处理服务主体(Azure DevOps 服务用户),我应该使用什么作为用户和密码?
要使用 AAD 进行身份验证,您需要以下内容:
在 Azure DevOps 管道中,使用使用此服务主体的 Azure PowerShell 任务。然后调用该Get-AzAccessToken函数来获取您可以使用的凭据。
- task: AzurePowerShell@5
displayName: Azure DB Awesomeness
inputs:
azureSubscription: 'MyServiceConnection'
azurePowerShellVersion: 'LatestVersion'
scriptType: inlinescript
script: |
$token = (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token
Invoke-SqlCmd -ServerInstance "$(DatabaseServer)" `
-Database "$(Database)" `
-AccessToken "$token" `
-Query "<YOUR QUERY>"
Run Code Online (Sandbox Code Playgroud)
其工作原理是 AzurePowerShell@5 任务从服务连接获取服务主体凭据,然后调用Connect-Az. 该Get-AzAccessTokencmdlet 获取可以相应使用的服务主体的凭据。
| 归档时间: |
|
| 查看次数: |
5438 次 |
| 最近记录: |