Data Manager API hỗ trợ mã hoá dữ liệu bằng các dịch vụ quản lý khoá sau:
Khả năng hỗ trợ cho một số trường hợp sử dụng sẽ khác nhau tuỳ theo dịch vụ quản lý khoá (KMS):
| Danh mục | Trường hợp sử dụng | Google Cloud KMS | AWS KMS |
|---|---|---|---|
| Đối tượng | Gửi thành viên đối tượng | ||
| Sự kiện | Lượt chuyển đổi ngoại tuyến hoặc lượt chuyển đổi nâng cao cho khách hàng tiềm năng | ||
| Sự kiện | Lượt chuyển đổi dẫn đến lượt bán hàng tại cửa hàng thực tế trên Google Ads | ||
| Sự kiện | Sự kiện được gửi dưới dạng nguồn dữ liệu bổ sung đến một đích đến trên Google Ads | ||
| Sự kiện | Sự kiện được gửi dưới dạng nguồn dữ liệu bổ sung đến một đích đến trên Google Analytics đích đến |
Thiết lập Google Cloud KMS
Sau đây là các bước thiết lập tài nguyên Google Cloud KMS để mã hoá.
Thiết lập giao diện dòng lệnh của Google Cloud
Cài đặt và khởi chạy giao diện dòng lệnh của Google Cloud.
Để chọn hoặc tạo một dự án trên đám mây mới trên Google Cloud và bật Cloud Key Management Service, hãy nhấp vào Enable Cloud KMS.
Bật Cloud KMSĐể thiết lập dự án trong môi trường của bạn, hãy sử dụng
gcloud config setlệnh. Để kiểm tra xem dự án đã được thiết lập trong môi trường của bạn hay chưa, hãy chạygcloud config list.Nếu bạn chưa thiết lập
projecthoặc muốn sử dụng một dự án khác cho khoá của mình, hãy chạygcloud config set:gcloud config set project PROJECT_ID
Tạo khoá
Để biết thêm thông tin, hãy xem bài viết Tổng quan về Cloud Key Management Service.
Tạo một bộ khoá.
gcloud kms keyrings create KEY_RING_NAME \ --location KEY_RING_LOCATIONĐể biết thêm thông tin, hãy xem bài viết Tạo một bộ khoá.
Tạo một khoá trong bộ khoá. The ROTATION_PERIOD cho biết khoảng thời gian xoay vòng khoá và NEXT_ROTATION_TIME cho biết ngày và giờ mà lần xoay vòng đầu tiên sẽ diễn ra.
Ví dụ: để xoay vòng khoá 30 ngày một lần và thực hiện lần xoay vòng đầu tiên trong 1 tuần, hãy đặt ROTATION_PERIOD thành
30dvà NEXT_ROTATION_TIME thành$(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"Để biết thêm thông tin, hãy xem bài viết Tạo khoá.
Tạo nhà cung cấp nhóm danh tính tải
Phần này là phần tổng quan ngắn gọn về Workload Identity Federation. Để biết thêm thông tin, hãy xem Liên kết Workload Identity.
Tạo một nhóm danh tính tải (WIP).
locationcho nhóm phải làglobal.gcloud iam workload-identity-pools create WIP_ID \ --location=global \ --display-name="WIP_DISPLAY_NAME" \ --description="WIP_DESCRIPTION"Để biết thêm thông tin, hãy xem bài viết Quản lý nhóm danh tính tải và nhà cung cấp.
Tạo nhà cung cấp nhóm danh tính tải. Đối số
--attribute-conditionxác minh rằng phương thức gọi là tài khoản dịch vụ so khớp bí mật.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"Cấp vai trò trình giải mã khoá cho nhà cung cấp 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"Nếu bạn muốn mã hoá dữ liệu sự kiện cho lượt chuyển đổi ngoại tuyến và lượt chuyển đổi nâng cao cho khách hàng tiềm năng, hãy cấp vai trò trình giải mã khoá cho tài khoản dịch vụ 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"
Chuyển sang phần Mã hoá dữ liệu.
Thiết lập AWS KMS
Sau đây là các bước thiết lập tài nguyên AWS KMS để mã hoá.
Thiết lập Giao diện dòng lệnh của AWS
- Cài đặt Giao diện dòng lệnh của AWS.
Chạy lệnh sau để xác minh quá trình cài đặt:
aws --versionDưới đây là một đoạn mã của kết quả cho quá trình cài đặt thành công:
aws-cli/2.31.12 Python/3.13.7 ...
Thiết lập người dùng AWS và đăng nhập
- Hoàn tất các điều kiện tiên quyết để sử dụng Giao diện dòng lệnh của AWS.
- Đăng nhập vào phiên IAM Identity Center.
Tạo khoá
-
aws kms create-key \ --key-usage ENCRYPT_DECRYPT \ --key-spec SYMMETRIC_DEFAULT \ --description "KEK for Confidential Matching Data Encryption"Hãy lưu ý
ArntrongKeyMetadataở kết quả. Bạn sẽ cần Tên tài nguyên Amazon (ARN) này trong các bước khác.AWS_KEY_ARN Không bắt buộc: Tạo bí danh khoá bằng tên bí danh mà bạn chọn.
aws kms create-alias \ --alias-name "alias/AWS_KEY_ALIAS" \ --target-key-id AWS_KEY_ARNBạn không bắt buộc phải tạo bí danh, nhưng bí danh sẽ hữu ích khi tạo các lệnh trong Giao diện dòng lệnh của AWS. Ví dụ: bạn có thể truy xuất ARN khoá bằng bí danh:
aws kms describe-key --key-id "alias/AWS_KEY_ALIAS" \ --query 'KeyMetadata.Arn' \ --output text
Tạo nhà cung cấp danh tính OpenID Connect
Tạo nhà cung cấp danh tính OpenID Connect (OIDC). Bạn chỉ cần thực hiện bước này một lần cho mỗi tài khoản AWS.
aws iam create-open-id-connect-provider \
--url https://confidentialcomputing.googleapis.com \
--client-id-list AUDIENCE \
--thumbprint-list "08745487e891c19e3078c1f2a07e452950ef36f6"
Hãy lưu ý ARN nhà cung cấp OIDC trong kết quả. Bạn sẽ cần ARN này trong các bước khác.
AWS_OIDC_PROVIDER_ARN
Tạo chính sách IAM
Tạo một tệp JSON có tên là
kms-decrypt-policy.jsonvới nội dung sau:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "AWS_KEY_ARN" } ] }Tạo chính sách IAM bằng tệp JSON và tên chính sách mà bạn chọn.
aws iam create-policy \ --policy-name "AWS_POLICY_NAME" \ --policy-document file://kms-decrypt-policy.jsonHãy lưu ý ARN chính sách IAM trong kết quả. Bạn sẽ cần ARN này trong các bước khác.
AWS_IAM_POLICY_ARN
Tạo và đính kèm vai trò IAM
Tạo một tệp JSON có tên là
role-trust-policy.jsonvới nội dung sau và ARN nhà cung cấp OIDC từ bước trước:{ "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*" } } } ] }Tạo vai trò IAM với tên vai trò mà bạn chọn.
aws iam create-role \ --role-name "AWS_IAM_ROLE_NAME" \ --assume-role-policy-document file://role-trust-policy.jsonĐính kèm chính sách vai trò vào chính sách IAM.
aws iam attach-role-policy \ --role-name "AWS_IAM_ROLE_NAME" \ --policy-arn "AWS_IAM_POLICY_ARN"
Mã hoá dữ liệu
Quá trình mã hoá trong Data Manager API yêu cầu phải có khoá mã hoá dữ liệu (DEK). DEK là một khoá đối xứng mà bạn dùng để mã hoá dữ liệu. DEK của bạn được mã hoá bằng khoá mã hoá khoá (KEK) của Google Cloud hoặc AWS KMS. Bạn gửi DEK đã mã hoá, URI KEK và nhà cung cấp WIP trong yêu cầu.
Để chuẩn bị dữ liệu trong yêu cầu mã hoá, hãy làm theo các nguyên tắc định dạng và băm tương tự như khi bạn sử dụng cho dữ liệu chưa mã hoá.
Đừng mã hoá các giá trị chưa băm. Ví dụ: region_code hoặc postal_code
của một AddressInfo.
Sau khi dữ liệu cho từng trường được định dạng và băm, hãy mã hoá giá trị đã băm bằng các bước sau:
- Mã hoá các byte băm bằng phương thức mã hoá Base64.
- Mã hoá giá trị băm được mã hoá dưới dạng Base64 bằng DEK.
- Mã hoá kết quả từ quá trình mã hoá bằng phương thức mã hoá hex hoặc Base64.
- Sử dụng giá trị đã mã hoá cho trường.
- Đặt
encryption_infovàencodingcho yêu cầu.
Để hoàn tất bước cuối cùng, hãy sửa đổi
IngestAudienceMembersRequest hoặc
IngestEventsRequest
để cho biết bạn đã mã hoá
dữ liệu của mình:
- Đặt trường
encryption_info. - Đặt trường
encodingthành phương thức mã hoá dùng để mã hoá các giá trị trường đã mã hoá.
Dưới đây là một đoạn mã của yêu cầu sử dụng khoá Google Cloud KMS và các trường mã hoá và mã hoá được thiết lập:
{
...
"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"
}
Để sử dụng thư viện và tiện ích Data Manager API để tạo và gửi yêu cầu, hãy xem mã mẫu IngestAudienceMembers cho Java hoặc mã mẫu ingest_audience_members cho Python.
Kiểm tra thông tin chẩn đoán về các vấn đề mã hoá
Sau khi tải dữ liệu đã mã hoá lên, hãy sử dụng thông tin chẩn đoán để kiểm tra
mọi cảnh báo liên quan đến quá trình mã hoá, chẳng hạn như
PROCESSING_WARNING_REASON_KEK_PERMISSION_DENIED hoặc
PROCESSING_WARNING_REASON_DEK_DECRYPTION_ERROR. Giải quyết mọi cảnh báo trong thông tin chẩn đoán, gửi lại yêu cầu và xác minh rằng thông tin chẩn đoán không còn trả về cảnh báo sau khi bạn thay đổi.