RBAC による認可設定の確認

RBAC authorizer とロール・バインディングを合わせて確認し、最小権限を適用してください。

説明

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 も合わせて確認してください。

参考資料