我正在使用高级网络选项在Azure中创建kubernetes服务,其中我已为其选择了特定的vNet和子网。
我遇到如下错误:
{"code":"InvalidTemplateDeployment","message":"The template deployment failed with error: 'Authorization failed for template resource '<vnetid>/<subnetid>/Microsoft.Authorization/xxx' of type 'Microsoft.Network/virtualNetworks/subnets/providers/roleAssignments'. The client '<emailid>' with object id 'xxx' does not have permission to perform action 'Microsoft.Authorization/roleAssignments/write' at scope '/subscriptions/<subid>/resourceGroups/<rgid>/providers/Microsoft.Network/virtualNetworks/<vnetid>/subnets/<subnetid>/providers/Microsoft.Authorization/roleAssignments/xxx'.'."}
我有贡献者角色。
答案 0 :(得分:2)
根据以下文章,您将需要对vNet拥有所有者权限才能更改对其的访问。
答案 1 :(得分:1)
现有答案并不完全正确,显然您可以摆脱Owner
的角色,但在子网范围内只需要Microsoft.Authorization/roleAssignments/write
(可能是vnet,没有对此进行测试) 。这有助于降低安全性。您需要一个自定义角色来执行此操作。如果您不想担任自定义角色,则现有的答案就可以了。
答案 2 :(得分:0)
有两种方法可以解决此问题:
1。您只需要在vnet范围内为您的帐户分配一个Owner
角色。
让您的管理员用户(登录门户网站的帐户需要vnet中的Owner
角色),导航到门户网站错误中提到的vnet-> Access control (IAM)
-> {{1} }-> Add
->将错误中的帐户添加为Add role assignment
,有关更多详细信息,请参见此link。
将帐户分配给vnet之后,您将能够创建aks。
在这种情况下,别人提到的custom role是毫无意义的。用户获得Owner
权限后,便可以为自己分配所需的任何角色,包括Microsoft.Authorization/roleAssignments/write
角色。因此,对于安全性问题,这无济于事。
2。如果不允许,则根据情况将帐户作为Owner
分配给vnet,这是一种更好的方法。您可以让您的管理员用户(该帐户在vnet中有一个Owner
)将您在Owner
步骤(未选择Authentication
选项)中配置的服务主体添加为{{ 1}}到vnet,然后在创建aks时,它也可以正常工作。
如果您没有服务主体,请参见此link进行创建。