Azure服务连接无法跨多个订阅工作



我最近尝试建立与第二个订阅的服务连接,我让它处理第一个订阅罚款,已经工作了七个月,现在仍在工作。但是,当我授予服务主体应用程序访问新订阅的权限时,管道失败,并说它看不到资源组。这是Terraform初始化步骤。

我已经允许贡献者访问订阅级别上的服务主体,并且出于良好的考虑,我还允许贡献者自己访问实际资源组上的服务对象。

这是我得到的错误:

Initializing the backend...
Successfully configured the backend "azurerm"! Terraform will automatically
use this backend unless the backend configuration changes.
╷
│ Error: Failed to get existing workspaces: Error retrieving keys for Storage Account "nsterraformstatestorage": storage.AccountsClient#ListKeys: Failure responding to request: StatusCode=404 -- Original Error: autorest/azure: Service returned an error. Status=404 Code="ResourceGroupNotFound" Message="Resource group 'TerraformBackendForCICTesting' could not be found."
│ 
│ 
╵
##[error]Error: The process '/opt/hostedtoolcache/terraform/1.0.4/x64/terraform' failed with exit code 1

我过去曾关注过这篇文章来设置服务连接:https://sabirmohamed.com/how-to-create-a-service-connection-in-the-azure-devops/

我相信两个订阅都在同一个租户中。

我肯定遗漏了什么,因为我确信一个服务主体可以跨多个订阅工作。

如果您在订阅范围级别创建服务连接(按照链接完成(,则服务连接将绑定到您创建时输入的订阅。

如果您创建一个同时包含两个订阅的管理组,并使用该管理组作为作用域创建服务连接,那么它应该同时处理这两个订阅。

就我个人而言,我不喜欢给服务主体和服务连接太宽的访问权限,所以我通常每个订阅至少创建一个。

编辑(由于注释中的格式不正确(

如果任务需要,可以在任务级别设置服务连接:

steps:
- task: AzureKeyVault@1
displayName: KeyVault
inputs:
azureSubscription: ${{ parameters.serviceConnectionName }}
KeyVaultName: ${{ parameters.keyVaultName }}

编辑2:

在Terraform任务中,服务连接设置如下:

environmentServiceNameAzureRM: 'YourServiceConnectionName'

最新更新