GKE のネットワークポリシー適用設定の確認

GKE に必要な NetworkPolicy を配置し、通信制限が実際に適用されることを確認します。

説明

ネットワークポリシーが適用されていないと、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 認証情報のパスを指定してください。既存クラスターで機能を有効にするとノードが再作成されるため、メンテナンスとワークロードの可用性を計画する必要があります。

変更前

yaml
- 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 のコントロールプレーン用アドオンとノードでの適用設定を合わせて確認する必要があります。

変更後

yaml
- 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 リソースを配置する必要があります。

参考資料