🎯 レッスンの目的
Kubernetes での認証と認可、認可に RBAC を使用する方法、PodSecurityPolicy に代わるポッド セキュリティ標準 (K8s 1.25 は削除)、および重要なアドミッション コントローラーを理解します。
1. Kubernetes での認証
Kubernetes にはユーザー管理が組み込まれていません。代わりに、kube-apiserver は多くの認証方法をサポートしています:
- X.509 クライアント証明書: kubeconfig は、最も一般的なクライアント証明書を使用します
- ベアラー トークン: ServiceAccount トークン、OIDC トークン
- OIDC (OpenID Connect): Dex、Keycloak、Auth0、Google、Azure AD と統合
- Webhook: 認証を外部サービスに委任
2.ユーザーとサービスアカウント
- ユーザー: 人間のアイデンティティ — Kubernetes にリソースはなく、外部で管理 (証明書、OIDC)
- ServiceAccounts: マシン ID — Kubernetes リソース、ポッドに使用
プロジェクト化されたサービス アカウント トークン (K8s 1.22 以降): 短期トークン、自動ローテーション、限定された対象ユーザー — 古い長期有効トークンよりもはるかに安全です。
3. RBAC — ロールベースのアクセス制御
3.1 ロールとクラスターロール
___コードブロック_2___3.2 RoleBinding と ClusterRoleBinding__HTMLTAG_112___ ___コードブロック_3___ ___コードブロック_4___
3.3 最小特権の原則
___コードブロック_5___4.ポッド セキュリティ標準 (PSS) — PodSecurityPolicy
を置き換えますPodSecurityPolicy (PSP) は K8s 1.25 で完全に削除されました。 ポッド セキュリティ標準に置き換えられました:
4.1 3 レベルのセキュリティ
- 特権: 制限なし。システム コンポーネント、クラスタ全体のコントローラにのみ使用
- _ベースライン: 一般的なエスカレーションを防止します。ほとんどの用途に適しています。ブロック: 特権コンテナ、hostPath、hostNetwork、hostPID
- 制限付き: セキュリティが強化されています。要件: 非 root ユーザー、非 root グループ、すべての機能を削除、seccompProfile RuntimeDefault/Localhost、no hostPath
4.2 ポッド セキュリティ アドミッション (PSA)
___コードブロック_6___ ___コードブロック_7___5.アドミッションコントローラー_
_アドミッション コントローラーは、認証/認可後の API サーバーへのリクエストをインターセプトします。 2 種類あります:
- 変更中: オブジェクトの変更 (例: サイドカーの挿入、デフォルト値の設定)
- 検証中: 承認/拒否のみ (例: PSA、ResourceQuota)
6.入場 Webhook
___コードブロック_9___概要
- _Kubernetes にはユーザー管理がありません。X.509 証明書、OIDC を使用します。
- ServiceAccounts: マシン ID、投影されたトークン (有効期間が短い)
- RBAC: ロール/ClusterRole + RoleBinding/ClusterRoleBinding
- 最小権限: 必要最小限の権限のみを付与
- PSP は K8s 1.25 を削除 → ポッド セキュリティ標準 (PSA) を使用
- PSA レベル: 特権、ベースライン (推奨デフォルト)、制限付き (運用)