説明
RBAC はロールとバインディングでユーザーやサービスアカウントの権限を管理します。この認可方式を使うクラスターでは、RBAC authorizer を有効にする必要があります。対応するバージョンでは AuthorizationConfiguration でも構成できます。
RBAC を有効にするだけで最小権限になるわけではありません。ロールとバインディングを必要な操作とリソースに限定し、他の認可方式が不要な要求を許可していないか確認してください。
想定される影響
- ユーザーやサービスアカウントの権限を細かく管理しにくくなる場合があります。
- 過剰なアクセスにより機密リソースが公開されるおそれがあります。
- 権限の監査と変更管理が難しくなる場合があります。
対処方法
--authorization-modeまたは AuthorizationConfiguration で RBAC を有効にしてください。- 一般には
RBAC,Nodeを組み合わせ、ロールとバインディングを最小権限の観点で確認してください。 - static Pod と起動引数に、許可範囲が広すぎる認可モードがないか確認してください。
例
API サーバー引数の抜粋です。イメージは実際のクラスターのバージョンに合わせてください。ノード認証、ロール、バインディングなどの設定は省略しています。
変更前
yaml
apiVersion: v1
kind: Pod
metadata:
name: command-demo
spec:
containers:
- name: command-demo-container
image: registry.k8s.io/kube-apiserver:v1.34.0
command: ["kube-apiserver"]
args: ["--authorization-mode=AlwaysAllow"]
変更後
yaml
apiVersion: v1
kind: Pod
metadata:
name: command-demo
spec:
containers:
- name: command-demo-container
image: registry.k8s.io/kube-apiserver:v1.34.0
command: ["kube-apiserver"]
args: ["--authorization-mode=RBAC,Node"]
補足:
- 変更前: AlwaysAllow はロールの権限に関係なく要求を許可します。
- 変更後: RBAC を有効にします。実際の許可範囲はロール、バインディング、他の authorizer も合わせて確認してください。