Cloud KMS를 사용하여 템플릿 파라미터 암호화

이 페이지에서는 Cloud KMS에서 암호화 키를 사용하여 Google에서 제공하는 템플릿 파라미터의 민감한 정보를 암호화하는 방법을 설명합니다.

개요

Google에서 제공하는 일부 템플릿을 사용하면 사용자 이름, 비밀번호, JDBC 연결 문자열, API 키와 같은 템플릿 파라미터의 민감한 정보를 암호화할 수 있습니다. 지원되는 경우 이러한 템플릿에는 다음과 같은 Cloud KMS 암호화 키를 지정하는 파라미터가 포함됩니다.

  • KMSEncryptionKey
  • tokenKMSEncryptionKey
  • apiKeyKMSEncryptionKey

이러한 템플릿에서 Cloud KMS 암호화 키를 사용하려면 다음 단계를 수행합니다.

  1. Dataflow 작업자 서비스 계정Cloud KMS CryptoKey 복호화 역할을 부여합니다.
  2. 암호화 키를 만듭니다.
  3. 키를 사용하여 데이터를 암호화합니다.
  4. 암호화된 데이터를 Base64로 인코딩합니다.
  5. 템플릿을 실행할 때 암호화 키를 지정하고 암호화된 파라미터 값을 사용합니다.

암호화 키를 지정하는 경우에는 암호화를 지원하는 모든 파라미터를 암호화해야 합니다. 암호화할 수 있는 파라미터는 특정 템플릿의 문서를 참조하세요.

다음 예시에서는 MySQL to BigQuery 템플릿을 사용합니다.

  1. 키링을 만듭니다.

    gcloud kms keyrings create "KEY_RING_NAME" \
     --location "global"
    
  2. 암호화 키를 만듭니다.

    gcloud kms keys create "KEY_NAME" \
     --location "global" \
     --keyring "KEY_RING_NAME" \
     --purpose "encryption"
    
  3. 사용자 이름, 비밀번호, JDBC 연결 문자열을 암호화하고 base64로 인코딩합니다.

    export USER_NAME=`echo -n "USER_NAME" \
     | gcloud kms encrypt --key=quickstart --keyring=test --location=global --plaintext-file=- --ciphertext-file=- \
     | base64 -w 0`
    export PASSWORD=`echo -n "PASSWORD" \
     | gcloud kms encrypt --key=quickstart --keyring=test --location=global --plaintext-file=- --ciphertext-file=- \
     | base64 -w 0`
    export CONNECTION_STRING=`echo -n "CONNECTION_STRING" \
     | gcloud kms encrypt --key=quickstart --keyring=test --location=global --plaintext-file=- --ciphertext-file=- \
     | base64 -w 0`
    
  4. 템플릿을 실행합니다.

    gcloud dataflow flex-template run mysql-job \
     --project=PROJECT_ID \
     --region=us-central1 \
     --template-file-gcs-location=gs://dataflow-templates-us-central1/latest/flex/MySQL_to_BigQuery \
     --parameters \
    connectionURL="$CONNECTION_STRING",\
    query="SOURCE_SQL_QUERY",\
    outputTable=PROJECT_ID:DATASET.TABLE_NAME,\
    bigQueryLoadingTemporaryDirectory=CLOUD_STORAGE_PATH,\
    username="$USER_NAME",\
    password="$PASSWORD",\
    KMSEncryptionKey=projects/PROJECT_ID/locations/global/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
    

문제 해결

이 섹션에는 템플릿 파라미터 암호화 문제 해결 정보가 포함되어 있습니다.

권한 거부됨

작업을 실행하면 작업 로그에 다음과 유사한 PERMISSION_DENIED 오류가 표시됩니다.

PERMISSION_DENIED: Permission cloudkms.cryptoKeyVersions.useToDecrypt denied on
resource RESOURCE_PATH (or it may not exist)

데이터를 복호화하려면 Dataflow 작업자 서비스 계정에 암호화 키에 대한 cloudkms.cryptoKeyVersions.useToDecrypt 권한이 필요합니다. 작업자 서비스 계정에 Cloud KMS CryptoKey 복호화 역할이 있는지 확인합니다. 자세한 내용은 Dataflow 보안 및 권한을 참조하세요.

다음 단계