1

我尝试在全新订阅中创建 AKS 群集。通过 Web 界面创建集群时,最终会产生CreateRoleAssignmentError错误并显示以下消息:

RoleAssignmentReconciler 重试超时:autorest/azure:服务返回错误。Status=403 Code="AuthorizationFailed" Message="对象 id 为 'foo' 的客户端 'foo' 无权在范围 '/subscriptions/bar/resourceGroups/MC_MyResourceGroup_mycluster_region/ 上执行操作 'Microsoft.Authorization/roleAssignments/write'提供者/Microsoft.Authorization/roleAssignments/az

请注意,根据文档,集群是使用手动创建的服务主体创建的。此服务主体在订阅中的所有资源组上都具有“所有者”角色。

另请注意,我必须手动创建服务主体的原因是首先无法创建集群。当试图在没有明确指定服务主体的情况下创建集群(即请求自动创建新的服务主体)时,会产生另一个错误:

ServicePrincipalProfile 中的凭据无效。请参阅 https://aka.ms/aks-sp-help更多细节。(详细信息:adal:刷新请求失败。状态码 = '400'。响应正文:{"error":"unauthorized_client","error_description":"AADSTS700016:在目录 'bar' 中找不到标识符为 'foo' 的应用程序。如果租户管理员未安装应用程序或租户中的任何用户未同意此应用程序,则可能发生这种情况。你可能已将身份验证请求发送给错误的租户。\r\n跟踪 ID: 9ec6ed81-892d-4592 -b7b5-61842f5c1200\r\n相关 ID:bffbb112-7348-4403-a36f-3010bf34e594\r\n时间戳:2019-07-13 15:48:02Z","error_codes":[700016],"timestamp":"2019 -07-13 15:48:02Z","trace_id":"9ec6ed81-892d-4592-b7b5-61842f5c1200","correlation_id":"})

我正在使用“初始”管理员用户对新帐户和订阅进行这些操作,所以我认为所有权限都应该到位。什么可以解释上面的错误?

4

2 回答 2

1

正如OP所要求的,这就是答案。为了在 Azure 中创建资源(无论是哪些资源),您需要以下类型的权限:provider/resource/write. 编辑也是如此。这个基本原则适用于所有的资源。现在让我们比较所有者和贡献者:

在此处输入图像描述

我有一个需要贡献者角色才能工作的 AKS 模板 + 此自定义角色:

$role = Get-AzureRmRoleDefinition "Virtual Machine Contributor"
$role.Id = $null
$role.Name = "Assign AKS permissions to the vnet"
$role.Description = "Assign AKS permissions to the vnet for the inflation process"
$role.Actions.Clear()
$role.Actions.Add("Microsoft.Authorization/roleAssignments/write")

使用此角色 + 参与者由代码创建的 AKS 群集功能齐全。

User Access Administrator是一个内置角色,当您是租户承认并且您授予自己对租户下所有内容的访问权限时,您将被授予:https ://docs.microsoft.com/en-us/azure/role-based-access-控制/提升访问全局管理员。因此,如果您授予自己这个角色,它显然会起作用,但您可以少得多的权限就可以逃脱。

于 2019-07-14T16:11:01.703 回答
1

就我而言,我通过再次执行“az login”并移至正确的订阅来解决它,然后我尝试再次运行该命令。有效。

此外,原因可能是您无权在该资源组上创建集群。我以前遇到过这种问题,因为你应该联系管理你订阅的人给你权利。

于 2020-05-04T13:48:53.777 回答