【ツール活用|初心者向け】Kubernetesの権限トラブルを秒速解決!「kubectl auth can-i」の使い方

1. なぜ「kubectl auth can-i」が重要なのか

Kubernetesで運用をしていると、CI/CDパイプラインや手元の操作で「Error: Forbidden」というエラーに遭遇したことはありませんか?これは、KubernetesのRBAC(ロールベースのアクセス制御)によって操作が拒否されている証拠です。

何が原因で権限がないのかを調べるために、いちいち設定ファイル(YAML)を見直すのは大変です。そこで便利なのが「kubectl auth can-i」コマンドです。このコマンドを使えば、特定の操作が可能かどうかを即座にシミュレートできるため、デバッグの時間を大幅に短縮できます。

2. 基礎知識:RBACと権限の仕組み

KubernetesにはRBAC(Role-Based Access Control)という仕組みがあり、「誰(Subject)」に「どの操作(Verb)」を「どのリソース(Resource)」に対して許可するかを定義します。

Subject(誰): ユーザーやServiceAccount
Verb(操作): get, list, create, delete, updateなど
Resource(対象): pods, deployments, servicesなど

「kubectl auth can-i」は、この複雑な権限設定を裏で計算し、「Yes」か「No」で答えてくれる、まさにデバッグの救世主といえるツールです。

3. 実装/解決策:権限確認の手順

基本構文は「kubectl auth can-i [操作] [リソース]」です。
さらに、特定のServiceAccountが何ができるかを確認したい場合は、「–as=system:serviceaccount:[名前空間]:[アカウント名]」というオプションを付けます。これにより、CI/CD用のアカウントが適切な権限を持っているかを、権限を切り替えずに確認できます。

4. サンプルプログラム:実際に確認してみよう

以下のコマンドをターミナルで実行してみてください。コピー&ペーストで動作確認が可能です。


kubectl auth can-i delete pods


kubectl auth can-i update deployments –as=system:serviceaccount:default:my-cicd-sa


kubectl auth can-i list pods -n kube-system


kubectl auth can-i delete pods –list

5. 応用・注意点:現場での活用テクニック

–list オプションの活用
権限が足りないとき、単に「No」と出るだけでは解決できません。`–list`を付けると、現在そのユーザーに付与されているすべての権限リストを表示できるため、どの権限が不足しているかを比較検討するのに役立ちます。

セキュリティの落とし穴
「とりあえず動くようにしたい」という理由で、過剰な権限(ClusterRoleでを付与するなど)を割り当ててしまうのは避けましょう。`kubectl auth can-i`を使って、必要最低限の権限(最小権限の原則)が正しく適用されているかをリリース前に確認する習慣をつけるのが、プロのエンジニアへの第一歩です。

まずは、自分の環境で「今の自分が何ができるか」をチェックすることから始めてみてください。

コメント

タイトルとURLをコピーしました