見出し画像

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

このコマンドを分解すると以下の通りです:

  1. k: kubectl の短縮形(エイリアス)。操作ツール。

  2. auth can-i: 特定の操作やリソースにアクセスする権限があるかを確認する部分。

  3. list secrets: 操作(list)と対象リソース(secrets)。

  4. --as sample-user: 対象の操作を特定のユーザー(ここでは sample-user)として実行するように指定。


他の操作やリソースにも応用してみよう

list secrets はあくまで一例です。同じ構文で、操作やリソースを変えることでさまざまな確認ができます。

操作(verbs)の例

以下は Kubernetes で頻出する操作の一部です:

  1. get
    リソースの詳細を取得する操作。

    1. k auth can-i get pods --as sample-user

    2. → Pods の詳細情報を取得できるか確認。

  2. create
    リソースを作成する操作。

    1. k auth can-i create deployment --as sample-user

    2. → 新しい Deployment を作成する権限があるか確認。

  3. delete
    リソースを削除する操作。

    1. k auth can-i delete services --as sample-user

    2. → Service を削除できるか確認。

  4. update
    既存のリソースを更新する操作。

    1. k auth can-i update configmaps --as sample-user

    2. → ConfigMap の更新が可能か確認。

  5. watch
    リソースの変更を監視する操作。

    1. k auth can-i watch nodes --as sample-user

    2. → Nodes の変更を監視できるか確認。


リソースの例

Kubernetes には多くのリソースが存在します。以下はよく使われるものです:

  1. pods
    アプリケーションを実行するコンテナの単位。

    1. k auth can-i list pods --as sample-user

  2. services
    アプリケーションのネットワークアクセスを管理するリソース。

    1. k auth can-i delete services --as sample-user

  3. deployments
    アプリケーションのデプロイ設定を管理。

    1. k auth can-i update deployments --as sample-user

  4. configmaps
    設定データを管理するリソース。

    1. k auth can-i get configmaps --as sample-user

  5. secrets
    機密情報を安全に管理するリソース。

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

ネームスペースを省略した場合はデフォルトでカレントネームスペースが適用されます。


結果を確認しよう

このコマンドを実行すると、次のようなシンプルな結果が返ってきます:

  • 権限がある場合:

    1. yes

  • 権限がない場合:

    1. no

詳細な理由も知りたい?

--verbose オプションを付けて実行すると、権限がない理由や関連するポリシーも表示されます。

k auth can-i list secrets --as sample-user --verbose


参考リンク

まとめ

k auth can-i コマンドは、「特定の操作が許可されているか?」を素早く確認できる便利なツールです。操作やリソースを柔軟に変更することで、さまざまなシナリオに対応可能です。
「この操作できるかな?」と迷ったら、まずはこのコマンドを試してみてください!

Kubernetesの権限確認は、ただの確認作業にとどまりません。適切なアクセス設定を保つことで、システムの安全性や効率を向上させる第一歩にもなります。ぜひ、日々の作業に取り入れてみてくださいね!

いいなと思ったら応援しよう!