클러스터 신뢰

이 페이지에서는 제어 영역(마스터)과 노드가 요청을 인증하는 방법을 비롯한 Google Kubernetes Engine 클러스터의 트러스트를 설명합니다.

클러스터 내 통신

클러스터에는 Kubernetes 구성요소 간 통신을 위한 많은 연결이 있습니다.

제어 영역-노드 간

제어 영역은 노드와 통신하여 컨테이너를 관리합니다. 제어 영역이 노드에 요청을 보내면(예: kubectl 로그) 이 요청은 SSH 터널을 통해 전송되고 TLS로 추가 보호되므로 인증, 무결성, 암호화를 제공합니다. 노드가 제어 영역에 요청을 보내면(예: kubelet에서 API 서버로) 이 요청은 상호 TLS를 통해 인증 및 암호화됩니다.

새로 생성되고 업데이트된 모든 클러스터는 제어 영역-노드 간 통신에 TLS 1.3을 사용합니다. TLS 1.2는 제어 영역-노드 간 통신에 지원되는 최소 버전입니다.

노드 간

노드는 특정 워크로드의 일부로 다른 노드와 통신할 수 있습니다. 노드가 다른 노드에 요청을 전송하면 해당 요청이 인증되고, 해당 연결이 Google에 의해 제어되는 물리적 경계를 넘으면 암호화됩니다. Kubernetes 구성요소에는 노드 간 통신이 필요하지 않습니다. 자세한 내용은 전송 중 암호화 백서를 참조하세요.

Pod 간

Pod는 특정 워크로드의 일부로 다른 Pod와 통신할 수 있습니다. Pod가 다른 Pod에 요청을 전송하면 이 요청은 인증되거나 암호화되지 않습니다. Kubernetes 구성요소에는 Pod 간 통신이 필요하지 않습니다. Pod 간 트래픽은 네트워크 정책을 사용하여 제한될 수 있으며 Istio와 같은 서비스 메시를 사용하여 암호화하거나 애플리케이션 레이어 암호화를 구현할 수 있습니다.

etcd 간

etcd 인스턴스는 다른 etcd 인스턴스와 통신하여 업데이트된 상태를 유지할 수 있습니다. etcd의 인스턴스가 다른 인스턴스에 요청을 전송하면 이 요청은 상호 TLS를 사용하여 인증되고 암호화됩니다. 트래픽은 방화벽으로 보호되는 GKE 소유 네트워크를 벗어나지 않습니다.

제어 영역-etcd 간

이 통신은 전적으로 localhost를 통해 이루어지며, 인증되거나 암호화되지 않습니다.

신뢰 기반

GKE는 다음과 같이 구성됩니다.

  • 클러스터 루트 인증 기관(CA)은 API 서버 및 kubelet 클라이언트 인증서의 유효성을 검사하는 데 사용됩니다. 즉, 제어 영역과 노드의 신뢰할 수 있는 루트는 동일합니다. 클러스터 노드 풀 내의 모든 kubelet은 인증서 서명 요청을 제출하여 certificates.k8s.io API를 사용해 이 CA에 인증서를 요청할 수 있습니다.
  • 별도의 클러스터별 etcd CA는 etcd의 인증서 유효성 검사에 사용됩니다.

API 서버 및 kubelet

API 서버와 kubelet은 Kubernetes의 클러스터 루트 CA에 신뢰를 의존합니다. GKE에서 제어 영역 API 인증서는 클러스터 루트 CA에 의해 서명됩니다. 각 클러스터는 자체 CA를 실행하므로 한 클러스터의 CA가 손상되더라도 다른 클러스터 CA는 영향을 받지 않습니다.

내부 Google 서비스가 이 CA의 루트 키를 관리하며 이 키를 내보낼 수 없습니다. 이 서비스는 각 GKE 클러스터에 있는 kubelet의 요청을 비롯한 인증서 서명 요청을 수락합니다. 클러스터의 API 서버가 손상되더라도 CA는 손상되지 않으므로 다른 클러스터는 영향을 받지 않습니다.

클러스터의 각 노드에는 클러스터 루트 CA에 인증서 서명 요청을 전송하고 클라이언트 인증서를 획득하는 데 사용할 수 있는 공유 보안 비밀이 생성 시 주입됩니다. 그런 다음 이러한 인증서는 kubelet이 API 서버에 요청을 인증하는 데 사용됩니다. 메타데이터 숨김이 사용 설정되어 있지 않다면 포드는 이 공유 보안 비밀에 도달할 수 있습니다.

API 서버 및 kubelet 인증서는 5년간 유효하지만 사용자 인증 정보 순환을 수행하면 이보다 일찍 수동으로 순환시킬 수 있습니다.

etcd

GKE에서 etcd의 신뢰는 별도의 클러스터별 CA에 의존합니다.

etcd CA의 루트 키는 제어 영역이 실행되는 각 VM의 메타데이터에 배포됩니다. 제어 영역 VM에서 실행되거나 마스터 VM의 컴퓨팅 메타데이터에 대한 액세스 권한이 있는 모든 코드는 이 CA로 인증서에 서명할 수 있습니다. 클러스터의 etcd가 손상되더라도 CA가 클러스터 간에 공유되지 않으므로 다른 클러스터는 영향을 받지 않습니다.

etcd 인증서는 5년간 유효합니다.

인증서 순환

모든 클러스터의 API 서버 및 kubelet 인증서를 순환시키려면 사용자 인증 정보 순환을 수행하세요. etcd 인증서의 순환을 트리거하는 방법은 없습니다. 이것은 GKE에서 관리합니다.

다음 단계