プロファイル適用性: レベル1
通常、
hostPIDフラグがtrueに設定されたコンテナの実行を許可しません。ホストのPID名前空間で実行されているコンテナは、コンテナ外で実行されているプロセスを検査することができます。コンテナがptrace機能にアクセスできる場合、これを使用してコンテナ外で権限を昇格させることができます。
コンテナがホストPID名前空間を共有することを許可しない入場制御ポリシーが少なくとも1つ定義されている必要があります。
ホストPIDを必要とするコンテナを実行する必要がある場合は、これを別のポリシーで定義し、そのポリシーを使用する権限が限られたサービスアカウントとユーザにのみ与えられていることを慎重に確認する必要があります。
注意デフォルトでは、
hostPIDコンテナの作成に制限はありません。 |
影響
spec.hostPID: trueで定義されたポッドは、特定のポリシーの下で実行されない限り許可されません。監査
クラスター内の各ネームスペースで使用されているポリシーを一覧表示し、各ポリシーが
hostPIDコンテナの許可を禁止していることを確認してください。YAML出力で、specセクションの
hostPID設定がtrueに設定されているか確認してください。kubectl get pods --all-namespaces -o json | jq -r '.items[] | select(.spec.hostPID == true) | "\(.metadata.namespace)/\(.metadata.name)"'
または:
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}'
Pod Security Policyを作成する際、
["kube-system"]ネームスペースはデフォルトで除外されます。このコマンドは、すべてのネームスペースにあるすべてのポッドをJSON形式で取得し、次にjqを使用して
hostPIDフラグがtrueに設定されているものをフィルタリングし、最後に一致するポッドのネームスペースと名前を表示するように出力をフォーマットします。修復
ユーザのワークロードがあるクラスター内の各ネームスペースにポリシーを追加して、
hostPIDコンテナのアドミッションを制限します。
