説明
NET_RAW は、raw socket や packet socket などのネットワーク機能を許可する Linux capability です。必要な制限がなく、コンテナーが実際にこの権限を持つと、侵害されたプロセスに悪用される場合があります。ポリシーが除去を要求しないだけで、すべてのコンテナーに NET_RAW が追加されるわけではありません。
PodSecurityPolicy は Kubernetes 1.25 で削除されました。現在のクラスターには、Pod Security Admission やポリシーエンジンで必要な制限を適用してください。
想定される影響
- 不要なパケット生成・操作の機能が、ネットワーク攻撃に使われる場合があります。
- 必要な capability まで除去すると、アプリケーションの正常な機能が停止する場合があります。
対処方法
- 対応するワークロードではすべての capability を除去して必要な権限だけを許可し、少なくとも不要な NET_RAW は除去してください。実際のランタイム権限と動作を確認してください。
- 現在の admission ポリシーで要件を強制してください。過去の PSP の required_drop_capabilities 例を、現在のクラスターのポリシーとしてそのまま使用しないでください。
例
削除された PSP の一部だけを示す過去の抜粋です。他の必須属性とポリシーの使用権限は省略しています。変更後の ALL は、NET_RAW 以外の capability の除去も要求します。
変更前
hcl
resource "kubernetes_pod_security_policy" "policy" {
metadata {
name = "terraform-example"
}
spec {
required_drop_capabilities = [
"KILL",
"SYS_TIME",
]
}
}
変更後
hcl
resource "kubernetes_pod_security_policy" "policy" {
metadata {
name = "terraform-example"
}
spec {
required_drop_capabilities = [
"ALL",
]
}
}
補足:
- 変更前: KILL と SYS_TIME の除去を要求しますが、NET_RAW は明示していません。
- 変更後: すべての capability の除去を要求します。この制限でアプリケーションが動くか確認する必要があります。