説明
ネットワークポリシーが適用されていないと、Pod が必要以上に通信でき、侵害されたワークロードから他のサービスにアクセスしやすくなります。ポリシーを適用する機能と、実際の Kubernetes NetworkPolicy リソースの両方が必要です。
想定される影響
不要な Pod 間通信は、攻撃者が内部を移動したり機密性の高いサービスにアクセスしたりする経路を増やします。機能を有効にするだけで通信が自動的に遮断されるわけではありません。
対処方法
Standard で Calico を使う場合は network_policy.enabled: yes、provider: CALICO、addons_config.network_policy_config.disabled: no を合わせて設定してください。必要な通信を許可する NetworkPolicy を配置し、効果を確認してください。Autopilot と Dataplane V2 には適用機能が組み込まれているため、Calico 設定ではなく実際のポリシーを設定してください。
例
Standard クラスターの Calico 設定の抜粋です。プロジェクトと JSON 認証情報のパスを指定してください。既存クラスターで機能を有効にするとノードが再作成されるため、メンテナンスとワークロードの可用性を計画する必要があります。
変更前
- name: create a cluster2
google.cloud.gcp_container_cluster:
name: my-cluster2
initial_node_count: 2
node_config:
machine_type: n1-standard-4
disk_size_gb: 500
location: us-central1-a
project: "{{ gcp_project }}"
auth_kind: serviceaccount
service_account_file: "{{ gcp_service_account_file }}"
state: present
network_policy:
provider: CALICO
enabled: yes
- name: create a cluster5
google.cloud.gcp_container_cluster:
name: my-cluster5
initial_node_count: 2
node_config:
machine_type: n1-standard-4
disk_size_gb: 500
location: us-central1-a
project: "{{ gcp_project }}"
auth_kind: serviceaccount
service_account_file: "{{ gcp_service_account_file }}"
state: present
network_policy:
provider: CALICO
enabled: yes
addons_config:
network_policy_config:
disabled: yes
最初のタスクはアドオン設定を省略し、2 番目は無効にしています。Calico のコントロールプレーン用アドオンとノードでの適用設定を合わせて確認する必要があります。
変更後
- name: create a cluster
google.cloud.gcp_container_cluster:
name: my-cluster
initial_node_count: 2
node_config:
machine_type: n1-standard-4
disk_size_gb: 500
location: us-central1-a
project: "{{ gcp_project }}"
auth_kind: serviceaccount
service_account_file: "{{ gcp_service_account_file }}"
state: present
network_policy:
provider: CALICO
enabled: yes
addons_config:
network_policy_config:
disabled: no
Calico の適用機能とアドオンを同時に有効にしています。意図した通信制限には、別途 NetworkPolicy リソースを配置する必要があります。