Amazon Elastic Kubernetes Service (Amazon EKS) ポッドのポッドセキュリティ基準とポッドセキュリティアドミッションについて、質問があります。
Q: Amazon EKS クラスターで Pod Security Standards と Pod Security Admission を有効または無効にする方法を教えてください。
Kubernetes バージョン 1.23 以降ではデフォルトで、Privileged Pod Security Standards プロファイルのすべての Pod Security Admission モードは、クラスターレベルで有効化されます。Pod Security Admission は、Privileged Pod Security Standards プロファイルが適用されるデプロイやポッドを、すべての名前空間において許可します。
Q: 特定の Pod Security Admission モードと Pod Security Standards プロファイルを、Kubernetes 名前空間レベルで適用する方法を教えてください。
Kubernetes 名前空間レベルで特定の Pod Security Admission モードと Pod Security Standards プロファイルを適用するには、名前空間ラベルを構成します。
たとえば、次のコマンドを実行し、Baseline Pod Security Standards の enforce モードを単一の名前空間に適用します。
kubectl label --overwrite ns test-namespace pod-security.kubernetes.io/enforce=baseline
または、次のコマンドを実行し、Baseline Pod Security Standards の enforce モードをすべての利用可能な名前空間に適用します。
kubectl label --overwrite ns --all pod-security.kubernetes.io/enforce=baseline
注: test-namespace を名前空間名に、enforce を使用する Pod Security Admission モードに、baseline を使用する Pod Security Standards ポリシープロファイルに置き換えてください。詳細については、Kubernetes のウェブサイトで「名前空間用の Pod Security Admission ラベル」と「Pod Security Standards 」を参照してください。
Q: 名前空間を変更し、使用する Pod Security Standards プロファイルの制限を厳しくした場合、名前空間内の既存のポッド機能は影響を受けますか。
いいえ。既存のポッドを含む名前空間が audit または warn モードを使用するように変更した場合、ターミナルにメッセージが表示されます。このメッセージは、ポッドの YAML 出力の status.message セクションにも表示されます。enforce モードを使用するように名前空間を変更した場合、Kubernetes から名前空間内の既存のポッドは削除されません。ただし、次の例に類似したメッセージが表示されます。
"Warning: existing pods in namespace "policy-test" violate the new PodSecurity enforce level "restricted:latest"
"Warning: test-688f68dc87-htm8x: allowPrivilegeEscalation != false, unrestricted capabilities, runAsNonRoot != true, seccompProfilenamespace/policy-test configured"
ポッドの YAML 出力の enforce モードメッセージ例:
lastTransitionTime: "2022-11-24T05:10:49Z"
lastUpdateTime: "2022-11-24T05:10:49Z"
message: 'pods "test-67d5fc995b-8r9t2" is forbidden: violates PodSecurity "baseline:latest": privileged (container "assets" must not set securityContext.privileged=true)'
reason: FailedCreate
status: "True"
type: ReplicaFailure
ポッドが名前空間の Pod Security Standards プロファイルポリシーまたは Pod Security Admission モードに準拠していない場合は、デプロイマニフェストを更新します。
Q: Pod Security Admission コントローラーが名前空間レベルで適用した、ポッドのセキュリティポリシーをカスタマイズする方法を教えてください。
適用されたポッドセキュリティポリシーを Pod Security Admission コントローラーから直接カスタマイズすることはできません。代わりに、検証アドミッションポリシーを使用してカスタムルールを実装して適用するか、外部コードで Webhook アドミッション制御を使用します。
Q: 複数の Pod Security Admission モードと Pod Security Standards プロファイルを単一の Kubernetes 名前空間に適用できますか。
いいえ。ただし、ラベルを使用することで、任意の名前空間に複数の Pod Security Standards チェックを構成できます。
たとえば、次のコマンドは、最新バージョンに準拠して Baseline Pod Security Standards に enforce モード、Restricted Pod Security Standards に warn モードと audit モードを適用します。
kubectl label --overwrite ns test \\
pod-security.kubernetes.io/enforce=baseline \\
pod-security.kubernetes.io/enforce-version=latest \\
pod-security.kubernetes.io/warn=restricted \\
pod-security.kubernetes.io/warn-version=latest \\
pod-security.kubernetes.io/audit=restricted \\
pod-security.kubernetes.io/audit-version=latest
Q: Pod Security Admission モードと Pod Security Standards プロファイルを、マネージド Kubernetes クラスターのクラスターレベルで適用することは可能ですか。
いいえ。マネージドクラスターでは、Pod Security Admission モードと Pod Security Standards プロファイルは、名前空間レベルでのみ適用できます。
Q. Amazon EKS クラスターでは、Pod Security Admission ウェブフックを使用できますか。
はい。Amazon EKS クラスターに Pod Security Admission をインストールできます。詳細については、GitHub のウェブサイトで pod-security-admission webhook を参照してください。
Q. Amazon EKS クラスターで Pod Security Admission ウェブフックの利用が推奨される理由を教えてください。
Pod Security Admission ウェブフックを使用すると、すべての Kubernetes 名前空間に同じ Pod Security Admission モードと Pod Security Standards プロファイルを適用できます。名前空間を除外することも可能です。Pod Security Admission ウェブフックを使用しない場合は、それぞれの名前空間レベルで変更を適用する必要があります。