
OPA Gatekeeperベースのポリシーテンプレート。Kubernetes Serviceの外部IPを許可リストに制限することでCVE-2020-8554を緩和し、マルチテナントクラスターでのトラフィック傍受を防止します。
このリポジトリには、オープンソースの OPA Gatekeeper プロジェクトをベースにした Policy Controller を使用して、Kubernetes サービスがパブリック IP にアクセスできないようにするための設定ファイルが含まれています。
この問題のセキュリティアドバイザリ には次のように記載されています:
マルチテナントクラスターに影響する Kubernetes のセキュリティ問題が発見されました。潜在的な攻撃者がサービスや Pod をすでに作成または編集できる場合、クラスター内の他の Pod(またはノード)からのトラフィックを傍受できる可能性があります。
この問題は中程度の深刻度(CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L)と評価され、CVE-2020-8554 が割り当てられました。
ClusterIP サービスを作成し、spec.externalIPs フィールドを設定できる攻撃者は、その IP へのトラフィックを傍受できます。LoadBalancer サービスのステータス(これは特権操作とみなされ、通常ユーザーに許可されるべきではありません)にパッチを適用できる攻撃者は、status.loadBalancer.ingress.ip を同様の効果で設定できます。
このリポジトリには、サービスを特定の許可リストに制限する Template と Constraint が含まれており、攻撃者が信頼された値以外の IP を追加する能力を制限します。
これらのポリシーは、Anthos Config Management の一部として含まれている Policy Controller を使用して適用できます。許可された IP アドレスをカスタマイズするには、k8sExternalIPs_constraint.yaml の "allowedIPs" リスト内の項目を編集または追加してください。
特定の CIDR 範囲内の IP を単に防ぎたい場合は、ファイル k8sExternalIPsCIDR_constraint.yaml と k8sExternalIPsCIDR_template.yaml を使用してください。例えば、攻撃者が spec.externalIPs フィールドをデフォルトの Kubernetes サービス CIDR に指定するのを防ぎたい場合などです。