本文提供了有关如何使用 Microsoft Entra ID 管理对 Nexus Kubernetes 群集的访问的综合指南。 具体而言,我们专注于基于角色的访问控制,这使你能够根据组织内的角色或职责向用户授予权限。
在您开始之前
- 首先,请为群集管理员创建Microsoft Entra 组,并向其分配成员。 Microsoft Entra ID 允许将访问权限授予整个组,而不是单独管理每个用户的权限。
- 创建 Nexus Kubernetes 群集时,使用创建的组 ID 作为“adminGroupObjectIds”的值,以确保组成员获得管理群集的权限。 有关如何创建和访问 Nexus Kubernetes 群集的说明,请参阅 快速入门 指南。
管理员对群集的访问权限
Nexus 会使用默认的 Kubernetes 角色cluster-admin和你指定的 Microsoft Entra 组adminGroupObjectIds创建 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组,参考默认的Kubernetes角色 - view。 此角色只是一个示例,如有必要,可以创建自定义角色并改用它们。 有关 Kubernetes 中面向用户的角色的详细信息,请参阅 Kubernetes 基于滚动的访问角色的官方文档。
- 记下创建时生成的 Microsoft Entra 组对象 ID。 
- 使用 kubectl 命令创建具有“view”角色的 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 文档 ,了解有关创建自定义角色和角色绑定的详细指南。