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