클러스터 트러스트

이 페이지에서는 마스터와 노드가 요청을 인증하는 방법을 포함하여 Google Kubernetes Engine 클러스터에서의 신뢰를 설명합니다.

클러스터 내 통신

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

마스터-노드 간
마스터는 컨테이너 관리를 위해 노드와 통신합니다. 마스터가 노드에 요청을 전송하면(예: kubectl 로그) 해당 요청은 SSH 터널을 통해 전송되고 인증되지 않은 TLS로 추가 보호되어 무결성과 암호화를 제공합니다. 노드가 마스터에 요청을 전송하면(예: kubelet에서 API 서버로) 해당 요청은 상호 TLS를 사용하여 인증되고 암호화됩니다.
노드 간
노드는 특정 작업 부하의 일환으로 다른 노드와 통신할 수 있습니다. 노드가 다른 노드에 요청을 전송하면 해당 요청이 인증되고, 해당 연결이 Google에 의해 제어되는 물리적 경계를 넘는 경우, 암호화됩니다. Kubernetes 구성요소에는 노드 간 통신이 필요하지 않습니다. 자세한 내용은 전송 중 암호화 백서를 참조하세요.
포드 간
포드는 특정 작업 부하의 일환으로 다른 포드와 통신할 수 있습니다. 포드가 다른 포드에 요청을 전송하면 해당 요청은 인증되거나 암호화되지 않습니다. Kubernetes 구성요소에는 포드 간 통신이 필요하지 않습니다. 포드 간 트래픽은 네트워크 정책을 사용하여 제한할 수 있으며, 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에서 관리합니다.

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Kubernetes Engine