다음은 잠재고객 구성원 처리 요청에서 암호화된 데이터를 전송하는 방법입니다.
Google Cloud 명령줄 인터페이스 설정
Google Cloud 명령줄 인터페이스를 설치하고 초기화합니다.
gcloud
구성요소가 최신 상태인지 확인하려면 다음 명령어를 실행합니다.gcloud components update
새 Google Cloud 프로젝트를 선택하거나 만들고 Cloud Key Management Service를 사용 설정하려면 Cloud KMS 사용 설정을 클릭합니다.
Cloud KMS 사용 설정환경에서 프로젝트를 설정하려면
gcloud config set
명령어를 사용합니다. 프로젝트가 이미 환경에 설정되어 있는지 확인하려면gcloud config list
를 실행합니다.project
가 설정되어 있지 않거나 키에 다른 프로젝트를 사용하려면gcloud config set
를 실행합니다.gcloud config set project PROJECT_ID
키 만들기
자세한 내용은 키 관리 서비스 문서를 참고하세요.
키링을 만듭니다.
gcloud kms keyrings create KEY_RING_NAME \ --location KEY_RING_LOCATION
자세한 내용은 키링 만들기를 참고하세요.
키링에 키를 만듭니다. ROTATION_PERIOD는 키를 순환하는 간격을 나타내고 NEXT_ROTATION_TIME는 첫 번째 순환이 발생해야 하는 날짜와 시간을 나타냅니다.
예를 들어 키를 30일마다 순환하고 1주일 후에 첫 번째 순환을 실행하려면 ROTATION_PERIOD를
30d
로, NEXT_ROTATION_TIME를$(date --utc --date="next week" --iso-8601=seconds)
로 설정합니다.gcloud kms keys create KEY_NAME \ --keyring KEY_RING_NAME \ --location KEY_RING_LOCATION \ --purpose "encryption" \ --rotation-period ROTATION_PERIOD \ --next-rotation-time "NEXT_ROTATION_TIME"
자세한 내용은 키 만들기를 참고하세요.
워크로드 ID 풀 공급자 만들기
이 섹션에서는 워크로드 아이덴티티 제휴에 대해 간략하게 설명합니다. 자세한 내용은 워크로드 아이덴티티 제휴 문서를 참고하세요.
워크로드 ID 풀을 만듭니다 (WIP). 풀의
location
는global
여야 합니다.gcloud iam workload-identity-pools create WIP_ID \ --location=global \ --display-name="WIP_DISPLAY_NAME" \ --description="WIP_DESCRIPTION"
자세한 내용은 워크로드 ID 풀 및 공급자 관리를 참고하세요.
워크로드 ID 풀 공급자를 만듭니다.
--attribute-condition
인수는 호출자가 컨피덴셜 매칭 서비스 계정인지 확인합니다.gcloud iam workload-identity-pools providers create-oidc PROVIDER_ID \ --location=global \ --workload-identity-pool=WIP_ID \ --display-name="PROVIDER_DISPLAY_NAME" \ --description="PROVIDER_DESCRIPTION" \ --attribute-mapping="google.subject=assertion.sub,google.groups=[\"PROVIDER_ID\"]" \ --attribute-condition="assertion.swname == '_SPACE' && 'STABLE' in assertion.submods._space.support_attributes && ['[email protected]'].exists( a, a in assertion.google_service_accounts) && 'ECDSA_P256_SHA256:6b1f357b59e9407fb017ca0e3e783b2bd5acbfea6c83dd82971a4150df5b25f9' in assertion.submods.container.image_signatures.map(sig, sig.signature_algorithm+':'+sig.key_id)" \ --issuer-uri="https://computing.googleapis.com" \ --allowed-audiences="https://sts.googleapis.com"
WIP 제공업체에 키 복호화 도구 역할을 부여합니다.
# Grants the role to the WIP provider. gcloud kms keys add-iam-policy-binding KEY_NAME \ --keyring KEY_RING_NAME \ --location KEY_RING_LOCATION \ --member "principalSet://iam.googleapis.com/projects/PROJECT_ID/locations/global/workloadIdentityPools/WIP_ID/group/PROVIDER_ID" \ --role "roles/cloudkms.cryptoKeyDecrypter"
데이터 암호화
Data Manager API에서 암호화하려면 데이터 암호화 키 (DEK)가 필요합니다. DEK는 데이터를 암호화하는 데 사용하는 대칭 키입니다. DEK는 Google Cloud KMS 키를 사용하여 암호화됩니다. 암호화된 DEK를 요청의 일부로 전송합니다.
암호화 요청에서 데이터를 준비하려면 암호화되지 않은 데이터에 사용하는 것과 동일한 형식 지정 및 해싱 가이드라인을 따르세요.
해싱되지 않은 값은 암호화하지 마세요. 예를 들면 AddressInfo
의 region_code
또는 postal_code
입니다.
각 필드의 데이터 형식이 지정되고 해싱되면 다음 단계에 따라 해싱된 값을 암호화합니다.
- Base64 인코딩을 사용하여 해시 바이트를 인코딩합니다.
- DEK를 사용하여 Base64로 인코딩된 해시를 암호화합니다.
- 16진수 또는 Base64 인코딩을 사용하여 암호화 프로세스의 출력을 인코딩합니다.
- 필드에 인코딩된 값을 사용합니다.
- 요청에서
encryption_info
및encoding
를 설정합니다.
마지막 단계를 완료하려면 데이터를 암호화했음을 나타내도록 IngestAudienceMembersRequest
를 수정합니다.
encryption_info
필드를 설정합니다.encoding
필드를 암호화된 필드 값을 인코딩하는 데 사용된 인코딩으로 설정합니다.
다음은 암호화 및 인코딩 필드가 설정된 요청의 스니펫입니다.
{
...
"encryptionInfo": {
"gcpWrappedKeyInfo": {
"kekUri": "gcp-kms://projects/PROJECT_ID/locations/KEY_RING_LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME",
"wipProvider": "projects/PROJECT_ID/locations/global/workloadIdentityPools/WIP_ID/providers/PROVIDER_ID",
"keyType": "XCHACHA20_POLY1305",
"encryptedDek": "ENCRYPTED_DEK"
}
},
"encoding": "ENCODING"
}
Data Manager API 라이브러리 및 유틸리티를 사용하여 요청을 구성하고 전송하려면 Java의 IngestAudienceMembersWithEncryption
코드 샘플 또는 Python의 ingest_audience_members_with_encryption
코드 샘플을 참고하세요.