プロファイル適用性: レベル1
通常、
hostPID
フラグがtrue
に設定されたコンテナの実行を許可しません。ホストのプロセスID (PID) ネームスペースで実行されているコンテナは、コンテナ外で実行されているプロセスを検査できます。コンテナがptrace機能にもアクセスできる場合、これを使用してコンテナ外で権限を昇格させることができます。コンテナがホストPIDネームスペースを共有することを許可しない少なくとも1つのアドミッションコントロールポリシーを定義する必要があります。
hostPID
を必要とするコンテナを実行する必要がある場合は、これを別のポリシーで定義し、そのポリシーを使用する権限が限られたサービスアカウントとユーザにのみ与えられていることを慎重に確認する必要があります。![]() |
注意デフォルトでは、
hostPID コンテナの作成に制限はありません。 |
影響
spec.hostPID: true
が定義されたポッドは、特定のポリシーの下で実行されない限り許可されません。監査
クラスター内の各ネームスペースで使用されているポリシーを一覧表示し、各ポリシーが
hostPID
コンテナの許可を禁止していることを確認してください。hostPID
フラグを検索します。YAML出力で、specセクションの下にあるhostPID
設定を探し、それがtrue
に設定されているか確認します。kubectl get pods --all-namespaces -o json | jq -r '.items[] | select(.spec.hostPID == true) | "\(.metadata.namespace)/\(.metadata.name)"'
OR
kubectl get pods --all-namespaces -o json | jq -r '.items[] | select(.spec.hostPID == true) | select(.metadata.namespace != "kube-system" and .metadata.namespace != "gatekeeper-system" and .metadata.namespace != "azure-arc" and .metadata.namespace != "azure-extensions-usage-system") | "\(.metadata.name) \(.metadata.namespace)"'
PodSecurityPolicyを作成する際、
["kube-system", "gatekeeper-system", "azure-arc", "azure-extensions-usage-system"]
ネームスペースはデフォルトで除外されます。このコマンドは、すべてのネームスペースにあるすべてのポッドをJSON形式で取得し、次にjqを使用して
hostPID
がtrue
に設定されているものをフィルタリングし、最終的に一致する各ポッドのネームスペースと名前を表示するように出力をフォーマットします。修復
ユーザワークロードがあるクラスター内の各ネームスペースにポリシーを追加して、
hostPID
コンテナの許可を制限します。Podセキュリティポリシーと割り当ては、Azureポータルでポリシーを検索することで見つけることができます。詳細な手順ガイドはこちらで見つけることができます: https://learn.microsoft.com/en-us/azure/governance/policy/concepts/policy-for-kubernetes