プロファイル適用性: レベル1
コンテナを
hostNetwork
フラグがtrueに設定された状態で実行することを一般的に許可しないでください。ホストのネットワーク名前空間で実行されているコンテナは、ローカルループバックデバイスにアクセスでき、他のポッドとの間のネットワークトラフィックにアクセスできる可能性があります。
コンテナがホストネットワークネームスペースを共有することを許可しない少なくとも1つのアドミッションコントロールポリシーを定義する必要があります。
コンテナがホストのネットワークネームスペースへのアクセスを必要とする場合、これを別のポリシーで定義し、限られたサービスアカウントとユーザのみにそのポリシーを使用する許可が与えられていることを慎重に確認する必要があります。
![]() |
注意デフォルトでは、
hostNetwork コンテナの作成に制限はありません。 |
影響
spec.hostNetwork: true
で定義されたポッドは、特定のポリシーの下で実行されない限り許可されません。監査
クラスター内の各ネームスペースで使用されているポリシーを一覧表示し、各ポリシーが
hostNetwork
コンテナの許可を禁止していることを確認してください。各ポッドを手動でチェックするのは特に大規模な環境では時間がかかるため、
hostNetwork
がtrue
に設定されているポッドをフィルタリングするためのより自動化されたアプローチを使用できます。以下は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
コンテナのアドミッションを制限します。