이 페이지에서는 Confidential Google Kubernetes Engine 노드를 사용하여 노드 및 워크로드에서 사용 중 데이터 암호화를 시행하는 방법을 보여줍니다.
개요
Confidential GKE Node는 Compute Engine 컨피덴셜 VM을 기반으로 구축되어 사용 중인 VM의 메모리 콘텐츠를 암호화하는 AMD Secure Encryption Virtualization(SEV)을 사용합니다. 사용 중 암호화는 엔드 투 엔드 암호화의 세 가지 상태 중 하나입니다.
클러스터 또는 노드 풀에서 Confidential GKE Node를 사용 설정하면 컨피덴셜 노드에서 실행 중인 워크로드의 데이터가 사용 중 암호화됩니다. 제어 영역에 대한 가시성을 위해서는 액세스 투명성을 사용합니다.
다음 중 하나를 수행할 때 Confidential GKE Node를 사용 설정할 수 있습니다.
- 새 클러스터 만들기
- 새 노드 풀 만들기
- 기존 노드 풀 업데이트
기존 클러스터를 업데이트하여 클러스터 수준의 Confidential GKE Node 설정을 변경할 수 없습니다.
다음 표에서는 클러스터 수준 또는 노드 풀 수준에서 Confidential GKE Node를 사용 설정할 때 적용되는 GKE 동작을 보여줍니다.
Confidential GKE Node 설정 | 구성 방법 | 동작 |
---|---|---|
클러스터 수준 | 새 클러스터 만들기 | 모든 노드 풀의 클러스터에 있는 모든 노드는 Confidential GKE Node를 사용합니다. 다음을 수행할 수 없습니다.
|
노드 풀 수준 |
|
이 기능이 클러스터 수준에서 사용 중지된 경우에만 노드 풀에 Confidential GKE Node를 구성할 수 있습니다. |
가격 책정
Compute Engine 컨피덴셜 VM 비용 이외에 Confidential GKE Node 배포에는 추가 비용이 들지 않습니다. 하지만 Confidential GKE Node는 표준 노드보다 시작 시 로그 데이터를 약간 더 생성할 수 있습니다. 로그 가격 책정에 대한 자세한 내용은 Google Cloud Observability 가격 책정을 참조하세요.
사용 가능 여부
Confidential GKE Node는 다음과 같은 경우에 제공됩니다.
Confidential GKE Node는 N2D 인스턴스 또는 C2D 인스턴스를 사용할 수 있는 영역 및 리전에서만 사용할 수 있습니다.
Confidential GKE Node는 Container-Optimized OS에 사용될 수 있으며, Container-Optimized OS(
cos_containerd
)에 컨테이너화될 수 있습니다.
시작하기 전에
시작하기 전에 다음 태스크를 수행했는지 확인합니다.
- Google Kubernetes Engine API를 사용 설정합니다. Google Kubernetes Engine API 사용 설정
- 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 초기화합니다. 이전에 gcloud CLI를 설치한 경우
gcloud components update
를 실행하여 최신 버전을 가져옵니다.
클러스터에서 Confidential GKE Node 사용 설정
gcloud CLI나 Google Cloud 콘솔을 사용하여 Confidential GKE Node가 사용 설정된 새 클러스터를 만들 수 있습니다. 클러스터 수준에서 Confidential GKE Node를 사용 설정하면 클러스터의 모든 노드가 컨피덴셜 VM이 됩니다.
gcloud
새 클러스터를 만들 때 gcloud CLI에서 --enable-confidential-nodes
옵션을 지정합니다.
gcloud container clusters create CLUSTER_NAME \
--machine-type=MACHINE_TYPE \
--enable-confidential-nodes
다음을 바꿉니다.
콘솔
Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.
add_box만들기를 클릭합니다.
표준 섹션에서 구성을 클릭합니다.
탐색창의 클러스터에서 보안을 클릭합니다.
Confidential GKE Node 사용 설정 체크박스를 선택합니다.
필요에 따라 클러스터를 구성합니다.
만들기를 클릭합니다.
리전별 클러스터 만들기에 대한 자세한 내용은 클러스터 만들기를 참조하세요.
Confidential GKE Node로 클러스터를 만든 후 이 클러스터에 생성되는 모든 노드 풀은 컨피덴셜 노드만 사용할 수 있습니다. Confidential GKE Node가 사용 설정된 클러스터에 일반 노드 풀을 만들 수 없습니다. 또한 클러스터 수준에서 Confidential GKE Node를 사용 설정하면 개별 노드 풀에서 Confidential GKE Node를 중지할 수 없습니다.
노드 풀에서 Confidential GKE Node 사용 설정
클러스터 수준에서 Confidential GKE Node가 중지된 경우 특정 노드 풀에서 Confidential GKE Node를 사용 설정할 수 있습니다.
새 노드 풀 만들기
Confidential GKE Node를 사용 설정하여 새 노드 풀을 만들려면 다음 명령어를 실행합니다.
gcloud container node-pools create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--machine-type=MACHINE_TYPE \
--enable-confidential-nodes
다음을 바꿉니다.
- NODE_POOL_NAME: 새 노드 풀의 이름입니다.
- CLUSTER_NAME: 클러스터의 이름입니다.
- MACHINE_TYPE: 노드 풀의 머신 유형으로, N2D 머신 유형 또는 C2D 머신 유형이어야 합니다.
기존 노드 풀 업데이트
N2D 머신 유형 또는 C2D 머신 유형을 사용하는 기존 노드 풀에서 Confidential GKE Node를 사용 설정할 수 있습니다. 다음 명령어를 실행합니다.
gcloud container node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--enable-confidential-nodes
다음을 바꿉니다.
- NODE_POOL_NAME: 노드 풀의 이름입니다.
- CLUSTER_NAME: 클러스터 이름입니다.
Confidential GKE Node가 사용 설정되어 있는지 확인
클러스터
gcloud CLI 또는 Google Cloud 콘솔을 사용해서 클러스터가 Confidential GKE Node를 사용 중인지 확인할 수 있습니다.
gcloud
클러스터를 설명합니다.
gcloud container clusters describe CLUSTER_NAME
Confidential GKE Node가 사용 설정되면 명령어 출력에 다음 줄이 포함됩니다.
confidentialNodes:
enabled: true
콘솔
Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.
검사할 클러스터의 이름을 클릭합니다.
보안의 Confidential GKE Node 필드에서 Confidential GKE Node가 사용 설정되어 있는지 확인합니다.
노드 풀
노드 풀에서 Confidential GKE Node를 사용 중인지 확인하려면 다음 명령어를 실행합니다.
gcloud container node-pools describe NODE_POOL_NAME \
--cluster=CLUSTER_NAME
Confidential GKE Node가 사용 설정되면 출력은 다음과 비슷합니다.
confidentialNodes:
enabled: true
노드
특정 노드의 기밀성을 검증하려면 다음을 수행하면 됩니다.
Confidential GKE Node에서 애플리케이션 실행
컨피덴셜 컴퓨팅에 대한 Google의 접근 방식은 기존 애플리케이션에 대해 힘들이지 않고 리프트 앤 시프트를 사용 설정하는 것입니다. 오늘 실행하는 GKE 워크로드가 코드 변경 없이 Confidential GKE Node에서 실행될 수 있습니다.
선택적으로 워크로드가 Confidential GKE Node 클러스터에서만 실행되도록 선언적으로 표시하려면 cloud.google.com/gke-confidential-nodes
노드 선택기를 사용할 수 있습니다.
다음은 이 선택기를 사용하는 예시 포드 사양입니다.
apiVersion: v1
kind: Pod
spec:
containers:
- name: my-confidential-app
image: us-docker.pkg.dev/myproject/myrepo/my-confidential-app
nodeSelector:
cloud.google.com/gke-confidential-nodes: "true"
조직 정책 제약조건 설정
조직 정책 제약조건을 정의하여 조직 전체에서 생성된 모든 VM 리소스가 컨피덴셜 VM 인스턴스인지 확인할 수 있습니다.
GKE의 경우 비컨피덴셜 컴퓨팅 제한 제약조건을 맞춤설정하여 모든 새 클러스터가 Confidential GKE Node를 사용 설정한 상태로 생성되도록 할 수 있습니다. 조직 정책 제약조건을 적용할 때 거부 목록에 container.googleapis.com
API 서비스 이름을 추가합니다. 예를 들면 다음과 같습니다.
gcloud resource-manager org-policies deny \
constraints/compute.restrictNonConfidentialComputing compute.googleapis.com container.googleapis.com \
--project=PROJECT_ID
PROJECT_ID를 프로젝트 ID로 바꿉니다.
제한사항
Confidential GKE Node에는 다음과 같은 제한사항이 있습니다.
- Compute Engine 컨피덴셜 VM 인스턴스에 대한 모든 제한사항이 Confidential GKE Node에 적용됩니다.
- C2D 머신 유형을 포함하는 Confidential GKE Node는 GKE 버전 1.24 이상에서만 노드 자동 프로비저닝을 사용할 수 있습니다.
- Confidential GKE Node는 제어 영역이 GKE 버전 1.22 이상을 실행하는 경우 영구 디스크에서 지원하는 PersistentVolumes만 지원합니다. 자세한 내용은 Compute Engine Persistent Disk CSI 드라이버 사용을 참조하세요.
- Confidential GKE Node는 GPU와 호환되지 않습니다.
- Confidential GKE Node는 단독 테넌트 노드와 호환되지 않습니다.
- Confidential GKE Node는 로컬 SSD에서 임시 스토리지 사용만 지원하고 일반적으로 로컬 SSD 사용은 지원하지 않습니다.
- Container-Optimized OS 노드만 지원됩니다. Ubuntu 및 Windows 노드는 지원되지 않습니다.
- Autopilot 클러스터는 Confidential GKE Node를 지원하지 않습니다.
라이브 마이그레이션 제한사항
특정 Compute Engine 컨피덴셜 VM 머신 유형은 라이브 마이그레이션을 지원하여 호스트 유지보수 이벤트 시 발생할 수 있는 워크로드 중단을 최소화합니다. 라이브 마이그레이션은 다음 GKE 버전에서 수행됩니다.
- 1.27.10-gke.1218000 이상
- 1.28.6-gke.1393000 이상
- 1.29.1-gke.1621000 이상
라이브 마이그레이션이 추가될 때 노드 풀에서 이미 지원되는 버전을 실행 중이었다면 동일한 버전 또는 다른 지원되는 버전으로 노드 풀을 수동으로 업그레이드합니다. 노드를 업그레이드하면 노드가 다시 생성되고 새 노드에서 라이브 마이그레이션이 사용 설정됩니다.
라이브 마이그레이션을 지원하는 Compute Engine 머신 유형에 대한 자세한 내용은 지원되는 구성을 참조하세요.
라이브 마이그레이션을 지원하지 않는 노드에서 호스트 유지보수 이벤트가 발생하면 노드가 NotReady
상태로 전환됩니다. 포드를 실행하면 노드가 다시 준비될 때까지 중단이 발생합니다. 유지보수하는 데 5분이 넘으면 GKE가 다른 노드에서 포드를 다시 만들려고 할 수 있습니다.
Confidential GKE Node 사용 중지
Confidential GKE Node를 사용 설정한 노드 풀에서만 Confidential GKE Node를 중지할 수 있습니다. Confidential GKE Node로 클러스터를 만든 경우에는 이 기능을 중지할 수 없습니다. 노드 풀에서 Confidential GKE Node를 중지하려면 다음 명령어를 실행합니다.
gcloud container node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--no-enable-confidential-nodes
다음 단계
- 컨피덴셜 VM에 대해 자세히 알아보기
- 노드 이미지 자세히 알아보기
- Google Cloud 저장 데이터 암호화 자세히 알아보기
- Google Cloud 전송 중인 데이터 암호화 자세히 알아보기
- 고객 관리 암호화 키(CMEK) 자세히 알아보기
- 애플리케이션 레이어 보안 비밀 암호화 자세히 알아보기