你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Operator Nexus Kubernetes 群集中基于角色的访问控制

本文提供了有关如何使用 Microsoft Entra ID 管理对 Nexus Kubernetes 群集的访问的综合指南。 具体而言,我们专注于基于角色的访问控制,这使你能够根据组织内的角色或职责向用户授予权限。

开始之前

  1. 首先,为群集管理员创建 Microsoft Entra 组,并向其分配成员。 Microsoft Entra ID 允许将访问权限授予整个组,而不是单独管理每个用户的权限。
  2. 创建 Nexus Kubernetes 群集时,使用创建的组 ID 作为“adminGroupObjectIds”的值,以确保组成员获得管理群集的权限。 有关如何 创建和访问 Nexus Kubernetes 群集的说明,请参阅快速入门 指南。

管理员istrator 访问群集

Nexus 使用默认 Kubernetes 角色和指定的 adminGroupObjectIdsMicrosoft Entra 组创建 Kubernetes 群集角色cluster-admin绑定。 群集管理员对群集具有完全访问权限,可以在群集上执行所有操作。 群集管理员还可以通过将其他用户分配到相应的 Microsoft Entra 组来授予对其他用户的访问权限。

注意

创建 Nexus Kubernetes 群集时,Nexus 会自动创建专用于存储群集资源的托管资源组,在此组中,会建立 Arc 连接的群集资源。

要访问群集,需要设置群集连接 kubeconfig。 使用相关 Microsoft Entra 实体登录到 Azure CLI 后,可以获取从任意位置(甚至在群集周围的防火墙以外)与群集通信所需的 kubeconfig

  1. 设置 CLUSTER_NAMERESOURCE_GROUPSUBSCRIPTION_ID 变量。

    CLUSTER_NAME="myNexusK8sCluster"
    RESOURCE_GROUP="myResourceGroup"
    SUBSCRIPTION_ID=<set the correct subscription_id>
    
  2. 查询具有 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)
    
  3. 以下命令会启动 connectedk8s 代理,你可以通过该代理连接到指定 Nexus Kubernetes 群集的 Kubernetes API 服务器。

    az connectedk8s proxy -n $CLUSTER_NAME  -g $MANAGED_RESOURCE_GROUP &
    
  4. 使用 kubectl 将请求发送到群集:

    kubectl get pods -A
    

    现在应会看到来自群集的响应,其中包含所有节点的列表。

注意

如果看到错误消息“无法将访问令牌发布到客户端代理,无法连接到 MSI”,则可能需要执行 az login 以使用 Azure 重新进行身份验证。

基于角色的访问控制

作为管理员,可以通过使用 Microsoft Entra 组对象 ID 创建角色绑定,为群集提供基于角色的访问控制。 对于只需要“查看”权限的用户,可以通过将它们添加到绑定到“视图”角色的 Microsoft Entra 组来完成该任务。

  1. 为需要“查看”访问权限的用户创建 Microsoft Entra 组,引用调用 view的默认 Kubernetes 角色。 此角色只是一个示例,如有必要,可以创建自定义角色并改用它们。 有关 Kubernetes 中面向用户的角色的详细信息,请参阅 Kubernetes 基于滚动的访问角色的官方文档。

  2. 记下创建时生成的 Microsoft Entra 组对象 ID。

  3. 使用 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 组的成员。

  4. 验证是否已成功创建角色绑定。

    kubectl get clusterrolebinding nexus-read-only-users
    
  5. 现在,Microsoft Entra 组中的用户具有对群集的“查看”访问权限。 他们可以使用它们访问群集 az connectedk8s proxy 来查看资源,但无法进行任何更改

后续步骤

可以通过创建自定义具有特定权限的角色来进一步微调访问控制。 创建这些角色涉及 Kubernetes 本机 RoleBinding 或 ClusterRoleBinding 资源。 可以根据要求检查官方 Kubernetes 文档,获取有关创建更多自定义角色和角色绑定的详细指导。