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

影響

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

監査

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

修復

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