Kubernetesでの権限チェック:「kubectl auth can-i コマンド」
Kubernetesを運用していると、「自分や特定のユーザーがこの操作をしてもいいのか?」と気になることがありませんか?特にRBAC(Role-Based Access Control)が絡む場合、きちんと設定されているか確認したいこともあるでしょう。
そんなときに役立つのが、k auth can-i コマンドです。このコマンドを使うと、「この操作やリソースに対しての権限があるかどうか」を簡単に調べられます。
今回は、具体例のひとつである list secrets を軸に、他の操作やリソースへの応用も紹介します。
基本形をおさらい
たとえば、以下のコマンドで「sample-user」というユーザーが Secret リソースを一覧表示する権限があるかを確認できます:
k auth can-i list secrets --as sample-user
このコマンドを分解すると以下の通りです:
k: kubectl の短縮形(エイリアス)。操作ツール。
auth can-i: 特定の操作やリソースにアクセスする権限があるかを確認する部分。
list secrets: 操作(list)と対象リソース(secrets)。
--as sample-user: 対象の操作を特定のユーザー(ここでは sample-user)として実行するように指定。
他の操作やリソースにも応用してみよう
list secrets はあくまで一例です。同じ構文で、操作やリソースを変えることでさまざまな確認ができます。
操作(verbs)の例
以下は Kubernetes で頻出する操作の一部です:
get
リソースの詳細を取得する操作。k auth can-i get pods --as sample-user
→ Pods の詳細情報を取得できるか確認。
create
リソースを作成する操作。k auth can-i create deployment --as sample-user
→ 新しい Deployment を作成する権限があるか確認。
delete
リソースを削除する操作。k auth can-i delete services --as sample-user
→ Service を削除できるか確認。
update
既存のリソースを更新する操作。k auth can-i update configmaps --as sample-user
→ ConfigMap の更新が可能か確認。
watch
リソースの変更を監視する操作。k auth can-i watch nodes --as sample-user
→ Nodes の変更を監視できるか確認。
リソースの例
Kubernetes には多くのリソースが存在します。以下はよく使われるものです:
pods
アプリケーションを実行するコンテナの単位。k auth can-i list pods --as sample-user
services
アプリケーションのネットワークアクセスを管理するリソース。k auth can-i delete services --as sample-user
deployments
アプリケーションのデプロイ設定を管理。k auth can-i update deployments --as sample-user
configmaps
設定データを管理するリソース。k auth can-i get configmaps --as sample-user
secrets
機密情報を安全に管理するリソース。k auth can-i create secrets --as sample-user
特定のネームスペースでの確認
多くの環境では、ネームスペース単位でリソースの管理をしています。その場合、ネームスペースを指定して確認するのが便利です。
例:
sample-user が my-namespace 内で Secret をリストできるか確認:
k auth can-i list secrets -n my-namespace --as sample-user
ネームスペースを省略した場合はデフォルトでカレントネームスペースが適用されます。
結果を確認しよう
このコマンドを実行すると、次のようなシンプルな結果が返ってきます:
権限がある場合:
yes
権限がない場合:
no
詳細な理由も知りたい?
--verbose オプションを付けて実行すると、権限がない理由や関連するポリシーも表示されます。
k auth can-i list secrets --as sample-user --verbose
参考リンク
まとめ
k auth can-i コマンドは、「特定の操作が許可されているか?」を素早く確認できる便利なツールです。操作やリソースを柔軟に変更することで、さまざまなシナリオに対応可能です。
「この操作できるかな?」と迷ったら、まずはこのコマンドを試してみてください!
Kubernetesの権限確認は、ただの確認作業にとどまりません。適切なアクセス設定を保つことで、システムの安全性や効率を向上させる第一歩にもなります。ぜひ、日々の作業に取り入れてみてくださいね!