설명
네트워크 정책을 적용하지 않으면 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
첫 작업은 애드온 설정을 생략하고 두 번째는 애드온을 끕니다. 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 리소스를 배포해야 의도한 트래픽 제한이 적용됩니다.