Confidential Google Kubernetes Engine 노드로 사용 중인 워크로드 데이터 암호화


이 페이지에서는 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 사용 중지
  • 클러스터에서 Confidential GKE Node 사용 중지
  • 기존 클러스터에서 Confidential GKE Node 사용 설정
노드 풀 수준
  • 새 노드 풀 만들기
  • 기존 노드 풀 업데이트
이 기능이 클러스터 수준에서 사용 중지된 경우에만 노드 풀에 Confidential GKE Node를 구성할 수 있습니다.

가격 책정

Compute Engine 컨피덴셜 VM 비용 이외에 Confidential GKE Node 배포에는 추가 비용이 들지 않습니다. 하지만 Confidential GKE Node는 표준 노드보다 시작 시 로그 데이터를 약간 더 생성할 수 있습니다. 로그 가격 책정에 대한 자세한 내용은 Google Cloud Observability 가격 책정을 참조하세요.

사용 가능 여부

Confidential GKE Node는 다음과 같은 경우에 제공됩니다.

시작하기 전에

시작하기 전에 다음 태스크를 수행했는지 확인합니다.

  • 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

다음을 바꿉니다.

  • CLUSTER_NAME: 새 클러스터의 이름
  • MACHINE_TYPE: 클러스터의 기본 노드 풀에 대한 머신 유형으로, N2D 머신 유형 또는 C2D 머신 유형이어야 합니다.

콘솔

  1. Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. 만들기를 클릭합니다.

  3. 표준 섹션에서 구성을 클릭합니다.

  4. 탐색창의 클러스터에서 보안을 클릭합니다.

  5. Confidential GKE Node 사용 설정 체크박스를 선택합니다.

  6. 필요에 따라 클러스터를 구성합니다.

  7. 만들기를 클릭합니다.

리전별 클러스터 만들기에 대한 자세한 내용은 클러스터 만들기를 참조하세요.

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

콘솔

  1. Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. 검사할 클러스터의 이름을 클릭합니다.

  3. 보안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

노드

특정 노드의 기밀성을 검증하려면 다음을 수행하면 됩니다.

  1. AMD SEV가 사용 설정되었는지 검증
  2. Cloud Monitoring을 사용하여 컨피덴셜 VM의 유효성 검사

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에는 다음과 같은 제한사항이 있습니다.

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

다음 단계