GKE의 네트워크 보안 이해

이 문서에서는 최소 권한 원칙과 같은 핵심 GKE 네트워크 보안 개념을 설명하고 클러스터를 보호하는 데 적합한 도구를 선택하는 데 도움을 줍니다. GKE 네트워크 보안 구현의 기본 목표는 워크로드 격리 및 보안 멀티 테넌트입니다. 이러한 목표를 달성하려면 최소 권한 및 심층 방어 원칙을 적용하고 실행 가능한 데이터를 사용하여 보안 결정을 내려야 합니다.

Google Kubernetes Engine (GKE)에서 네트워크 트래픽에 최소 권한 원칙을 적용한다는 것은 애플리케이션이 작동하는 데 필요한 통신만 허용하도록 제한하는 것을 의미합니다. 기본적으로 GKE 클러스터 내의 네트워크는 열려 있습니다. 즉, 모든 포드가 다른 모든 포드와 통신할 수 있습니다.

이 문서는 운영자, 네트워킹 전문가, 보안 전문가가 GKE 클러스터 내에서 네트워크 보안을 이해하고 구현하는 데 도움이 됩니다. Google Cloud의 일반적인 역할과 예시 태스크에 대한 자세한 내용은 일반 GKE 사용자 역할 및 태스크를 참고하세요.

이 문서를 읽기 전에 다음 사항을 숙지해야 합니다.

  • GKE 네트워킹 개념: 개요는 GKE 네트워킹 정보를 참고하세요.
  • Kubernetes 포드, 서비스, 네임스페이스: 이러한 기본 Kubernetes 리소스는 네트워크 보안 정책을 정의하는 데 핵심적인 역할을 합니다. Kubernetes 문서를 참고하세요.
  • 최소 권한의 원칙: 이 보안 원칙은 이 문서 전체에 적용되는 핵심 개념입니다.

GKE 네트워크 보안의 목표

GKE 네트워크 보안 정책은 클러스터 내에서 세부적인 Kubernetes 인식 트래픽 제어를 제공합니다. 이러한 정책은 전반적인 보안 전략의 중요한 요소입니다. 강력한 네트워크 보안을 구현하려면 다음 기본 원칙을 고려하세요.

  • 최소 권한: 시스템과 서비스에 기능을 수행하는 데 필요한 최소한의 권한만 부여합니다. 이 원칙은 보안 침해의 잠재적 영향을 줄입니다. Kubernetes 네트워크 정책을 사용하면 기본적으로 열린 네트워크에서 필요한 연결만 허용되는 네트워크로 전환할 수 있습니다.
  • 심층 방어: 여러 독립적인 보안 제어를 계층화합니다. 하나의 컨트롤 실패가 전체 시스템 손상으로 이어지지 않습니다. 예를 들어 데이터베이스 자체에 인증이 필요한 경우에도 네트워크 정책을 사용하여 데이터베이스를 격리합니다.
  • 실행 가능한 데이터: 데이터를 기반으로 보안 결정을 내립니다. 위협 모델링과 위험 평가는 보안 태세에 영향을 미칩니다. 네트워크 정책 로깅과 같은 기능은 정책을 확인하고 잠재적인 위반을 감지하는 데 필요한 데이터를 제공합니다.

네트워크 보안 정책 선택

올바른 정책을 선택하려면 관리해야 하는 트래픽의 유형과 범위를 파악하세요.

트래픽 유형

올바른 정책을 선택하려면 관리하려는 트래픽의 소스와 대상을 고려하세요.

  • 클러스터 내 포드 간 통신: 마이크로서비스가 서로 통신하는 방식을 제어하려면 포드 라벨과 네임스페이스에서 작동하는 정책을 사용하세요.

    • 애플리케이션 개발자는 표준 Kubernetes NetworkPolicy를 사용하여 네임스페이스 내에서 애플리케이션의 인그레스 및 이그레스 규칙을 정의합니다.
    • 클러스터 관리자는 CiliumClusterwideNetworkPolicy를 사용하여 전체 클러스터에 적용되는 보안 가드레일을 시행합니다. NetworkPolicy의 거부 규칙이 CiliumClusterwideNetworkPolicy 허용 규칙보다 우선 적용됩니다.
  • 포드에서 외부 서비스로의 이그레스 트래픽: 도메인 이름을 기반으로 포드에서 외부 서비스로의 이그레스 트래픽을 제어하려면 FQDNNetworkPolicy를 사용합니다. 이 정책은 외부 서비스의 IP 주소가 정적이지 않은 경우에 유용합니다. DNS를 기반으로 허용된 IP 주소를 자동으로 확인하고 업데이트하기 때문입니다.

  • 모든 서비스 간 트래픽 암호화: 서비스 간의 모든 통신이 암호화되고 인증되도록 하려면 서비스 메시를 사용하세요. Istio 또는 Anthos Cloud Service Mesh를 사용하여 암호화를 자동으로 처리하는 상호 TLS (mTLS)를 구현합니다.

정책 선택사항 요약

다음 표에는 보안 목표에 따라 사용할 정책이 요약되어 있습니다.

목표 권장 정책
라벨과 네임스페이스를 사용하여 포드 간 트래픽을 제어합니다. Kubernetes NetworkPolicy
도메인 이름으로 외부 서비스에 대한 이그레스 트래픽을 제어합니다. FQDNNetworkPolicy
모든 서비스 간 트래픽을 암호화하고 인증합니다. Istio 또는 Anthos Cloud Service Mesh (mTLS용)
관리자로서 필수 클러스터 전체 규칙을 적용합니다. CiliumClusterwideNetworkPolicy
정책에 따라 허용되거나 거부된 연결을 감사하고 로깅합니다. 네트워크 정책 로깅 (모든 정책에 대해 사용 설정됨)

네트워크 정책 감사 및 문제 해결

네트워크 정책을 구현한 후 예상대로 작동하는지 확인하고 연결 문제를 진단합니다. 이 경우 네트워크 정책 로깅을 기본 도구로 사용할 수 있습니다.

네트워크 정책 로깅을 사용 설정하면 GKE는 네트워크 정책이 허용하거나 거부하는 모든 연결에 대해 Cloud Logging에 로그 레코드를 생성합니다. 이러한 로그는 보안 감사를 실행하고 예기치 않은 동작을 해결하는 데 필수적입니다. 이러한 로그를 검토하면 규칙의 구체적인 효과를 확인하여 적법한 트래픽이 예상대로 흐르고 무단 트래픽이 차단되는지 확인할 수 있습니다.

다음 단계