共用方式為


Azure 運算子連接點 Kubernetes 叢集中的角色型存取控制

本文提供如何使用 Microsoft Entra ID 管理 Nexus Kubernetes 叢集存取的完整指南。 具體而言,我們著重於角色型存取控制,這可讓您根據使用者在組織內的角色或責任,將權限授予他們。

開始之前

  1. 若要開始,請為您的叢集管理員建立 Microsoft Entra 群組,並指派其成員。 Microsoft Entra ID 允許將存取權整體授予群組,而不是個別管理每個使用者的權限。
  2. 建立 Nexus Kubernetes 叢集時,請使用您建立的群組識別碼作為 'adminGroupObjectIds' 的值,以確保群組的成員取得管理叢集的權限。 如需如何建立及存取 Nexus Kubernetes 叢集的指示,請參閱快速入門指南。

叢集的管理員存取權

Nexus 會與預設 Kubernetes 角色 cluster-admin 以及您指定為 adminGroupObjectIds 的 Microsoft Entra 群組建立 Kubernetes 叢集角色繫結。 叢集管理員具有叢集的完整存取權,而且可以在叢集上執行所有作業。 叢集管理員將其他使用者指派給適當的 Microsoft Entra 群組,也可以將存取權授予他們。

注意

在建立連接點 Kubernetes 叢集時,連接點會自動建立專用於儲存叢集資源的受控資源群組,並在此群組內建立 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 Proxy,以讓您連線到指定 Nexus Kubernetes 叢集的 Kubernetes API 伺服器。

    az connectedk8s proxy -n $CLUSTER_NAME  -g $MANAGED_RESOURCE_GROUP &
    
  4. 使用 kubectl 將要求傳送至叢集:

    kubectl get pods -A
    

    您現在應該會看到叢集的回應,其中包含所有節點的清單。

注意

如果您看到錯誤訊息「無法將存取權杖張貼至用戶端 proxyFailed 以連線到 MSI」,則可能需要執行 az login 以向 Azure 重新驗證。

角色型存取控制

身為系統管理員,您可以建立與 Microsoft Entra 群組物件識別碼的角色繫結,為叢集提供角色型存取控制。 對於只需要「檢視」權限的使用者,您可將他們新增至繫結至「檢視」角色的 Microsoft Entra 群組來完成工作。

  1. 為需要「檢視」存取權的使用者建立 Microsoft Entra 群組,並參考稱為 view 的預設 Kubernetes 角色。 此角色只是範例,如有必要,您可以建立自訂角色並改用它們。 如需 Kubernetes 中使用者面向角色的詳細資訊,請參閱 Kubernetes 角色型存取角色的官方文件。

  2. 記下建立時產生的 Microsoft Entra 群組物件識別碼。

  3. 使用 kubectl 命令建立與「檢視」角色的 clusterrolebinding,並將它與 Microsoft Entra 群組產生關聯。 以 Microsoft Entra 群組的物件識別碼取代 AZURE_AD_GROUP_OBJECT_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 文件,以取得依照您的需求建立更多自訂角色和角色繫結的詳細指引。