
Review Access - kubectlプラグインでk8sサーバーリソースのアクセス行列を表示する
アクセス権限の確認 - サーバーリソースのアクセスマトリックスを表示するkubectlプラグイン
提供されたKubernetesクラスターで自分にどのようなアクセス権限があるのか疑問に思ったことはありませんか?
単一のリソースについては kubectl auth can-i list deployments を使用できますが、完全な概要を探しているかもしれません?
そのためのツールが rakkess です。
kubectl auth can-i --list と同様に、現在のユーザーとすべてのサーバーリソースに対するアクセス権限を一覧表示します。
また、特定のサーバーリソースとやり取りできるユーザーを調べるのにも便利です。
サブコマンド rakkess resource を確認してください(下記)。

... クラスタースコープで
rakkess
... 特定のネームスペースで
rakkess --namespace default
... 動詞を指定して
rakkess --verbs get,delete,watch,patch
... 別のユーザーとして
rakkess --as other-user
... 別のサービスアカウントとして
rakkess --sa kube-system:namespace-controller
... 一般的な kubectl パラメーターと組み合わせて
KUBECONFIG=otherconfig rakkess --context other-context

...全ネームスペースでグローバルに(ClusterRoleBindingsのみ考慮)
rakkess resource configmaps
...特定のネームスペースで(RoleBindingsとClusterRoleBindingsを考慮)
rakkess resource configmaps -n default
...短縮表記で
rakkess r cm # rakkess resource configmaps と同じ
.. カスタム動詞で
rakkess r cm --verbs get,delete,watch,patch
一部のロールは特定の名前を持つリソースにのみ適用されます。
このような設定を確認するには、追加の引数としてリソース名を指定します。
例えば、ingress-nginx ネームスペース内の ingress-controller-leader-nginx という名前の ConfigMap へのアクセス権限を表示します(nginx-ingress-serviceaccount の前の例との微妙な違いに注意):

rakkess resource は Roles、ClusterRoles、およびそれらのバインディングを照会する必要があるため、通常は管理者レベルのクラスターアクセスが必要です。
Usageも参照してください。
rakkess をインストールする方法はいくつかあります。推奨されるインストール方法は krew を使用する方法です。
Krew は kubectl プラグインマネージャーです。まだ krew をインストールしていない場合は、以下から入手してください。
https://github.com/kubernetes-sigs/krew
その後、インストールは次のように簡単です。
kubectl krew install access-matrix
プラグインは kubectl access-matrix として利用可能になります。詳細は doc/USAGE を参照してください。
インストールにバイナリを使用する場合は、doc/USAGE も確認してください。
curl -LO https://github.com/corneliusweig/rakkess/releases/download/v0.5.0/rakkess-amd64-linux.tar.gz \
&& tar xf rakkess-amd64-linux.tar.gz rakkess-amd64-linux \
&& chmod +x rakkess-amd64-linux \
&& mv -i rakkess-amd64-linux $GOPATH/bin/rakkess
curl -LO https://github.com/corneliusweig/rakkess/releases/download/v0.5.0/rakkess-amd64-darwin.tar.gz \
&& tar xf rakkess-amd64-darwin.tar.gz rakkess-amd64-darwin \
&& chmod +x rakkess-amd64-darwin \
&& mv -i rakkess-amd64-darwin $GOPATH/bin/rakkess
https://github.com/corneliusweig/rakkess/releases/download/v0.5.0/rakkess-windows-amd64.zip
要件:
コンパイル:
export PLATFORMS=$(go env GOOS)
make all # バイナリは out/ に配置されます
要件:
コンパイル:
mkdir rakkess && chdir rakkess
curl -Lo Dockerfile https://raw.githubusercontent.com/corneliusweig/rakkess/master/Dockerfile
docker build . -t rakkess-builder
docker run --rm -v $PWD:/go/bin/ --env PLATFORMS=$(go env GOOS) rakkess
docker rmi rakkess-builder
バイナリは現在のディレクトリに配置されます。
[1]: このモードは kubectl-who-can に触発されました。
| rakkessについて他の人は何と言っているか? |
|---|
“Well, that looks handy! rakkess, a kubectl plugin to show an access matrix for all available resources.” – @mhausenblas |
“that's indeed pretty helpful. rakkess --as system:serviceaccount:my-ns:my-sa -n my-ns prints the access matrix of a service account in a namespace” – @fakod |
| “THE BOMB. Love it.” – @ralph_squillace |
| “This made my day. Well, not actually today but I definitively will use it a lot.” – @Soukron |