Azure kubernetes 服务创建问题

Azure kubernetes service creation issue

我正在使用高级网络选项在 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'.'."}

我有贡献者角色。

根据以下文章,您需要对 vNet 拥有所有者权限才能更改对它的访问。

https://docs.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#built-in-role-descriptions

现有的答案并不完全正确,你可以摆脱 Owner 角色,显然,但你只需要 Microsoft.Authorization/roleAssignments/write 在子网范围内(可能是 vnet,没有测试这个)。这有助于锁定安全性。你需要一个自定义角色来做到这一点。如果您不想担任自定义角色,现有答案就可以了。

有两种方法可以解决此问题:

1.You 只需在 vnet 范围内为您的帐户分配一个 Owner 角色。

让您的管理员用户(登录门户的帐户需要 vnet 中的 Owner 角色),导航到门户错误中提到的 vnet -> Access control (IAM) -> Add -> Add role assignment -> 将错误中的帐户添加为 Owner,有关详细信息,请参阅此 link。 将您的帐户分配给 vnet 后,您将能够创建 aks。

在这种情况下,其他人提到的custom role毫无意义的。一旦用户获得 Microsoft.Authorization/roleAssignments/write 权限,他就可以为自己分配任何他想要的角色,包括 Owner 角色。所以对于安全问题,也于事无补。

2.If 不允许您将您的帐户作为 Owner 分配给您的 vnet,这里有一个更好的方法。您可以让您的管理员用户(该帐户在 vnet 中有一个 Owner)添加您在 Authentication 步骤中配置的服务主体(而不是 select create new 选项)作为 vnet 的 Network Contributor,然后当您创建 aks 时,它也可以正常工作。

如果您没有服务主体,请参阅此 link 创建它。