プロファイル適用性: レベル 1 - マスターノード
各コントローラーに個別のサービスアカウント認証情報を使用してください。
コントローラーマネージャーは、
kube-system
ネームスペース内の各コントローラーに対してサービスアカウントを作成し、そのための認証情報を生成し、各コントローラーループが使用する専用のAPIクライアントをそのサービスアカウント認証情報で構築します。--use-service-account-credentials
を true
に設定すると、コントローラーマネージャー内の各コントロールループが別々のサービスアカウント認証情報を使用して実行されます。RBACと組み合わせて使用する場合、これによりコントロールループは意図されたタスクを実行するために必要な最小限の権限で実行されることが保証されます。
注意デフォルトでは、
--use-service-account-credentials は false に設定されています。 |
影響
クラスターに設定されているいかなる認可者であっても、サービスアカウントが意図したタスクを実行するための十分な権限を付与する必要があります。RBAC認可者を使用する場合、これらのロールは自動的に作成され、
kube-system
ネームスペース内の適切なサービスアカウントにバインドされ、起動時に自動的に調整されるデフォルトのロールとロールバインディングが適用されます。他の認証方法(ABAC、Webhookなど)を使用する場合、クラスターデプロイヤーはサービスアカウントに適切な権限を付与する責任があります(必要な権限は、RBACロールの
controller-roles.yaml
およびcontroller-role-bindings.yaml
ファイルを確認することで確認できます)。監査
コントロールプレーンノードで次のコマンドを実行します:
ps -ef | grep kube-controller-manager
--use-service-account-credentials
引数が true
に設定されていることを確認してください。修復
コントロールプレーンノード上のController Managerポッド仕様ファイル
/etc/kubernetes/manifests/kube-controller-manager.yaml
を編集して、以下のパラメータを設定します。--use-service-account-credentials=true