API ของ Data Manager รองรับการเข้ารหัสข้อมูลโดยใช้บริการการจัดการคีย์ต่อไปนี้
การรองรับกรณีการใช้งานบางอย่างจะแตกต่างกันไปตามบริการจัดการคีย์ (KMS) ดังนี้
| หมวดหมู่ | กรณีการใช้งาน | Google Cloud KMS | AWS KMS |
|---|---|---|---|
| กลุ่มเป้าหมาย | ส่งให้สมาชิกในกลุ่มเป้าหมาย | ||
| เหตุการณ์ | Conversion ออฟไลน์หรือ Conversion ที่ปรับปรุงแล้วสำหรับโอกาสในการขาย | ||
| เหตุการณ์ | เหตุการณ์ที่ส่งเป็นแหล่งข้อมูลเพิ่มเติมไปยังปลายทาง Google Ads | ||
| เหตุการณ์ | เหตุการณ์ที่ส่งเป็นแหล่งข้อมูลเพิ่มเติมไปยังปลายทาง Google Analytics |
ตั้งค่า Google Cloud KMS
ขั้นตอนการตั้งค่าทรัพยากร Google Cloud KMS สำหรับการเข้ารหัสมีดังนี้
ตั้งค่าอินเทอร์เฟซบรรทัดคำสั่งของ Google Cloud
ติดตั้งและ เริ่มต้นใช้งานอินเทอร์เฟซบรรทัดคำสั่งของ Google Cloud
หากต้องการเลือกหรือสร้างโปรเจ็กต์ 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
สร้างคีย์
ดูข้อมูลเพิ่มเติมได้ที่ภาพรวมของ Cloud Key Management Service
สร้างคีย์ริง
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"ดูข้อมูลเพิ่มเติมได้ที่สร้างคีย์
สร้างผู้ให้บริการพูล Workload Identity
ส่วนนี้เป็นภาพรวมสั้นๆ ของการรวมศูนย์ข้อมูล Workload Identity ดูข้อมูลเพิ่มเติมได้ที่การเชื่อมโยงข้อมูลประจำตัวของเวิร์กโหลด
สร้าง Workload Identity Pool (WIP)
locationของพูลต้องเป็นglobalgcloud iam workload-identity-pools create WIP_ID \ --location=global \ --display-name="WIP_DISPLAY_NAME" \ --description="WIP_DESCRIPTION"ดูข้อมูลเพิ่มเติมได้ที่จัดการ Workload Identity Pool และผู้ให้บริการ
สร้างผู้ให้บริการพูล Workload Identity อาร์กิวเมนต์
--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 == 'CONFIDENTIAL_SPACE' && 'STABLE' in assertion.submods.confidential_space.support_attributes && ['cfm-services@admcloud-cfm-services.iam.gserviceaccount.com'].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://confidentialcomputing.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"หากต้องการเข้ารหัสข้อมูลเหตุการณ์สําหรับ Conversion ออฟไลน์และ Conversion ที่ปรับปรุงแล้วสําหรับโอกาสในการขาย ให้มอบบทบาทผู้ถอดรหัสคีย์ให้กับบัญชีบริการ
datamanager-api@datamanager-ga.iam.gserviceaccount.comของ Google# Grants the role to the Google service account. gcloud kms keys add-iam-policy-binding KEY_NAME \ --keyring KEY_RING_NAME \ --location KEY_RING_LOCATION \ --member "serviceAccount:datamanager-api@datamanager-ga.iam.gserviceaccount.com" \ --role "roles/cloudkms.cryptoKeyDecrypter"
ไปที่ส่วนเข้ารหัสข้อมูล
ตั้งค่า AWS KMS
ขั้นตอนการตั้งค่าทรัพยากร AWS KMS สำหรับการเข้ารหัสมีดังนี้
ตั้งค่าอินเทอร์เฟซบรรทัดคำสั่ง AWS
- ติดตั้งอินเทอร์เฟซบรรทัดคำสั่งของ AWS
เรียกใช้คำสั่งต่อไปนี้เพื่อยืนยันการติดตั้ง
aws --versionต่อไปนี้คือข้อมูลโค้ดของเอาต์พุตสำหรับการติดตั้งที่สำเร็จ
aws-cli/2.31.12 Python/3.13.7 ...
ตั้งค่าผู้ใช้ AWS และลงชื่อเข้าใช้
- ทำตามข้อกำหนดเบื้องต้นสำหรับการใช้ AWS Command Line Interface ให้ครบถ้วน
- ลงชื่อเข้าใช้เซสชัน IAM Identity Center
สร้างคีย์
-
aws kms create-key \ --key-usage ENCRYPT_DECRYPT \ --key-spec SYMMETRIC_DEFAULT \ --description "KEK for Confidential Matching Data Encryption"โปรดสังเกต
ArnในKeyMetadataในเอาต์พุต คุณจะต้องใช้ Amazon Resource Name (ARN) นี้ในขั้นตอนอื่นๆAWS_KEY_ARN ไม่บังคับ: สร้างนามแฝงคีย์โดยใช้นามแฝงที่คุณเลือก
aws kms create-alias \ --alias-name "alias/AWS_KEY_ALIAS" \ --target-key-id AWS_KEY_ARNแม้ว่าจะไม่จำเป็นต้องใช้นามแฝง แต่ก็มีประโยชน์ในการสร้างคำสั่งอินเทอร์เฟซบรรทัดคำสั่งของ AWS เช่น คุณสามารถดึงข้อมูล ARN ของคีย์ได้โดยใช้ นามแฝง
aws kms describe-key --key-id "alias/AWS_KEY_ALIAS" \ --query 'KeyMetadata.Arn' \ --output text
สร้างผู้ให้บริการข้อมูลประจำตัว OpenID Connect
สร้างผู้ให้บริการข้อมูลประจำตัว OpenID Connect (OIDC) คุณต้องทำขั้นตอนนี้เพียงครั้งเดียวต่อบัญชี AWS
aws iam create-open-id-connect-provider \
--url https://confidentialcomputing.googleapis.com \
--client-id-list AUDIENCE \
--thumbprint-list "08745487e891c19e3078c1f2a07e452950ef36f6"
จดบันทึก ARN ของผู้ให้บริการ OIDC จากเอาต์พุต เนื่องจากคุณจะต้องใช้ในขั้นตอนอื่นๆ
AWS_OIDC_PROVIDER_ARN
สร้างนโยบาย IAM
สร้างไฟล์ JSON ชื่อ
kms-decrypt-policy.jsonที่มีเนื้อหาต่อไปนี้{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "AWS_KEY_ARN" } ] }สร้างนโยบาย IAM โดยใช้ไฟล์ JSON และชื่อนโยบายที่คุณเลือก
aws iam create-policy \ --policy-name "AWS_POLICY_NAME" \ --policy-document file://kms-decrypt-policy.jsonจด ARN ของนโยบาย IAM ในเอาต์พุต เนื่องจากคุณจะต้องใช้ในขั้นตอนอื่นๆ
AWS_IAM_POLICY_ARN
สร้างและแนบบทบาท IAM
สร้างไฟล์ JSON ชื่อ
role-trust-policy.jsonที่มีเนื้อหาต่อไปนี้และ ARN ของผู้ให้บริการ OIDC จากขั้นตอนก่อนหน้า{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "AWS_OIDC_PROVIDER_ARN" }, "Action": [ "sts:AssumeRoleWithWebIdentity", "sts:TagSession" ], "Condition": { "StringEquals": { "confidentialcomputing.googleapis.com:aud": "cfm-awsresource", "aws:RequestTag/swname": "CONFIDENTIAL_SPACE", "aws:RequestTag/container.signatures.key_ids": "6b1f357b59e9407fb017ca0e3e783b2bd5acbfea6c83dd82971a4150df5b25f9" }, "StringLike": { "aws:RequestTag/confidential_space.support_attributes": "*STABLE*" } } } ] }สร้างบทบาท IAM ที่มีชื่อบทบาทตามที่คุณเลือก
aws iam create-role \ --role-name "AWS_IAM_ROLE_NAME" \ --assume-role-policy-document file://role-trust-policy.jsonแนบนโยบายบทบาทกับนโยบาย IAM
aws iam attach-role-policy \ --role-name "AWS_IAM_ROLE_NAME" \ --policy-arn "AWS_IAM_POLICY_ARN"
เข้ารหัสข้อมูล
การเข้ารหัสใน Data Manager API ต้องใช้คีย์การเข้ารหัสข้อมูล (DEK) DEK คือคีย์สมมาตรที่คุณใช้เพื่อเข้ารหัสข้อมูล ระบบจะเข้ารหัส DEK โดยใช้คีย์ Google Cloud หรือ AWS KMS คุณส่ง DEK ที่เข้ารหัสเป็นส่วนหนึ่งของคำขอ
หากต้องการเตรียมข้อมูลในคำขอเข้ารหัส ให้ทำตามหลักเกณฑ์การจัดรูปแบบ และการแฮชเดียวกันกับที่ใช้สำหรับข้อมูลที่ไม่ได้เข้ารหัส
อย่าเข้ารหัสค่าที่ไม่ได้แฮช เช่น region_code หรือ postal_code
ของ AddressInfo
เมื่อจัดรูปแบบและแฮชข้อมูลสำหรับแต่ละฟิลด์แล้ว ให้เข้ารหัสค่าที่แฮช โดยทำตามขั้นตอนต่อไปนี้
- เข้ารหัสไบต์ของแฮชโดยใช้การเข้ารหัส Base64
- เข้ารหัสแฮชที่เข้ารหัส Base64 โดยใช้ DEK
- เข้ารหัสเอาต์พุตจากกระบวนการเข้ารหัสโดยใช้การเข้ารหัสแบบเลขฐานสิบหกหรือ Base64
- ใช้ค่าที่เข้ารหัสสำหรับฟิลด์
- ตั้งค่า
encryption_infoและencodingในคำขอ
หากต้องการทำขั้นตอนสุดท้ายให้เสร็จสมบูรณ์ ให้แก้ไข
IngestAudienceMembersRequest หรือ
IngestEventsRequest
เพื่อระบุว่าคุณเข้ารหัส
ข้อมูลแล้ว
- ตั้งค่าฟิลด์
encryption_info - ตั้งค่าฟิลด์
encodingเป็นการเข้ารหัสที่ใช้ในการเข้ารหัสค่าฟิลด์ที่เข้ารหัส
ต่อไปนี้คือข้อมูลโค้ดของคำขอที่ใช้คีย์ Google Cloud KMS และมีการตั้งค่าฟิลด์การเข้ารหัสและการเข้ารหัส
{
...
"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 เพื่อสร้างและส่งคำขอ
โปรดดูIngestAudienceMembersWithEncryption ตัวอย่างโค้ดสำหรับ Java หรือingest_audience_members_with_encryption ตัวอย่างโค้ดสำหรับ Python