Data Manager API mendukung enkripsi data menggunakan layanan pengelolaan kunci berikut:
Dukungan untuk beberapa kasus penggunaan berbeda menurut layanan pengelolaan kunci (KMS):
| Kategori | Kasus penggunaan | Google Cloud KMS | AWS KMS |
|---|---|---|---|
| Audiens | Mengirim anggota audiens | ||
| Peristiwa | Konversi offline atau konversi yang disempurnakan untuk prospek | ||
| Peristiwa | Peristiwa yang dikirim sebagai sumber data tambahan ke tujuan Google Ads | ||
| Peristiwa | Peristiwa yang dikirim sebagai sumber data tambahan ke tujuan Google Analytics |
Menyiapkan Google Cloud KMS
Berikut adalah langkah-langkah untuk menyiapkan resource Google Cloud KMS untuk enkripsi.
Menyiapkan antarmuka command line Google Cloud
Instal dan lakukan inisialisasi antarmuka command line Google Cloud.
Untuk memilih atau membuat project Google Cloud baru dan mengaktifkan Cloud Key Management Service, klik Enable Cloud KMS.
Mengaktifkan Cloud KMSUntuk menyetel project di lingkungan Anda, gunakan perintah
gcloud config set. Untuk memeriksa apakah project sudah disetel di lingkungan Anda, jalankangcloud config list.Jika
projecttidak ditetapkan, atau Anda ingin menggunakan project lain untuk kunci Anda, jalankangcloud config set:gcloud config set project PROJECT_ID
Buat kunci
Untuk mengetahui informasi selengkapnya, lihat Ringkasan Cloud Key Management Service.
Buat key ring.
gcloud kms keyrings create KEY_RING_NAME \ --location KEY_RING_LOCATIONUntuk mengetahui informasi selengkapnya, lihat Membuat ring kunci.
Buat kunci di key ring. ROTATION_PERIOD menunjukkan interval untuk merotasi kunci, dan NEXT_ROTATION_TIME menunjukkan tanggal dan waktu saat rotasi pertama harus terjadi.
Misalnya, untuk merotasi kunci setiap 30 hari dan melakukan rotasi pertama dalam 1 minggu, tetapkan ROTATION_PERIOD ke
30ddan NEXT_ROTATION_TIME ke$(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"Untuk mengetahui informasi selengkapnya, lihat Membuat kunci.
Membuat penyedia workload identity pool
Bagian ini adalah ringkasan singkat tentang Workload Identity Federation. Untuk mengetahui informasi selengkapnya, lihat Workload Identity Federation.
Buat workload identity pool (WIP).
locationuntuk pool harusglobal.gcloud iam workload-identity-pools create WIP_ID \ --location=global \ --display-name="WIP_DISPLAY_NAME" \ --description="WIP_DESCRIPTION"Untuk mengetahui informasi selengkapnya, lihat Mengelola workload identity pool dan penyedia.
Buat penyedia workload identity pool. Argumen
--attribute-conditionmemverifikasi bahwa pemanggil adalah akun layanan pencocokan rahasia.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"Berikan peran pendekripsi kunci kepada penyedia 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"Jika Anda ingin mengenkripsi data peristiwa untuk konversi offline dan konversi yang disempurnakan untuk lead, berikan peran dekripsi kunci ke akun layanan Google
datamanager-api@datamanager-ga.iam.gserviceaccount.com.# 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"
Lanjutkan ke bagian Enkripsi data.
Menyiapkan AWS KMS
Berikut adalah langkah-langkah untuk menyiapkan resource AWS KMS untuk enkripsi.
Menyiapkan AWS Command Line Interface
- Instal Antarmuka Command Line AWS.
Jalankan perintah berikut untuk memverifikasi penginstalan:
aws --versionBerikut adalah cuplikan output untuk penginstalan yang berhasil:
aws-cli/2.31.12 Python/3.13.7 ...
Menyiapkan pengguna AWS dan login
- Selesaikan prasyarat untuk menggunakan Antarmuka Command Line AWS.
- Login ke sesi IAM Identity Center.
Buat kunci
Buat kunci KMS simetris (KEK).
aws kms create-key \ --key-usage ENCRYPT_DECRYPT \ --key-spec SYMMETRIC_DEFAULT \ --description "KEK for Confidential Matching Data Encryption"Catat
Arndi bagianKeyMetadatadalam output. Anda akan memerlukan Amazon Resource Name (ARN) ini di langkah-langkah lainnya.AWS_KEY_ARNOpsional: Buat alias kunci menggunakan nama alias pilihan Anda.
aws kms create-alias \ --alias-name "alias/AWS_KEY_ALIAS" \ --target-key-id AWS_KEY_ARNAlias tidak diperlukan, tetapi berguna untuk membuat perintah Antarmuka Command Line AWS. Misalnya, Anda dapat mengambil ARN kunci menggunakan alias:
aws kms describe-key --key-id "alias/AWS_KEY_ALIAS" \ --query 'KeyMetadata.Arn' \ --output text
Membuat penyedia identitas OpenID Connect
Buat penyedia identitas OpenID Connect (OIDC). Anda hanya perlu melakukan langkah ini satu kali per akun AWS.
aws iam create-open-id-connect-provider \
--url https://confidentialcomputing.googleapis.com \
--client-id-list AUDIENCE \
--thumbprint-list "08745487e891c19e3078c1f2a07e452950ef36f6"
Catat ARN penyedia OIDC dari output. Anda akan membutuhkannya di langkah-langkah lainnya.
AWS_OIDC_PROVIDER_ARN
Membuat kebijakan IAM
Buat file JSON bernama
kms-decrypt-policy.jsondengan konten berikut:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "AWS_KEY_ARN" } ] }Buat kebijakan IAM menggunakan file JSON dan nama kebijakan pilihan Anda.
aws iam create-policy \ --policy-name "AWS_POLICY_NAME" \ --policy-document file://kms-decrypt-policy.jsonCatat ARN kebijakan IAM dalam output. Anda akan membutuhkannya di langkah-langkah lainnya.
AWS_IAM_POLICY_ARN
Membuat dan melampirkan peran IAM
Buat file JSON bernama
role-trust-policy.jsondengan isi berikut dan ARN penyedia OIDC dari langkah sebelumnya:{ "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*" } } } ] }Buat peran IAM dengan nama peran pilihan Anda.
aws iam create-role \ --role-name "AWS_IAM_ROLE_NAME" \ --assume-role-policy-document file://role-trust-policy.jsonLampirkan kebijakan peran ke kebijakan IAM.
aws iam attach-role-policy \ --role-name "AWS_IAM_ROLE_NAME" \ --policy-arn "AWS_IAM_POLICY_ARN"
Mengenkripsi data
Enkripsi di Data Manager API memerlukan kunci enkripsi data (DEK). DEK adalah kunci simetris yang Anda gunakan untuk mengenkripsi data. DEK Anda dienkripsi menggunakan kunci KMS Google Cloud atau AWS Anda. Anda mengirim DEK terenkripsi sebagai bagian dari permintaan.
Untuk menyiapkan data dalam permintaan untuk dienkripsi, ikuti panduan pemformatan dan hashing yang sama dengan yang Anda gunakan untuk data yang tidak dienkripsi.
Jangan mengenkripsi nilai yang tidak di-hash. Misalnya, region_code atau postal_code
dari AddressInfo.
Setelah data untuk setiap kolom diformat dan di-hash, enkripsi nilai yang di-hash menggunakan langkah-langkah berikut:
- Enkode byte hash menggunakan encoding Base64.
- Enkripsi hash yang dienkode Base64 menggunakan DEK Anda.
- Enkode output dari proses enkripsi menggunakan encoding hex atau Base64.
- Gunakan nilai yang dienkode untuk kolom.
- Tetapkan
encryption_infodanencodingpada permintaan.
Untuk menyelesaikan langkah terakhir, ubah
IngestAudienceMembersRequest atau
IngestEventsRequest
untuk menunjukkan bahwa Anda mengenkripsi
data Anda:
- Tetapkan kolom
encryption_info. - Tetapkan kolom
encodingke encoding yang digunakan untuk mengenkode nilai kolom terenkripsi.
Berikut adalah cuplikan permintaan menggunakan kunci Google Cloud KMS dan dengan setelan kolom enkripsi dan 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"
}
Untuk menggunakan library dan utilitas Data Manager API untuk membuat dan mengirim permintaan, lihat contoh kode IngestAudienceMembersWithEncryption untuk Java atau contoh kode ingest_audience_members_with_encryption untuk Python.