AKS クラスター リソースにアクセスしようとしたときの "禁止" エラーのトラブルシューティング
この記事では、Azure Kubernetes Service (AKS) クラスターで Kubernetes リソースを表示しようとしたときに、ロールベースのアクセス制御 (RBAC) に関連する "サーバーからのエラー (禁止)" エラーのトラブルシューティングと解決方法について説明します。
前提条件
Kubernetes クラスターのコマンド ライン ツール (kubectl)
Note
Azure Cloud Shell を使用してシェル コマンドを実行する場合、kubectl は既にインストールされています。 ローカル シェルを使用し、既に Azure CLI がインストールされている場合は、 az aks install-cli コマンドを実行して kubectl をインストールすることもできます。
現象
kubectl
コマンドを実行して、デプロイ、ポッド、ワーカー ノードなど、Kubernetes リソースの種類の詳細を表示すると、次のエラー メッセージが表示されます。
$ kubectl get nodes
Error from server (Forbidden): nodes is forbidden: User "aaaa11111-11aa-aa11-a1a1-111111aaaaa" cannot list resource "nodes" in API group "" at the cluster scope
原因
このエラーは、必要なロールベースのアクセス制御 (RBAC) アクセス許可がない Microsoft Entra ID アカウントを使用して Kubernetes リソースにアクセスしようとしていることを示します。
ソリューション
クラスター用に構成されている RBAC の種類 (Kubernetes RBAC または Azure RBAC) によっては、異なるソリューションが適用される場合があります。 次のコマンドを実行して、クラスターが使用している RBAC の種類を確認します。
az aks show -g <CLUSTER_RESOURCE_GROUP> -n <CLUSTER_NAME> --query aadProfile.enableAzureRbac
- 結果が false の場合、クラスターは Kubernetes RBAC を使用します。 Kubernetes RBAC ベースの AKS クラスターでのアクセス許可の問題 解決するを参照してください。
- 結果が true の場合、クラスター は Azure RBAC を使用します。 Azure RBAC ベースの AKS クラスターでのアクセス許可の問題の解決を参照してください。
Kubernetes RBAC ベースの AKS クラスターでのアクセス許可の問題の解決
クラスターで Kubernetes RBAC を使用する場合、RoleBinding または ClusterRoleBinding Kubernetes リソースの作成によってユーザー アカウントのアクセス許可が構成されます。 詳細については、 Kubernetes RBAC のドキュメントを参照してください。
さらに、Microsoft Entra ID 統合クラスターでは、ClusterRoleBinding リソースが自動的に作成され、事前に指定された Microsoft Entra ID グループのメンバーにクラスターへのアクセス権が管理者に付与されます。
特定のユーザーの "サーバーからのエラー (禁止)" エラーを解決するには、次のいずれかの方法を使用します。
方法 1: カスタム RoleBinding または ClusterRoleBinding リソースを作成する
カスタム RoleBinding または ClusterRoleBinding リソースを作成して、ユーザー (またはユーザーがメンバーであるグループ) に必要なアクセス許可を付与できます。 詳細な手順については、「 Azure Kubernetes Service での Kubernetes ロールベースのアクセス制御と Microsoft Entra ID の使用を参照してください。
方法 2: 事前に指定された Microsoft Entra ID 管理者グループにユーザーを追加する
事前に指定された Microsoft Entra ID 管理者グループの ID を取得します。 そのためには、次のコマンドを実行します。
az aks show -g <CLUSTER_RESOURCE_GROUP> -n <CLUSTER_NAME> --query aadProfile.adminGroupObjectIDs
前の手順で取得したグループ ID を使用して、事前に指定された Microsoft Entra ID 管理者グループにユーザーを追加します。 詳細な手順については、「 グループのメンバーまたは所有者を追加するを参照してください。
Azure RBAC ベースの AKS クラスターでのアクセス許可の問題の解決
クラスターで Azure RBAC を使用する場合、ユーザーのアクセス許可は、 Azure ロールの割り当ての作成によって構成されます。
AKS には、Microsoft Entra ID ユーザーまたはグループのロール割り当てを作成して、特定の名前空間またはクラスター スコープの Kubernetes オブジェクトへのアクセス権を付与するために使用できる一連の組み込みロールが用意されています。 Azure RBAC ベースのクラスターのユーザーまたはグループに組み込みロールを割り当てる詳細な手順については、「 AKS 組み込みロールを参照してください。
または、独自のカスタム Azure ロール定義を作成して、特定の種類の Kubernetes オブジェクトと操作に対するアクセス許可をより細かく管理することもできます。 Azure RBAC ベースのクラスター内のユーザーとグループにカスタム ロールを作成して割り当てる詳細なガイダンスについては、「 カスタム ロール定義の作成を参照してください。
お問い合わせはこちらから
質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。