게이트웨이 보안


이 페이지에서는 Google Kubernetes Engine(GKE)에서 게이트웨이를 보호하는 다양한 방법을 설명합니다. 게이트웨이를 보호하는 방법에 대해서도 알아볼 수 있습니다.

게이트웨이 보안 작동 방식

게이트웨이는 부하 분산기의 프런트엔드를 나타냅니다. 게이트웨이의 인증 및 암호화로 보호할 수 있는 경로에는 다음 두 가지가 있습니다.

  • 클라이언트-게이트웨이: 클라이언트에서 시작되어 게이트웨이에서 종료되는 트래픽
  • 게이트웨이-포드: 게이트웨이에서 시작되어 백엔드 포드에서 종료되는 트래픽

다음 다이어그램에서는 게이트웨이를 인증하고 암호화하는 두 경로를 모두 보여줍니다.

이 페이지에서는 게이트웨이 수준에서 업로드 및 관리되는 인증서를 사용하여 클라이언트-게이트웨이 경로를 보호하는 방법을 설명합니다. 포드 트래픽에 대한 게이트웨이를 보호하는 방법은 TLS를 사용하여 애플리케이션 트래픽에 대한 부하 분산기 보호를 참조하세요.

이점

Gateway API를 사용하면 게이트웨이와 상호작용하는 다양한 역할에 유연성을 제공하여 다양한 방법으로 애플리케이션을 보호할 수 있습니다.

도메인 및 TLS 구성 소유자

Gateway API 모델에는 게이트웨이를 사용하거나 배포하는 다음과 같은 두 가지 역할이 있습니다.

  • 플랫폼 관리자: 클러스터 운영자는 전체 클러스터의 관리자입니다. 정책, 네트워크 액세스, 애플리케이션 권한을 관리합니다.
  • 애플리케이션 개발자: 애플리케이션 개발자는 자신의 애플리케이션 및 서비스 구성을 정의합니다.

다음은 두 애플리케이션 store-v1store-v2의 TLS와 도메인 소유권에 영향을 미치는 게이트웨이 및 HTTPRoute 리소스의 필드를 보여주는 다이어그램입니다.

이 다이어그램에서 클러스터 운영자는 다음을 제어합니다.

  • 애플리케이션 개발자가 각 네임스페이스에서 앱에 사용할 수 있는 도메인
  • 다른 도메인을 종료하는 특정 인증서
  • 게이트웨이 소유자가 제공한 인증서
  • HTTPRoute 소유자가 인증서 생성을 위한 자체 호스트 이름을 지정할 수 있는지 여부

게이트웨이 정의에서 허용하는 경우 애플리케이션 개발자가 인증서를 생성하는 호스트 이름을 제어합니다.

이러한 운영 태스크를 분리하면 애플리케이션 개발자가 보다 분산된 제어를 위해 자체 HTTPRoute를 배포 및 관리할 수 있으며, 플랫폼 관리자가 TLS의 중앙 집중식 제어를 위해 게이트웨이를 배포 및 관리할 수 있습니다.

게이트웨이 인증서 관리

다음 방법 중 하나를 사용하여 게이트웨이를 보호할 수 있습니다.

Compute Engine API를 통해 Kubernetes 보안 비밀 또는 SslCertificate 리소스를 사용하는 경우 단일 게이트웨이에 인증서를 최대 15개까지 연결할 수 있습니다.

할당량 상향 요청 시 인증서 관리자를 통해 부하 분산기당 인증서를 최대 10,000,000개까지 연결할 수 있습니다.

Google Cloud SSL 인증서에 대한 자세한 내용은 SSL 인증서 개요를 참조하세요.

Kubernetes 보안 비밀

Gateway API 사양에서는 인증서를 저장하고 게이트웨이에 연결하기 위한 Kubernetes 보안 비밀을 지원합니다. Gateway.spec.tls.certificateRef 필드를 사용하여 Kubernetes 보안 비밀 하나 이상을 게이트웨이 하나와 연결할 수 있습니다.

Kubernetes 보안 비밀을 통해 보호되는 게이트웨이 리소스에는 다음과 같은 요구사항이 있습니다.

  • 게이트웨이 리스너 portprotocol443HTTPS로 설정해야 합니다.
  • listener.tls.mode 필드를 Terminate로 설정해야 합니다.
  • listeners.tls 블록에서 TLS 사용자 인증 정보를 참조해야 합니다.

Kubernetes 보안 비밀을 사용하여 보호되는 게이트웨이 리소스에는 다음과 같은 제한사항이 있습니다.

  • HTTP와 HTTPS를 함께 사용하여 여러 리스너를 지정할 수 있지만 HTTPS 리스너만 지정된 보안 비밀을 사용하여 트래픽을 종료합니다.
  • 동일한 게이트웨이에서 HTTPS를 사용하는 리스너가 여러 개 있는 경우 리스너마다 고유한 호스트 이름이 있어야 합니다.
  • 단일 호스트 이름만 생략하거나 포트와 프로토콜 쌍마다 *를 할당할 수 있습니다.
  • 기본 인증서는 게이트웨이당 하나만 할당할 수 있습니다.

Kubernetes 보안 비밀을 사용하여 게이트웨이를 보호하는 방법은 Kubernetes 보안 비밀을 사용한 게이트웨이 보호를 참조하세요.

SSL 인증서

SSL 인증서는 부하 분산기에 인증서를 저장하고 전달합니다.

SSL 인증서는 자체 관리형 인증서나 Google 관리형 인증서일 수 있습니다.

이 두 인증서 유형의 차이점에 대해 자세히 알아보려면 SSL 인증서 개요를 참조하세요.

SSL 인증서의 범위 및 위치는 이를 사용하는 게이트웨이의 범위 및 위치와 일치해야 합니다.

예를 들어 전역 SSL 인증서는 리전 게이트웨이에 사용될 수 없습니다.

다음 표에는 각 GatewayClass의 SSL 인증서 범위 및 위치 요구사항이 나와 있습니다.

GatewayClass SSL 인증서 범위 SSL 인증서 위치
gke-l7-global-external-managed 전역 SSL 인증서 글로벌
gke-l7-global-external-managed-mc
gke-l7-gxlb
gke-l7-gxlb-mc
gke-l7-regional-external-managed 지역 SSL 인증서 게이트웨이와 동일한 리전이어야 합니다.
gke-l7-regional-external-managed-mc
gke-l7-rilb
gke-l7-rilb-mc
Google 관리형 SSL 인증서는 리전 게이트웨이와 호환되지 않습니다.

SSL 인증서를 사용하여 게이트웨이를 보호하는 방법은 SSL 인증서를 사용한 게이트웨이 보호를 참조하세요.

인증서 관리자

인증서 관리자는 TLS 인증서를 관리하는 중앙 위치입니다.

인증서 관리자를 사용하여 게이트웨이를 보호하면 다음이 가능합니다.

  • 인증서 관리자에서 만든 게이트웨이에서 CertificateMap을 직접 참조할 수 있습니다.
  • 자체 인증서를 관리할 수 있습니다.
  • 인증서 전파 시간을 개선할 수 있습니다.
  • 만료된 인증서 및 인증서 전파에 Cloud Monitoring을 사용할 수 있습니다.

인증서 관리자에서는 자체 관리형 SSL 인증서와 Google 관리 SSL 인증서를 모두 지원합니다.

인증서 관리자를 사용하여 게이트웨이를 보호하는 방법은 인증서 관리자를 사용한 게이트웨이 보호를 참조하세요.

GatewayClass TLS 지원

다음 표에서는 GKE가 각 GatewayClass에 지원하는 TLS 종료 방법을 설명합니다.

GatewayClass gke-l7-global-external-managed
gke-l7-global-external-managed-mc
gke-l7-gxlb
gke-l7-gxlb-mc
gke-l7-regional-external-managed
gke-l7-regional-external-managed-mc
gke-l7-rilb
gke-l7-rilb-mc
클라이언트-게이트웨이 TLS 지원됨 지원됨
백엔드 TLS에 대한 게이트웨이 지원됨 지원됨
Google Cloud 인증서 리소스 전역 SSL 인증서
CertificateMap
지역 SSL 인증서
Kubernetes 보안 비밀을 사용하는 자체 관리형 인증서 지원됨 지원됨
자체 관리형 Compute Engine SSL 인증서 지원됨 지원됨
Google 관리형 Compute Engine SSL 인증서 지원됨 지원되지 않음
인증서 관리자를 사용하는 자체 관리형 SSL 인증서 지원됨 지원됨
인증서 관리자를 사용하는 Google 관리형 SSL 인증서 지원됨 지원됨(미리보기)

다음 단계