你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure Operator Nexus Kubernetes 群集中基于角色的访问控制
本文提供了有关如何使用 Microsoft Entra ID 管理对运营商关系 Kubernetes 群集的访问的全面指南。 具体而言,我们专注于基于角色的访问控制,这使你能够根据用户在组织内的角色或职责向其授予权限。
开始之前
- 首先,请为群集管理员创建 Microsoft Entra 组,并向其分配成员。 Microsoft Entra ID 允许向整个组授予访问权限,而不是单独管理每个用户的权限。
- 创建运营商关系 Kubernetes 群集时,请使用创建的组 ID 作为“adminGroupObjectIds”的值,以确保组成员获得管理群集的权限。 有关如何创建和访问运营商关系 Kubernetes 群集的说明,请参阅快速入门指南。
管理员的群集访问权限
运营商关系将创建针对默认 Kubernetes 角色 cluster-admin
与你指定为 adminGroupObjectIds
的 Microsoft Entra 组的 Kubernetes 群集角色绑定。 群集管理员对群集具有完全访问权限,可以在群集上执行所有操作。 群集管理员还可以通过将其他用户分配到相应的 Microsoft Entra 组来为其授予访问权限。
注意
创建 Nexus Kubernetes 群集时,Nexus 会自动创建专用于存储群集资源的托管资源组,在此组中,会建立 Arc 连接的群集资源。
要访问群集,需要设置群集连接 kubeconfig
。 使用相关 Microsoft Entra 实体登录到 Azure CLI 后,可以获取从任意位置(甚至在群集周围的防火墙以外)与群集通信所需的 kubeconfig
。
设置
CLUSTER_NAME
、RESOURCE_GROUP
和SUBSCRIPTION_ID
变量。CLUSTER_NAME="myNexusK8sCluster" RESOURCE_GROUP="myResourceGroup" SUBSCRIPTION_ID=<set the correct subscription_id>
查询具有
az
的托管资源组并将其存储在MANAGED_RESOURCE_GROUP
中az account set -s $SUBSCRIPTION_ID MANAGED_RESOURCE_GROUP=$(az networkcloud kubernetescluster show -n $CLUSTER_NAME -g $RESOURCE_GROUP --output tsv --query managedResourceGroupConfiguration.name)
以下命令会启动 connectedk8s 代理,你可以通过该代理连接到指定 Nexus Kubernetes 群集的 Kubernetes API 服务器。
az connectedk8s proxy -n $CLUSTER_NAME -g $MANAGED_RESOURCE_GROUP &
使用
kubectl
将请求发送到群集:kubectl get pods -A
现在应会看到来自群集的响应,其中包含所有节点的列表。
注意
如果看到错误消息“无法将访问令牌发布到客户端代理,无法连接到 MSI”,则可能需要执行 az login
以使用 Azure 重新进行身份验证。
基于角色的访问控制
作为管理员,可以通过创建基于 Microsoft Entra 组对象 ID 的角色绑定,为群集提供基于角色的访问控制。 对于只需要“查看”权限的用户,可以将他们添加到绑定了“查看”角色的 Microsoft Entra 组来完成该任务。
为需要“查看”访问权限的用户创建一个 Microsoft Entra 组,并引用名为
view
的默认 Kubernetes 角色。 此角色只是一个示例,如有必要,可以改为创建和使用自定义角色。 有关 Kubernetes 中面向用户的角色的详细信息,请参阅基于 Kubernetes 角色的访问角色官方文档。记下创建时生成的 Microsoft Entra 组对象 ID。
使用 kubectl 命令创建与“查看”角色的 clusterrolebinding,并将其与 Microsoft Entra 组相关联。 将
AZURE_AD_GROUP_OBJECT_ID
替换为 Microsoft Entra 组的对象 ID。kubectl create clusterrolebinding nexus-read-only-users --clusterrole view --group=AZURE_AD_GROUP_OBJECT_ID
此命令将创建名为
nexus-read-only-users
的群集角色绑定,用于将view
角色分配给指定 Microsoft Entra 组的成员。验证是否已成功创建角色绑定。
kubectl get clusterrolebinding nexus-read-only-users
现在,Microsoft Entra 组中的用户具有对群集的“查看”访问权限。 他们可以使用
az connectedk8s proxy
访问群集来查看资源,但无法进行任何更改
后续步骤
你可以通过创建具有特定权限的自定义角色来进一步微调访问控制。 创建这些角色涉及 Kubernetes 本机 RoleBinding 或 ClusterRoleBinding 资源。 你可以根据自己的要求查看官方 Kubernetes 文档,获取有关创建其他自定义角色和角色绑定的详细指导。