ビュー:
プロファイル適用性: レベル1
コンテナをhostPIDフラグがtrueに設定された状態で実行することを一般的に許可しないでください。
ホストのPID名前空間で実行されているコンテナは、コンテナ外で実行されているプロセスを検査することができます。コンテナがptrace機能にもアクセスできる場合、これを使用してコンテナ外で特権を昇格させることができます。
コンテナがホストPIDネームスペースを共有することを許可しない少なくとも1つのアドミッションコントロールポリシーを定義する必要があります。
コンテナの実行にhostPIDが必要な場合は、これを別のポリシーで定義し、そのポリシーを使用する権限が限られたサービスアカウントとユーザにのみ付与されていることを慎重に確認する必要があります。
注意
注意
デフォルトでは、hostPIDコンテナの作成に制限はありません。

影響

spec.hostPID: trueで定義されたPodは、特定のポリシーの下で実行されない限り許可されません。

監査

クラスター内の各ネームスペースで使用されているポリシーを一覧表示し、各ポリシーがhostPIDコンテナの許可を禁止していることを確認してください。
YAML出力で、specセクションのhostPID設定がtrueに設定されているかどうかを確認してください。
オプション1
kubectl get pods --all-namespaces -o json | jq -r '.items[] |
select(.spec.hostPID == true) |
"\(.metadata.namespace)/\(.metadata.name)"'
オプション2
kubectl get pods --all-namespaces -o json | jq '.items[] |
select(.metadata.namespace != "kube-system" and .spec.hostPID == true)
| {pod: .metadata.name, namespace: .metadata.namespace, container:
.spec.containers[].name}'
PodSecurityPolicyを作成する際、["kube-system"]ネームスペースはデフォルトで除外されます。
このコマンドは、すべてのネームスペースにあるすべてのポッドをJSON形式で取得し、jqを使用してhostPIDフラグがtrueに設定されているものをフィルタリングし、最後に一致する各ポッドのネームスペースと名前を表示するように出力をフォーマットします。

修復

ユーザのワークロードがあるクラスター内の各ネームスペースにポリシーを追加して、hostPIDコンテナのアドミッションを制限します。