Compute Engine을 사용하여 고객 관리 암호화 키 (CMEK)로 TPU VM 부팅 디스크 암호화

기본적으로 Cloud TPU는 저장 중인 고객 콘텐츠를 암호화합니다. Cloud TPU는 사용자가 추가 작업을 하지 않고도 암호화를 자동 처리합니다. 이 옵션을 Google 기본 암호화라고 합니다.

암호화 키를 제어하려면 Cloud KMS에서 Cloud TPU가 포함된 고객 관리 암호화 키(CMEK) 통합 서비스와 함께 CMEK를 사용하면 됩니다. Cloud KMS 키를 사용하면 보호 수준, 위치, 순환 일정, 사용 및 액세스 권한, 암호화 경계를 관리할 수 있습니다. Cloud KMS를 사용하면 감사 로그를 보고 키 수명 주기를 제어할 수도 있습니다. Google에서 데이터를 보호하는 대칭 키 암호화 키(KEK)를 소유하고 관리하는 대신 사용자가 Cloud KMS에서 이러한 키를 제어하고 관리할 수 있습니다.

CMEK로 리소스를 설정한 후 Cloud TPU 리소스에 액세스하는 방법은 Google 기본 암호화를 사용한 액세스와 유사합니다. 암호화 옵션에 대한 자세한 내용은 고객 관리 암호화 키(CMEK)를 참조하세요.

CMEK를 사용하려면 키링을 만드세요. TPU VM 또는 슬라이스를 만드는 위치와 동일한 위치에 키링을 만듭니다. 예를 들어 us-central1-a 영역의 TPU VM은 us-central1 리전에 있는 키만 사용할 수 있습니다.

다음으로 키링에 키를 만듭니다. CMEK를 만든 후 Compute Engine 서비스 계정이 키에 액세스할 수 있도록 합니다.

키 사용 권한 부여

Google Cloud 프로젝트의 Compute Engine 서비스 에이전트에 Cloud KMS 키에 대한 Cloud KMS CryptoKey 암호화/복호화(roles/cloudkms.cryptoKeyEncrypterDecrypter) IAM 역할을 부여합니다. 이 역할을 부여하면 Compute Engine 서비스에서 암호화 키에 액세스하여 암호화 키를 사용할 수 있습니다.

Compute Engine 서비스 에이전트에 roles/cloudkms.cryptoKeyEncrypterDecrypter 역할을 부여하려면 다음 옵션 중 하나를 선택합니다.

gcloud

다음 명령어를 실행합니다.

gcloud kms keys add-iam-policy-binding KEY_NAME \
    --location LOCATION \
    --keyring RING_NAME \
    --member serviceAccount:service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \
    --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
    --project KEY_PROJECT_ID

다음을 바꿉니다.

  • KEY_NAME: 키의 이름입니다.
  • LOCATION: 키링을 만든 위치입니다.
  • RING_NAME: 키링의 이름입니다.
  • PROJECT_NUMBER: Google Cloud 프로젝트 번호.
  • KEY_PROJECT_ID: 키 프로젝트 ID입니다.

콘솔

  1. Google Cloud 콘솔에서 키 관리 페이지로 이동합니다.

    키 관리로 이동

  2. 키가 포함된 키링 이름을 클릭합니다.

  3. 수정할 키 이름을 클릭합니다.

  4. 권한을 클릭합니다.

  5. 액세스 권한 부여를 클릭합니다. 액세스 권한 부여 창이 열립니다.

  6. 새 주 구성원 필드에 Compute Engine 서비스 에이전트 이름을 입력합니다.

    service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com
    

    PROJECT_NUMBER를 Google Cloud 프로젝트 번호로 바꿉니다.

  7. 역할 선택 메뉴에서 Cloud KMS CryptoKey 암호화/복호화를 선택합니다.

  8. 저장을 클릭합니다.

CMEK로 TPU VM 만들기

--boot-disk-kms-key 플래그를 사용하여 관리형 인스턴스 그룹 (MIG)의 TPU VM 또는 인스턴스 템플릿을 만들 때 CMEK를 지정할 수 있습니다.

CMEK로 단일 TPU VM 인스턴스 만들기

단일 TPU VM을 만들 때 CMEK를 지정하려면 gcloud compute instances create 명령어에 --boot-disk-kms-key 플래그를 사용합니다.

  gcloud compute instances create TPU_NAME \
    --machine-type=MACHINE_TYPE \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT \
    --zone=ZONE \
    --maintenance-policy=TERMINATE \
    --boot-disk-kms-key=projects/KEY_PROJECT_ID/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME

다음 자리표시자를 바꿉니다.

  • TPU_NAME: TPU VM의 이름입니다.
  • MACHINE_TYPE: TPU VM의 머신 유형입니다(예: ct6e-standard-8t).
  • IMAGE_FAMILY: TPU VM의 OS 이미지 계열입니다. 특정 OS 버전을 설치하려면 --image 플래그를 사용합니다. OS 이미지에 대한 자세한 내용은 OS 이미지를 참고하세요.
  • IMAGE_PROJECT: OS 이미지가 포함된 프로젝트입니다. TPU 이미지의 경우 ubuntu-os-accelerator-images입니다.
  • ZONE: TPU VM의 영역입니다(예: us-central1-b).
  • KEY_PROJECT_ID: 암호화 키가 포함된 프로젝트
  • REGION: 키링을 만든 리전
  • RING_NAME: 키링의 이름입니다.
  • KEY_NAME: 키의 이름입니다.

CMEK를 사용하여 단일 호스트 슬라이스로 MIG 만들기

MIG와 함께 CMEK를 사용하려면 인스턴스 템플릿을 만들 때 키를 지정하세요.

  1. --boot-disk-kms-key 플래그를 사용하여 인스턴스 템플릿을 만듭니다.

    gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
        --machine-type=MACHINE_TYPE \
        --maintenance-policy=TERMINATE \
        --image-family=IMAGE_FAMILY \
        --image-project=IMAGE_PROJECT \
        --boot-disk-kms-key=projects/KEY_PROJECT_ID/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
    

    다음 자리표시자를 바꿉니다.

    • INSTANCE_TEMPLATE_NAME: 인스턴스 템플릿의 이름입니다.
    • MACHINE_TYPE: TPU VM의 머신 유형입니다(예: ct6e-standard-8t).
    • IMAGE_FAMILY: TPU VM의 OS 이미지 계열입니다. 특정 OS 버전을 설치하려면 --image 플래그를 사용합니다. OS 이미지에 대한 자세한 내용은 OS 이미지를 참고하세요.
    • IMAGE_PROJECT: OS 이미지가 포함된 프로젝트입니다. TPU 이미지의 경우 ubuntu-os-accelerator-images입니다.
    • KEY_PROJECT_ID: 암호화 키가 포함된 프로젝트
    • REGION: 키링을 만든 리전
    • RING_NAME: 키링의 이름입니다.
    • KEY_NAME: 키의 이름입니다.
  2. 템플릿을 사용하여 MIG를 만듭니다.

    gcloud compute instance-groups managed create MIG_NAME \
        --size=MIG_SIZE \
        --template=INSTANCE_TEMPLATE_NAME \
        --zone=ZONE \
        --size=MIG_SIZE
    

    다음 자리표시자를 바꿉니다.

    • MIG_NAME: MIG의 이름입니다.
    • MIG_SIZE: MIG의 TPU VM 수입니다.
    • INSTANCE_TEMPLATE_NAME: 사용할 인스턴스 템플릿의 이름입니다.
    • ZONE: TPU VM의 영역입니다(예: us-central1-b).
    • MIG_SIZE: MIG의 TPU VM 수입니다. 단일 호스트 TPU VM의 경우 크기를 1로 설정합니다.

CMEK를 사용하여 멀티 호스트 슬라이스가 있는 MIG 만들기

멀티 호스트 슬라이스 MIG를 만들 때는 인스턴스 템플릿에서 암호화 키를 지정합니다.

  1. 인스턴스 템플릿을 만듭니다.

    gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME
        --machine-type=MACHINE_TYPE \
        --maintenance-policy=TERMINATE \
        --image-family=IMAGE_FAMILY \
        --image-project=IMAGE_PROJECT \
        --boot-disk-kms-key=projects/KEY_PROJECT_ID/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
    

    다음 자리표시자를 바꿉니다.

    • INSTANCE_TEMPLATE_NAME: 인스턴스 템플릿의 이름입니다.
    • MACHINE_TYPE: TPU VM의 머신 유형입니다(예: ct6e-standard-8t).
    • IMAGE_FAMILY: TPU VM의 OS 이미지 계열입니다. 특정 OS 버전을 설치하려면 --image 플래그를 사용합니다. OS 이미지에 대한 자세한 내용은 OS 이미지를 참고하세요.
    • IMAGE_PROJECT: OS 이미지가 포함된 프로젝트입니다. TPU 이미지의 경우 ubuntu-os-accelerator-images입니다.
    • KEY_PROJECT_ID: 암호화 키가 포함된 프로젝트
    • REGION: 키링을 만든 리전
    • RING_NAME: 키링의 이름입니다.
    • KEY_NAME: 키의 이름입니다.
  2. 워크로드 정책을 만듭니다.

    다음 명령어는 워크로드 정책을 만듭니다.

    gcloud compute resource-policies create workload WORKLOAD_POLICY_NAME \
    --type=high-throughput \
    --accelerator-topology=TOPOLOGY
    

    다음 자리표시자를 바꿉니다.

    • WORKLOAD_POLICY_NAME: 워크로드 정책의 이름입니다.
    • TOPOLOGY: TPU VM의 토폴로지입니다(예: 4x4x8).
  3. MIG를 만듭니다.

    gcloud compute instance-groups managed create MIG_NAME \
        --size=MIG_SIZE \
        --target-size-policy-mode=bulk \
        --template=INSTANCE_TEMPLATE_NAME \
        --zone=ZONE \
        --default-action-on-vm-failure=do-nothing \
        --workload-policy=WORKLOAD_POLICY_NAME
    

    다음 자리표시자를 바꿉니다.

    • MIG_NAME: MIG 이름입니다.
    • MIG_SIZE: MIG의 VM 수입니다. 이 값은 워크로드 정책에 지정된 토폴로지에 대해 검증됩니다.
    • INSTANCE_TEMPLATE_NAME: 인스턴스 템플릿의 이름입니다.
    • ZONE: MIG의 영역입니다.
    • WORKLOAD_POLICY_NAME: 워크로드 정책의 이름입니다.

GKE를 사용하여 CMEK로 TPU VM을 만드는 방법에 대한 자세한 내용은 GKE 문서의 고객 관리 암호화 키 사용을 참조하세요.

삭제되거나 취소된 CMEK

CMEK가 취소되거나 삭제되면 삭제되거나 취소된 CMEK로 암호화된 부팅 디스크를 사용하는 TPU VM은 자동으로 종료되지 않습니다. VM을 종료하거나 다시 시작할 때까지 TPU VM은 암호화된 부팅 디스크의 데이터에 계속 액세스합니다. 이를 통해 취소되거나 삭제된 키에 대한 액세스 권한을 복원하는 경우 데이터를 복구할 수 있습니다. 키를 다시 사용 설정하면 TPU VM을 시작하거나 복구할 수 있으며 부팅 디스크가 성공적으로 복호화되고 로드됩니다.