az aks get-credentials コマンドを実行すると、任意の AKS クラスターのアクセス資格情報を取得し、これらの資格情報を kubeconfig ファイルにマージすることができます。 これらの資格情報へのアクセスを制御するには、Azure RBAC を使用できます。 Azure ロールを使えば、kubeconfig ファイルを取得できる人物と、その人物がクラスター内で保有するアクセス許可を定義できます。
Microsoft Entra のユーザーまたはグループに適用できる Azure ロールは以下の 2 種類です。
Azure Kubernetes Service クラスター管理者ロール
Microsoft.ContainerService/managedClusters/listClusterAdminCredential/action API 呼び出しにアクセスできます。 この API 呼び出しは、クラスター管理者の資格情報を一覧表示するものです。
clusterAdmin ロール用の kubeconfig をダウンロードできます。
Azure Kubernetes Service クラスター ユーザー ロール
Microsoft.ContainerService/managedClusters/listClusterUserCredential/action API 呼び出しにアクセスできます。 この API 呼び出しは、クラスター ユーザーの資格情報を一覧表示するものです。
clusterUser ロール用の kubeconfig をダウンロードできます。
注意
Microsoft Entra ID を使用するクラスターの場合、clusterUser ロールを割り当てたユーザーには空の kubeconfig ファイルが設定されており、ログインが要求されます。 ログインすると、Microsoft Entra のユーザーまたはグループ設定に基づくアクセスが可能になります。 clusterAdmin ロールのユーザーは管理者アクセス権を持ちます。
Microsoft Entra ID を使用しないクラスターの場合、clusterUser ロールの効果は clusterAdmin ロールと同じです。
ロールのアクセス許可をユーザーまたはグループに割り当てる
使用可能なロールのいずれかを割り当てるには、以下の手順に従って、AKS クラスターのリソース ID と、Microsoft Entra ユーザー アカウントまたはグループの ID を取得する必要があります。
az aks show コマンドを使用して、myResourceGroup リソース グループに存在する myAKSCluster という名前のクラスターのリソース ID を取得します。 必要に応じて、独自のクラスター名とリソース グループ名を指定してください。
次の例では、"Azure Kubernetes Service クラスター管理者ロール" を個々のユーザー アカウントに割り当てます。
# Get the resource ID of your AKS cluster
AKS_CLUSTER=$(az aks show --resource-group myResourceGroup --name myAKSCluster --query id -o tsv)
# Get the account credentials for the logged in user
ACCOUNT_UPN=$(az account show --query user.name -o tsv)
ACCOUNT_ID=$(az ad user show --id $ACCOUNT_UPN --query objectId -o tsv)
# Assign the 'Cluster Admin' role to the user
az role assignment create \
--assignee $ACCOUNT_ID \
--scope $AKS_CLUSTER \
--role "Azure Kubernetes Service Cluster Admin Role"
Microsoft Entra グループにアクセス許可を割り当てる場合は、"ユーザー"ではなく "グループ"のオブジェクト ID を使用して、上の例のように --assignee パラメーターを更新します。
グループのオブジェクト ID を取得するには、az ad group show コマンドを使用します。 次のコマンドは、appdev という名前の Microsoft Entra グループのオブジェクト ID を取得します。
az ad group show --group appdev --query objectId -o tsv
重要
Microsoft Entra ゲスト ユーザーを使用する場合など、状況によっては、アカウントの user.name と userPrincipalName が同じでないことがあります。
$ az account show --query user.name -o tsv
user@contoso.com
$ az ad user list --query "[?contains(otherMails,'user@contoso.com')].{UPN:userPrincipalName}" -o tsv
user_contoso.com#EXT#@contoso.onmicrosoft.com
ロールの割り当てを削除するには、az role assignment delete コマンドを使用します。 上の手順で取得したアカウント ID とクラスターのリソース ID を指定します。 ユーザーではなくグループにロールを割り当てた場合は、--assignee パラメーターに対して、アカウント オブジェクト ID ではなく、適切なグループ オブジェクト ID を指定します。
az role assignment delete --assignee $ACCOUNT_ID --scope $AKS_CLUSTER