고객 관리 암호화 키(CMEK) 사용

기본적으로 Google Cloud는 Google에서 관리하는 암호화 키를 사용하여 자동으로 저장 데이터를 암호화합니다. 데이터 보호 키와 관련된 특정 규정 또는 규정 요구사항이 있는 경우 학습 작업에 고객 관리 암호화 키(CMEK)를 사용할 수 있습니다.

이 가이드의 다음 섹션에서 CMEK를 AI Platform Training과 함께 사용할 때의 이점에 대해 자세히 알아볼 수 있습니다. CMEK를 사용 설정하는 시기와 이유를 포함한 일반적인 CMEK에 대한 자세한 내용은 Cloud Key Management Service 문서를 참조하세요.

이 가이드에서는 AI Platform Training에 CMEK를 사용할 때의 이점을 설명하고 CMEK를 사용하도록 학습 작업을 구성하는 방법을 안내합니다.

AI Platform Training용 CMEK 이해

다음 섹션에서는 학습 작업에 CMEK를 구성하기 전에 알아야 하는 AI Platform Training용 CMEK에 대한 기본 정보를 설명합니다.

CMEK의 이점

일반적으로 CMEK는 데이터를 암호화하는 데 사용되는 키를 완전히 제어해야 하는 경우에 가장 유용합니다. CMEK를 사용하면 Cloud KMS 내에서 키를 관리할 수 있습니다. 예를 들어 키를 순환 또는 사용 중지하거나 Cloud KMS API를 사용하여 순환 일정을 설정할 수 있습니다. CMEK를 사용 설정하는 시기와 이유를 포함한 일반적인 CMEK에 대한 자세한 내용은 Cloud KMS 문서를 참조하세요.

학습 작업을 실행하면 AI Platform Training에서 관리하는 하나 이상의 가상 머신(VM) 인스턴스에서 코드가 실행됩니다. AI Platform Training에 CMEK를 사용 설정하면 Google에서 관리하는 키 대신 지정한 키가 이러한 VM의 부팅 디스크에 있는 데이터를 암호화하는 데 사용됩니다. CMEK 키는 다음과 같은 종류의 데이터를 암호화합니다.

  • VM의 학습 코드 사본
  • 학습 코드에 의해 로드되는 모든 데이터
  • 학습 코드에 의해 로컬 디스크에 저장되는 모든 임시 데이터

CMEK 키는 작업 이름 및 리전과 같이 학습 작업과 관련된 메타데이터를 암호화하지 않습니다. 학습 작업과 관련된 메타데이터는 항상 Google의 기본 암호화 메커니즘을 사용하여 암호화됩니다.

다른 Google Cloud 제품에서 CMEK 사용

AI Platform Training용 CMEK를 구성해도 AI Platform Training과 함께 사용하는 다른 Google Cloud 제품에 대해 CMEK가 자동으로 구성되지는 않습니다. CMEK를 사용하여 다른 Google Cloud 제품의 데이터를 암호화하려면 추가 구성이 필요합니다. 예를 들면 다음과 같습니다.

제한사항

다음과 같은 상황에서는 CMEK를 AI Platform Training에 사용할 수 없습니다.

  • TPU를 사용하는 학습 작업에서는 CMEK를 사용할 수 없습니다.
  • 2017년 이전에 AI Platform Training 및 Prediction API를 사용하기 시작한 경우 CMEK로 학습 작업을 제출하면 호환되지 않는 레거시 인증 메커니즘을 설명하는 오류가 발생할 수 있습니다. 이 경우 새 Google Cloud 프로젝트를 만들거나 다른 프로젝트를 선택하여 AI Platform Training 작업을 실행합니다.

학습 작업에 CMEK 구성

다음 섹션에서는 Cloud Key Management Service에서 키링 및 키를 만들고 AI Platform Training에 암호화 및 복호화 권한을 부여하고 CMEK를 사용하는 학습 작업을 만드는 방법을 설명합니다.

시작하기 전에

이 가이드에서는 학습에 CMEK를 구성하기 위해 다음과 같은 두 개의 개별 Google Cloud 프로젝트를 사용한다고 가정합니다.

  • 암호화 키를 관리하기 위한 프로젝트('Cloud KMS 프로젝트'라고 함)
  • AI Platform Training에 액세스하고 Cloud Storage에서 학습 데이터 또는 출력을 관리하며 사용 사례에 필요한 다른 Google Cloud 제품과 상호작용하는 프로젝트( 'AI Platform 프로젝트'라고 함)

이 권장 설정은 업무 분리를 지원합니다.

또는 전체 가이드에 단일 Google Cloud 프로젝트를 사용할 수 있습니다. 이를 위해 Cloud Platform KMS 프로젝트를 참조하는 다음 작업과 AI Platform 프로젝트를 참조하는 작업 모두에 동일한 프로젝트를 사용합니다.

Cloud KMS 프로젝트 설정

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  4. Enable the Cloud KMS API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  7. Enable the Cloud KMS API.

    Enable the API

AI Platform 프로젝트 설정

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  4. Enable the AI Platform Training & Prediction API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  7. Enable the AI Platform Training & Prediction API.

    Enable the API

Google Cloud CLI 설정

gcloud CLI는 이 가이드의 일부 단계에 필요하며 다른 경우에는 선택 사항입니다.

Install the Google Cloud CLI, then initialize it by running the following command:

gcloud init

키링 및 키 만들기

키링과 키를 만들려면 Cloud KMS 가이드에서 대칭 키 만들기를 따르세요. 키링을 만들 때 AI Platform Training을 지원하는 리전키링의 위치로 지정합니다. AI Platform Training은 학습 작업과 키가 동일한 리전을 사용할 때만 CMEK를 지원합니다. 키링에 이중 리전, 멀티 리전 또는 전역 위치를 지정해서는 안됩니다.

Cloud KMS 프로젝트에서 키링과 키를 만들어야 합니다.

AI Platform Training 권한 부여

CMEK를 학습 작업에 사용하려면 키를 사용하여 데이터를 암호화하고 복호화하는 권한을 AI Platform Training에 부여해야 합니다. AI Platform Training은 서비스 에이전트를 사용하여 학습 작업을 실행합니다. 이 서비스 에이전트는 다음 형식의 이메일 주소로 식별할 수 있습니다.

service-AI_PLATFORM_PROJECT_NUMBER@cloud-ml.google.com.iam.gserviceaccount.com

AI Platform 프로젝트에 적합한 서비스 에이전트를 찾으려면 Google Cloud 콘솔의 IAM 페이지로 이동하여 AI_PLATFORM_PROJECT_NUMBER 변수를 변경하는 AI Platform 프로젝트의 프로젝트 번호와 함께 이 이메일 주소 형식과 일치하는 구성원을 찾습니다. 또한 이름이 Google Cloud ML Engine Service Agent인 서비스 에이전트도 있습니다.

IAM 페이지로 이동

이 서비스 에이전트의 이메일 주소를 기록해두고 다음 단계에서 키를 사용해 데이터를 암호화 및 복호화할 수 있는 권한을 부여하는 데 이 계정을 사용합니다. Google Cloud 콘솔을 사용하거나 Google Cloud CLI를 사용하여 권한을 부여할 수 있습니다.

Google Cloud Console

  1. Google Cloud Console에서 암호화 키 페이지로 이동하여 Cloud KMS 프로젝트를 선택합니다.

    암호화 키 페이지로 이동

  2. 키링 세부정보 페이지로 이동하려면 본 가이드의 이전 섹션에서 만든 키링의 이름을 클릭합니다.

  3. 이 가이드의 이전 섹션에서 만든 키의 체크박스를 선택합니다. 키 이름으로 라벨이 지정된 정보 패널이 아직 열려 있지 않은 경우 정보 패널 표시를 클릭합니다.

  4. 정보 패널에서 구성원 추가를 클릭하여 'KEY_NAME'에 구성원 추가 대화상자를 엽니다. 이 대화상자에서 다음 작업을 수행합니다.

    1. 새 구성원 상자에 이전 섹션에서 기록해둔 서비스 계정 이메일 주소(service-AI_PLATFORM_PROJECT_NUMBER@cloud-ml.google.com.iam.gserviceaccount.com)를 입력합니다.
    2. 역할 선택 드롭다운 목록에서 Cloud KMS를 클릭한 다음 Cloud KMS CryptoKey Encrypter/Decrypter 역할을 선택합니다.

    3. 저장을 클릭합니다.

gcloud

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

gcloud kms keys add-iam-policy-binding KEY_NAME \
  --keyring=KEY_RING_NAME \
  --location=REGION \
  --project=KMS_PROJECT_ID \
  --member=serviceAccount:service-AI_PLATFORM_PROJECT_NUMBER@cloud-ml.google.com.iam.gserviceaccount.com \
  --role=roles/cloudkms.cryptoKeyEncrypterDecrypter

이 명령어에서 다음 자리표시자를 바꿉니다.

  • KEY_NAME: 이 가이드의 이전 섹션에서 만든 키의 이름입니다.
  • KEY_RING_NAME: 이 가이드의 이전 섹션에서 만든 키링입니다.
  • REGION: 키링을 만든 리전입니다.
  • KMS_PROJECT_ID: Cloud KMS 프로젝트의 ID입니다.
  • AI_PLATFORM_PROJECT_NUMBER: 이전 섹션에서 서비스 계정 이메일 주소의 일부로 기록해 둔 AI Platform 프로젝트의 프로젝트 번호입니다.

CMEK를 사용한 학습 작업 만들기

이제 키를 사용하여 데이터를 암호화하고 복호화할 수 있는 권한을 AI Platform Training에 부여했으므로 이 키를 사용하여 임시 데이터를 암호화하는 학습 작업을 만들 수 있습니다. 학습 작업을 만들 때 작업의 trainingInput 필드에 encryptionConfig 필드를 지정합니다.

다음 예시에서는 gcloud CLI를 사용하여 이 작업을 수행하는 방법을 보여줍니다. 현재 Google Cloud 콘솔에서 CMEK를 사용하여 학습 작업을 만들 수 없습니다.

이 예시에서는 trainer 디렉터리의 로컬 파일 시스템에 모듈 이름이 task학습 애플리케이션이 있다고 가정합니다.

  1. 다음이 포함된 config.yaml 구성 파일을 만듭니다.

    trainingInput:
      encryptionConfig:
        kmsKeyName: projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
    

    구성 파일에서 다음 자리표시자를 바꿉니다.

    • KMS_PROJECT_ID: Cloud KMS 프로젝트의 ID입니다.
    • KEY_RING_NAME: 키링의 이름입니다.
    • KEY_NAME: 키의 이름입니다.
  2. 학습 작업을 만들려면 다음 명령어를 실행합니다.

    gcloud ai-platform jobs submit training JOB_ID \
      --config=config.yaml \
      --job-dir=JOB_DIR \
      --module-name=trainer.task \
      --package-path=trainer \
      --python-version=3.7 \
      --region=REGION \
      --runtime-version=2.11 \
      --scale-tier=basic
    

    이 명령어에서 다음 자리표시자를 바꿉니다.

    • JOB_ID: 작업에 대해 선택하는 이름입니다.
    • JOB_DIR: 학습 애플리케이션이 업로드되는 Cloud Storage 디렉터리의 경로입니다. 학습 작업은 학습 중에도 이 디렉터리를 사용하여 출력을 저장할 수 있습니다. 편의를 위해 AI Platform 프로젝트의 Cloud Storage 버킷에 있는 디렉터리를 선택합니다.

    • REGION: 키링을 만든 리전과 학습 작업을 만들려는 리전입니다.

    성공하면 명령어가 다음과 같은 출력을 생성합니다.

    Job [JOB_ID] submitted successfully.
    Your job is still active. You may view the status of your job with the command
    
      $ gcloud ai-platform jobs describe JOB_ID
    
    or continue streaming the logs with the command
    
      $ gcloud ai-platform jobs stream-logs JOB_ID
    jobId: JOB_ID
    state: QUEUED
    

    이제 학습 작업을 모니터링할 수 있습니다.

regionencryptionConfig 필드 외에 니즈에 맞는 학습 작업 구성을 맞춤설정할 수 있습니다. 학습용 커스텀 컨테이너를 사용할 수도 있습니다.

다음 단계