Share via


Azure Operator Nexus Kubernetes クラスタのロールベースのアクセス制御

この記事では、Microsoft Entra ID を使用して Nexus Kubernetes クラスターへのアクセスを管理する方法に関する包括的なガイドを提供します。 具体的には、組織内でのロールや責任に基づいてユーザーにアクセス許可を付与することができる、ロールベースのアクセス制御に焦点を当てています。

開始する前に

  1. まず、クラスター管理者用の Microsoft Entra グループを作成し、メンバーを割り当てます。 Microsoft Entra ID では、各ユーザーのアクセス許可を個別に管理するのではなく、グループ全体にアクセス許可を付与することができます。
  2. Nexus Kubernetes クラスターの作成時に作成したグループ ID を 'adminGroupObjectIds' の値として使用し、グループのメンバーがクラスターを管理するためのアクセス許可を取得できるようにします。 Nexus Kubernetes クラスターを作成してアクセスする方法については、クイックスタート ガイドを参照してください。

クラスターへの管理者アクセス

Nexus は、既定の Kubernetes ロール cluster-admin と、adminGroupObjectIds として指定した Microsoft Entra グループを使用して Kubernetes クラスター ロール バインドを作成します。 クラスター管理者はクラスターにフルアクセスでき、クラスター上ですべての操作を実行できます。 クラスター管理者は、適切な Microsoft Entra グループにユーザーを割り当てることで、他のユーザーにアクセス権を付与することもできます。

Note

Nexus Kubernetes クラスターを作成すると、Nexus によってクラスター リソースの格納専用の管理対象リソース グループが自動的に作成され、このグループ内に Arc 接続クラスター リソースが確立されます。

クラスターにアクセスするには、クラスター接続 kubeconfig を設定する必要があります。 関連する Microsoft Entra エンティティを使用して Azure CLI にログインした後、それを囲むファイアウォールの外側であっても、どこからでもクラスターと通信するために必要な kubeconfig を取得できます。

  1. CLUSTER_NAME 変数、RESOURCE_GROUP 変数、および SUBSCRIPTION_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. 次のコマンドは、指定された Nexus Kubernetes クラスターの Kubernetes API サーバーに接続できる connectedk8s プロキシを起動します。

    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. view という既定の Kubernetes ロールを参照して、'表示' アクセスが必要なユーザー用の Microsoft Entra グループを作成します。 このロールはあくまで一例であり、必要であればカスタム ロールを作成して代わりに使用することもできます。 Kubernetes のユーザー向けロールの詳細については、「Kubernetes のロールベースのアクセス ロール」の公式ドキュメントを参照してください。

  2. 作成時に生成される Microsoft Entra グループ オブジェクト ID に注意してください。

  3. 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
    

    このコマンドは、指定した Microsoft Entra グループのメンバーに view ロールを割り当てる nexus-read-only-users という名前のクラスター ロール バインドを作成します。

  4. ロール バインドが正常に作成されたことを確認します。

    kubectl get clusterrolebinding nexus-read-only-users
    
  5. これで、Microsoft Entra グループのユーザーは、クラスターへの '表示' アクセス権を取得しました。 az connectedk8s proxy を使用してクラスターにアクセスし、リソースを表示することはできますが、変更を加えることはできません

次のステップ

特定のアクセス許可を持つカスタム ロールを作成することで、アクセス制御を微調整できます。 これらのロールの作成には、Kubernetes ネイティブの RoleBinding または ClusterRoleBinding リソースが必要です。 要件に応じてカスタム ロールとロール バインドを作成する詳細なガイダンスについては、公式の Kubernetes ドキュメントを確認してください。