GKE의 네트워크 격리 정보


이 페이지에서는 Google Kubernetes Engine (GKE) 클러스터 제어 영역 및 클러스터 노드에서 네트워크 격리 및 액세스 제어가 작동하는 방식을 설명합니다. 이 페이지는 비공개 클러스터의 개념을 설명하는 페이지를 대체합니다.

네트워크 격리를 구성하는 방법을 결정할 때 고려해야 할 두 가지 측면이 있습니다.

  • 클러스터의 제어 영역에 액세스할 수 있는 사용자와 관련된 제어 영역 액세스
  • nodes 격리와 관련된 클러스터 네트워킹

이 페이지에서는 클러스터의 제어 영역 및 클러스터 노드 (표준 클러스터) 또는 워크로드(Autopilot 클러스터)에 액세스할 수 있는 사용자를 제어하고 맞춤설정하는 방법을 보여줍니다. 이 맞춤설정은 클러스터의 네트워크 구성을 결정할 때 관련이 있습니다. 네트워크 구성 정의로 바로 이동하려면 네트워크 격리 맞춤설정을 참고하세요.

권장사항:

조직의 네트워크 설계자, 네트워크 엔지니어, 네트워크 관리자 또는 네트워크 아키텍처 정의, 구현, 유지보수를 담당하는 다른 팀과 함께 네트워크 격리 구성을 계획하고 설계합니다.

제어 영역 액세스

이 섹션에서는 제어 영역에 액세스할 수 있는 사용자를 고려합니다.

모든 GKE 클러스터에는 Kubernetes API 요청을 처리하는 제어 영역이 있습니다. 제어 영역은 Google 관리 프로젝트의 VPC 네트워크에 있는 가상 머신 (VM)에서 실행됩니다. 리전 클러스터에는 제어 영역의 여러 복제본이 있으며 각 복제본은 자체 VM에서 실행됩니다.

컨트롤 플레인에는 클러스터 액세스를 위한 두 가지 종류의 엔드포인트가 있습니다.

  • DNS 기반 엔드포인트
  • IP 기반 엔드포인트
권장사항:

DNS 기반 엔드포인트만 사용하여 컨트롤 플레인에 액세스하면 간소화된 구성과 유연한 정책 기반 보안 레이어를 사용할 수 있습니다.

DNS 기반 엔드포인트

DNS 기반 엔드포인트는 각 클러스터 컨트롤 플레인에 고유한 DNS 또는 정규화된 도메인 이름 (FQDN)을 제공합니다. 이 DNS 이름은 제어 영역에 액세스하는 데 사용할 수 있습니다. DNS 이름은 온프레미스 또는 기타 클라우드 네트워크를 비롯하여 Google Cloud API에서 액세스할 수 있는 모든 네트워크에서 액세스할 수 있는 엔드포인트로 확인됩니다. DNS 기반 엔드포인트를 사용 설정하면 배스천 호스트 또는 프록시 노드가 다른 VPC 네트워크 또는 외부 위치에서 제어 영역에 액세스할 필요가 없습니다.

제어 영역 엔드포인트에 액세스하려면 IAM 역할 및 정책, 인증 토큰을 구성해야 합니다. 필요한 정확한 권한에 관한 자세한 내용은 네트워크 격리 맞춤설정을 참고하세요.

IAM 정책 및 토큰 외에도 다음 액세스 속성을 구성할 수 있습니다.

  • VPC 서비스 제어를 사용한 IP 또는 네트워크 기반 제어: 제어 영역에 대한 액세스를 보호합니다. VPC 서비스 제어는 네트워크 출처와 같은 속성을 기반으로 컨텍스트 인식 액세스를 통해 액세스 보안을 한 단계 더 강화합니다. VPC 서비스 제어를 사용하면 DNS 엔드포인트에 액세스할 수 있는 네트워크를 구성할 수 있습니다. IAM 정책과 VPC 서비스 제어를 모두 사용하여 DNS 기반 엔드포인트에 대한 액세스를 보호하면 클러스터 제어 영역에 다층 보안 모델을 제공할 수 있습니다. VPC 서비스 제어는 모든 Google Cloud API에서 사용되므로 클러스터의 보안 구성을 다른 모든Google Cloud API에 호스팅된 데이터와 일치시킬 수 있습니다.

  • Private Service Connect 또는 Cloud NAT: 공개 인터넷에 액세스할 수 없는 클라이언트에서 DNS 기반 엔드포인트에 액세스합니다. 기본적으로 DNS 기반 엔드포인트는 공개 인터넷에서 사용할 수 있는 Google Cloud API를 통해 액세스할 수 있습니다. 자세한 내용은 네트워크 격리 맞춤설정 페이지의 DNS 기반 엔드포인트를 참고하세요.

IP 기반 엔드포인트

원하는 경우 IP 기반 엔드포인트를 사용하여 컨트롤 플레인에 대한 액세스를 구성할 수도 있습니다.

클러스터 및 IP 주소 관련 용어

  • Google Cloud 외부 IP 주소:

    • Google Cloud에 호스팅된 고객이 사용하는 VM에 할당된 외부 IP 주소입니다. Google Cloud 에서 이러한 IP 주소를 소유합니다. 자세한 내용은 Compute Engine IP 범위는 어디에서 찾을 수 있나요?를 참고하세요.

    • Cloud Run 또는 Cloud Run 함수와 같은 Google Cloud 제품에서 사용하는 외부 IP 주소입니다. Google Cloud 에서 호스팅되는 모든 클라이언트는 이러한 IP 주소를 인스턴스화할 수 있습니다. Google Cloud 는 이러한 IP 주소를 소유합니다.

  • Google 예약 IP 주소: GKE 클러스터 관리 목적의 외부 IP 주소입니다. 이러한 IP 주소에는 GKE 관리형 프로세스 및 기타 프로덕션 Google 서비스가 포함됩니다. Google에서 이러한 IP 주소를 소유합니다.

  • GKE 클러스터 IP 주소 범위: GKE에서 클러스터의 노드, 포드, 서비스에 사용하는 클러스터에 할당된 내부 IP 주소입니다.

  • 내부 IP 주소: 클러스터의 VPC 네트워크에 있는 IP 주소입니다. 이러한 IP 주소에는 클러스터 IP 주소, 온프레미스 네트워크, RFC 1918 범위 또는 RFC 1918 이외의 범위가 포함된 비공개로 사용되는 공개 IP (PUPI) 주소가 포함될 수 있습니다.

  • 외부 엔드포인트: GKE가 제어 영역에 할당하는 외부 IP 주소입니다.

  • 내부 엔드포인트: GKE가 컨트롤 플레인에 할당하는 내부 IP 주소입니다.

  • VPC 네트워크: 클러스터의 노드 및 포드 전용 IP 주소 범위로 서브넷을 만드는 가상 네트워크입니다.

IP 기반 엔드포인트를 사용할 때는 다음 두 가지 옵션이 있습니다.

  • 외부 및 내부 엔드포인트 모두에서 제어 영역 노출 즉, 제어 영역의 외부 엔드포인트는 외부 IP 주소에서 액세스할 수 있고 내부 엔드포인트는 클러스터의 VPC 네트워크에서 액세스할 수 있습니다. 노드는 내부 엔드포인트에서만 제어 영역과 통신합니다.

  • 내부 엔드포인트에서만 제어 영역을 노출합니다. 즉, 인터넷의 클라이언트가 클러스터에 연결할 수 없으며 클러스터의 VPC 네트워크에 있는 모든 IP 주소에서 제어 영역에 액세스할 수 있습니다. 노드는 내부 엔드포인트에서만 제어 영역과 통신합니다.

    제어 영역에 대한 모든 인터넷 액세스를 차단하므로 IP 기반 엔드포인트를 사용할 때 가장 안전한 옵션입니다. 이는 데이터 개인 정보 보호 및 보안 규정으로 인해 제어된 액세스가 필요한 워크로드가 있는 경우에 적합합니다.

위의 두 옵션 모두 승인된 네트워크를 구성하여 엔드포인트에 도달하는 IP 주소를 제한할 수 있습니다. IP 기반 엔드포인트를 사용하는 경우 승인된 네트워크를 하나 이상 추가하는 것이 좋습니다. 승인된 네트워크는 신뢰할 수 있는 특정 IPv4 주소 집합에 대한 제어 영역 액세스 권한을 부여하고 GKE 클러스터에 보호 및 추가 보안 이점을 제공합니다.

권장사항:

IP 기반 엔드포인트를 사용하여 GKE 클러스터를 보호할 때 승인된 네트워크를 사용 설정합니다.

승인된 네트워크의 작동 방식

승인된 네트워크는 GKE 제어 영역에 대한 액세스를 제어하는 IP 기반 방화벽을 제공합니다. 제어 영역에 대한 액세스는 소스 IP 주소에 따라 다릅니다. 승인된 네트워크를 사용 설정하면 GKE 클러스터 제어 영역 엔드포인트에 대한 액세스를 허용하려는 IP 주소를 CIDR 블록 목록으로 구성합니다.

다음 표에는 다음이 표시됩니다.

  • 승인된 네트워크를 사용 설정했는지와 관계없이 항상 GKE 제어 영역에 액세스할 수 있는 사전 설정된 IP 주소입니다.
  • 승인된 네트워크를 사용 설정하여 허용 목록에 추가하면 제어 영역에 액세스할 수 있는 구성 가능한 IP 주소입니다.
제어 영역 엔드포인트 엔드포인트에 항상 액세스할 수 있는 사전 설정된 IP 주소 승인된 네트워크를 사용 설정한 후 엔드포인트에 액세스할 수 있는 구성 가능한 IP 주소
외부 및 내부 엔드포인트 사용 설정됨
  • Google에서 예약한 IP 주소
  • GKE 클러스터 IP 주소 범위
  • 허용 목록에 추가된 외부 IP 주소
  • 허용 목록에 있는 내부 IP 주소
  • Google Cloud 외부 IP 주소
내부 엔드포인트만 사용 설정됨
  • Google에서 예약한 IP 주소
  • GKE 클러스터 IP 주소 범위
  • 허용 목록에 있는 내부 IP 주소

승인된 네트워크를 사용하면 내부 IP 주소가 제어 영역의 내부 엔드포인트에 도달할 수 있는 리전을 구성할 수도 있습니다. 클러스터의 VPC 네트워크에서만 또는 VPC 또는 온프레미스 환경의 모든 Google Cloud 리전에서만 액세스를 허용하도록 선택할 수 있습니다.

IP 기반 엔드포인트 사용 시 제한사항

  • 승인된 네트워크가 있는 클러스터에서 사용하는 서브넷을 확장하는 경우 확장된 IP 주소 범위를 포함하도록 승인된 네트워크 구성을 업데이트해야 합니다.
  • 동적 IP 주소가 있는 네트워크(예: 홈 네트워크의 직원)에서 클라이언트가 연결되는 경우 클러스터에 대한 액세스 권한을 유지하려면 승인된 네트워크 목록을 자주 업데이트해야 합니다.
  • 컨트롤 플레인의 외부 엔드포인트에 대한 액세스를 사용 중지하면 클러스터를 원격으로 상호작용할 수 없습니다. 클러스터에 원격으로 액세스해야 하는 경우 클라이언트 트래픽을 클러스터로 전달하는 배스천 호스트를 사용해야 합니다. 반면 DNS 기반 엔드포인트를 사용하려면 IAM 권한만 설정하면 됩니다.
  • IP 기반 엔드포인트는 VPC 서비스 제어와 직접 통합되지 않습니다. VPC 서비스 제어는 서비스 경계 수준에서 작동하여 Google Cloud내에서 데이터 액세스 및 이동을 제어합니다. 강력한 보안 방어를 위해 VPC 서비스 제어와 함께 DNS 기반 엔드포인트를 모두 사용하는 것이 좋습니다.
  • 승인된 IP 주소 범위 (외부 및 내부 IP 주소 포함)를 최대 100개까지 지정할 수 있습니다.

클러스터 네트워킹 액세스

이 섹션에서는 Kubernetes 클러스터 내에서 nodes를 격리하는 방법을 설명합니다.

비공개 노드 사용 설정

노드에 내부 IP 주소만 프로비저닝하여 노드를 비공개로 만들어 외부 클라이언트가 노드에 액세스하지 못하도록 합니다. 외부 IP 주소가 없는 노드에서 실행되는 워크로드는 클러스터의 네트워크에서 NAT가 사용 설정되지 않으면 인터넷에 연결할 수 없습니다. 이 설정은 언제든지 변경할 수 있습니다.

개별 클러스터 수준 또는 노드 풀(표준의 경우) 또는 워크로드 (Autopilot의 경우) 수준에서 비공개 노드를 사용 설정할 수 있습니다. 노드 풀 또는 워크로드 수준에서 비공개 노드를 사용 설정하면 클러스터 수준의 모든 노드 구성이 재정의됩니다.

공개 노드 풀을 비공개 모드로 업데이트하면 다음 시나리오에서 클러스터 네트워크 외부 액세스가 필요한 워크로드가 실패할 수 있습니다.

  • 비공개 Google 액세스가 사용 설정되지 않은 공유 VPC 네트워크의 클러스터 GKE가 할당된 노드 이미지를 다운로드하도록 수동으로 비공개 Google 액세스를 사용 설정합니다. 공유 VPC 네트워크에 있지 않은 클러스터의 경우 GKE는 비공개 Google 액세스를 자동으로 사용 설정합니다.

  • Cloud NAT가 사용 설정되지 않았거나 커스텀 NAT 솔루션이 정의되지 않은 인터넷에 액세스해야 하는 워크로드입니다. 인터넷으로의 이그레스 트래픽을 허용하려면 Cloud NAT 또는 맞춤 NAT 솔루션을 사용 설정하세요.

비공개 노드를 사용 설정했는지 여부와 관계없이 컨트롤 플레인은 여전히 내부 IP 주소만을 통해 모든 노드와 통신합니다.

네트워크 격리의 이점

네트워크 격리의 이점은 다음과 같습니다.

  • 유연성:

    • 클러스터는 통합되고 유연한 구성을 갖추고 있습니다. 외부 엔드포인트가 있거나 없는 클러스터는 모두 동일한 아키텍처를 공유하고 동일한 기능을 지원합니다. 필요에 맞는 제어 기능과 권장사항에 따라 액세스를 보호할 수 있습니다. 클러스터의 노드와 제어 영역 간의 모든 통신은 내부 IP 주소를 사용합니다.
    • 클러스터를 다시 만들지 않고도 언제든지 컨트롤 플레인 액세스 및 클러스터 노드 구성 설정을 변경할 수 있습니다.
    • 인터넷 액세스가 가능한 위치 또는 VPC와 직접 연결되지 않은 네트워크나 기기에서 클러스터를 관리해야 하는 경우 제어 영역의 외부 엔드포인트를 사용 설정할 수 있습니다. 또는 민감한 워크로드의 네트워크 격리를 유지해야 하는 경우 보안 강화를 위해 외부 엔드포인트를 사용 중지할 수 있습니다. 두 경우 모두 승인된 네트워크를 사용하여 신뢰할 수 있는 IP 범위에 대한 액세스를 제한할 수 있습니다.
  • 보안:

    • VPC 서비스 제어를 사용하는 DNS 기반 엔드포인트는 제어 영역에 액세스하는 승인되지 않은 ID와 승인되지 않은 네트워크로부터 클러스터를 보호하는 다층 보안 모델을 제공합니다. VPC 서비스 제어는 Cloud 감사 로그와 통합되어 컨트롤 플레인에 대한 액세스를 모니터링합니다.
    • 비공개 노드와 이러한 노드에서 실행되는 워크로드는 공개 인터넷에서 직접 액세스할 수 없으므로 클러스터에 대한 외부 공격 가능성을 크게 줄일 수 있습니다.
    • Google Cloud 외부 IP 주소 또는 외부 IP 주소에서 컨트롤 플레인 액세스를 차단하여 클러스터 컨트롤 플레인을 완전히 격리하고 잠재적인 보안 위협에 노출되는 것을 줄일 수 있습니다.
  • 규정 준수: 데이터 액세스 및 저장에 대한 규제가 엄격한 업계에서 근무하는 경우 비공개 노드를 사용하면 민감한 데이터가 비공개 네트워크 내에 유지되므로 규정을 준수하는 데 도움이 됩니다.

  • 제어: 비공개 노드를 사용하면 클러스터의 트래픽 흐름을 세부적으로 제어할 수 있습니다. 승인된 통신만 허용하도록 방화벽 규칙과 네트워크 정책을 구성할 수 있습니다. 멀티 클라우드 환경에서 운영하는 경우 비공개 노드를 사용하면 여러 환경 간에 안전하고 제어된 통신을 설정할 수 있습니다.

  • 비용: 비공개 노드를 사용 설정하면 인터넷에서 공개 서비스에 액세스하는 데 외부 IP 주소가 필요하지 않은 노드의 비용을 줄일 수 있습니다.

다음 단계