我正在尝试通过作为服务主体运行的托管代理上的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'
如何授予服务主体所需的访问权限?
答案 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 Role Based Access Control任务,您可以在天蓝色的devops管道中使用。
更多分步教程,请访问此博客-Service Principal considerations when using Azure DevOps to manage RBAC on Azure Resource Groups