对于我们的一个客户,我正在 Azure DevOps 中为 Azure SQL 数据库配置构建和部署管道。我们之前已经这样做过很多次,没有出现任何问题,但这是我第一次使用“工作负载身份联合”类型的服务连接。 我已根据需要修改了 YAML 代码并将变量组连接到管道,但我不断收到以下错误:
存在资源授权问题:“管道无效。作业部署_job_prod:步骤输入 azureSubscription 引用服务连接 DEVOPS_mdwh_connection_prod,无法找到。服务连接不存在、已被禁用或尚未授权使用。
由于服务连接的名称是正确的并且是根据变量组中的变量进行配置的,因此我知道可以访问它们。按错误消息旁边的“授权资源”按钮似乎没有执行任何操作。我尝试将 YAML 脚本中的 AuthorizationType 更改为 servicePrincipal、WorkloadIdentityFederation 或只是禁用它,但这似乎也没有什么区别。
我在这里有点不知所措。 Microsoft 现在建议在服务主体上使用工作负载联合身份验证,因此我不愿意改回这一点。这里有人能帮我弄清楚我错过了什么吗?以下是正在使用的 YAML 代码以及服务连接设置:
- name: env
displayName: Environment
type: string
values:
- tst
- acc
- prod
- name: ServiceConnectionPrefix
displayName: Service Connection Prefix
type: string
- name: SQLDatabaseName
displayName: SQL Database Name
type: string
- name: SQLProjectName
displayName: SQL Project Name
type: string
jobs:
- deployment: deployment_job_${{ parameters.env }}
displayName: Deployment Job ${{ parameters.env }}
environment: Deploy to ${{ parameters.env }}
variables:
- group: 'VG-MDWH-${{ upper(parameters.env) }}'
strategy:
runOnce:
deploy:
steps:
- checkout: self
displayName: 1. Retrieve repository
- task: SqlAzureDacpacDeployment@1
displayName: 2. Deploy DACPAC
inputs:
azureSubscription: '${{ parameters.ServiceConnectionPrefix}}${{ parameters.env }}'
## AuthenticationType: 'WorkloadIdentityFederation'
ServerName: '$(ServerName)'
DatabaseName: '${{ parameters.SQLDatabaseName }}'
deploymentType: 'DacpacTask'
DeploymentAction: 'Publish'
DacpacFile: '$(Pipeline.Workspace)/${{ parameters.SQLProjectName }}/${{ parameters.SQLProjectName }}/bin/debug/${{ parameters.SQLProjectName }}.dacpac'
PublishProfile: '$(Pipeline.Workspace)/${{ parameters.SQLProjectName }}/${{ parameters.SQLProjectName }}/${{ parameters.SQLProjectName }}_${{ parameters.env }}.publish.xml'
服务连接设置:
正如您在此处看到的,服务连接也没有限制:
如有任何帮助,我们将不胜感激。