Azure服务主体需要什么权限才能调用New-AzSubscriptionAlias PowerShell函数?

时间:2020-11-10 07:57:56

标签: azure azure-devops azure-powershell

我正在尝试通过作为服务主体运行的托管代理上的Azure DevOps管道创建订阅,并收到错误消息:

New-AzSubscriptionAlias: /home/vsts/work/1/s/Azure.Automation/Subscriptions/Create-AzureSubscription.ps1:190
Line |
 190 |  $subscription = New-AzSubscriptionAlias `
     |                  ~~~~~~~~~~~~~~~~~~~~~~~~~
     | Operation returned an invalid status code 'Unauthorized'

如何授予服务主体所需的访问权限?

3 个答案:

答案 0 :(得分:1)

写为here in Programmatically create Azure subscriptions with the latest APIs

您必须在注册帐户上具有所有者角色才能创建订阅。获得角色的方法有两种:

  • 您的注册企业管理员可以使您成为帐户所有者(需要登录),从而使您成为注册帐户的所有者。
  • 注册帐户的现有所有者可以授予您访问权限。同样,要使用服务主体创建EA订阅,您必须授予该服务主体创建订阅的能力。

答案 1 :(得分:0)

如果您需要使用服务主体来创建订阅,则必须授予服务主体Azure RBAC owner角色。

您可以使用New-AzRoleAssignment命令将所有者角色分配给您的服务主体。

要指定用户,请使用SignInName或Azure AD ObjectId参数。 若要指定安全组,请使用Azure AD ObjectId参数。要指定 Azure AD应用程序,请使用ApplicationId或ObjectId参数。必须使用RoleDefinitionName参数指定要分配的角色。

答案 2 :(得分:0)

您需要使用AzureRmRoleAssignment cmdlet为该服务主体分配 Owner 角色。

我们将其追溯到任务调用的基础New-AzureRmRoleAssignment cmdlet所需的两个缺少的权限-

  • Azure DevOps用于连接到您的服务主体(SPN) Azure订阅需要所有者角色
  • 同一SPN还要求您具有“读取目录数据”权限 Azure AD

还有一个第三方Azure Role Based Access Control任务,您可以在天蓝色的devops管道中使用。

更多分步教程,请访问此博客-Service Principal considerations when using Azure DevOps to manage RBAC on Azure Resource Groups