1

我正在使用 Azure DevOps 部署 Web 应用并为 SQL 数据库执行数据库迁移。我有一个服务连接设置,并且能够使用 Azure CLI 部署 Azure 资源,例如

- task: AzureCLI@2
  displayName: 'Deploy Azure resources'
  inputs:
    azureSubscription: 'My Service Connection'
    scriptType: 'bash'
    scriptLocation: inlineScript
    inlineScript: ./deploy.sh

现在,我想执行数据库迁移,并且我想使用服务连接进行身份验证(应用注册已被授予访问 SQL 数据库的权限)。我的理解是我可以使用 OAuth 令牌登录到 SQL 数据库 - 我的问题是如何使用服务连接获取该令牌。

请注意,我无法将客户端密码添加到 Azure 中的服务主体,因此无法使用 a 进行 REST 调用/oauth2/tokenclient_secret我在企业空间工作,事情已被锁定)。

鉴于管道可以访问 Azure DevOps 服务连接,我的感觉是必须有某种方法来使用它来获取对https://database.windows.net/资源有效的 OAuth 令牌 - 但是如何?

4

1 回答 1

2

您可以尝试以下情况的解决方案:Azure Pipeline connect to SQL DB using service principal

添加检索持有者令牌的 Azure CLI 任务。然后将此传递给使用令牌的 Azure Powershell 任务。

$token= & az account get-access-token --resource=https://database.windows.net --query accessToken
Write-Host("##vso[task.setvariable variable=sqlToken]$token")
于 2020-10-15T07:57:43.480 回答