이 페이지에서는 Cloud KMS에서 암호화 키를 사용하여 Google에서 제공하는 템플릿 매개변수의 민감한 정보를 암호화하는 방법을 설명합니다.
개요
일부 Google 제공 템플릿을 사용하면 사용자 이름, 비밀번호, JDBC 연결 문자열, API 키와 같은 템플릿 매개변수의 민감한 데이터를 암호화할 수 있습니다. 지원되는 경우 이러한 템플릿에는 Cloud KMS 암호화 키를 지정하는 매개변수가 포함됩니다(예:
KMSEncryptionKey
tokenKMSEncryptionKey
apiKeyKMSEncryptionKey
이러한 템플릿에서 Cloud KMS 암호화 키를 사용하려면 다음 단계를 따르세요.
- Dataflow 워커 서비스 계정에 Cloud KMS CryptoKey 복호화 도구 역할을 부여합니다.
- 암호화 키를 만듭니다.
- 키를 사용하여 데이터를 암호화합니다.
- 암호화된 데이터를 Base64로 인코딩합니다.
- 템플릿을 실행할 때 암호화 키를 지정하고 암호화된 매개변수 값을 사용합니다.
암호화 키를 지정하는 경우 암호화를 지원하는 모든 매개변수를 암호화해야 합니다. 암호화할 수 있는 매개변수를 알아보려면 특정 템플릿의 문서를 참고하세요.
예시
다음 예에서는 MySQL to BigQuery 템플릿을 사용합니다.
키링을 만듭니다.
gcloud kms keyrings create "KEY_RING_NAME" \ --location "global"
암호화 키를 만듭니다.
gcloud kms keys create "KEY_NAME" \ --location "global" \ --keyring "KEY_RING_NAME" \ --purpose "encryption"
사용자 이름, 비밀번호, 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`
템플릿을 실행합니다.
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 보안 및 권한을 참조하세요.
다음 단계
- Cloud Key Management Service에 대해 자세히 알아보기
- Google 제공 템플릿 목록 참조