我尝试在全新的订阅中创建AKS集群。通过Web界面创建集群时,最终会产生CreateRoleAssignmentError
错误,并显示以下消息:
RoleAssignmentReconciler重试超时:autorest / azure:服务 返回错误。 Status = 403代码=“ AuthorizationFailed”消息=“ The 客户ID为'foo'的客户端'foo'没有授权 执行动作'Microsoft.Authorization / roleAssignments / write'over 范围 '/subscriptions/bar/resourceGroups/MC_MyResourceGroup_mycluster_region/providers/Microsoft.Authorization/roleAssignments/az
请注意,根据documentation,群集是使用手动创建的服务主体创建的。该服务主体在预订中的所有资源组上都具有“所有者”角色。
还请注意,我必须手动创建服务主体的原因是,首先无法创建集群。尝试在没有明确指定服务主体的情况下创建集群(即,请求自动创建一个新的集群)时,产生了另一个错误:
ServicePrincipalProfile中的凭据无效。请参阅 https://aka.ms/aks-sp-help了解更多详情。 (详细信息:adal:刷新 请求失败。状态码=“ 400”。响应主体: {“错误”:“未授权的客户端”,“错误描述”:“ AADSTS700016: 标识符为“ foo”的应用为 在目录“ bar”中找不到。 如果应用程序尚未安装,则可能会发生这种情况。 租户的管理员或租户中任何用户的同意。 您可能发送了错误的身份验证请求 租户。\ r \ n跟踪ID: 9ec6ed81-892d-4592-b7b5-61842f5c1200 \ r \ n相关ID: bffbb112-7348-4403-a36f-3010bf34e594 \ r \ n时间戳:2019-07-13 15:48:02Z“,”错误代码“:[700016],”时间戳“:” 2019-07-13 15:48:02Z“,” trace_id“:” 9ec6ed81-892d-4592-b7b5-61842f5c1200“,” correlation_id“:” bffbb112-7348-4403-a36f-3010bf34e594“,” error_uri“:” https://login.microsoftonline.com/error?code=700016“ })
我正在使用一个“初始”管理员用户对一个新帐户和一个预订执行这些操作,因此我想所有权限都应该就位。什么能解释以上错误?
答案 0 :(得分:0)
按照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-control/elevate-access-global-admin。因此,如果您授予自己这个角色,显然可以使用,但是您可以省去更少的权限。
答案 1 :(得分:0)
在我的情况下,我通过再次执行“ az登录”并移至正确的订阅来解决该问题,然后尝试再次运行该命令。有效。
另外,原因可能是您无权在该资源组上创建集群。我以前遇到过这种问题,因为您应该联系管理您的订阅的人来授予您权利。