Data Manager API hỗ trợ mã hoá dữ liệu bằng các dịch vụ quản lý khoá sau đây:
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 cho thành viên thuộc đố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 | Sự kiện được gửi dưới dạng một 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 một nguồn dữ liệu bổ sung đến một đích đến Google Analytics |
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 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 mới trên Google Cloud và bật Cloud Key Management Service, hãy nhấp vào Bật Cloud KMS.
Bật Cloud KMSĐể thiết lập dự án trong môi trường của bạn, hãy dùng lệnh
gcloud config set. Để 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 không đặt
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ề Dịch vụ quản lý khoá trên đám mây.
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 phần Tạo bộ khoá.
Tạo một khoá trong bộ khoá. ROTATION_PERIOD cho biết khoảng thời gian xoay khoá và NEXT_ROTATION_TIME cho biết ngày và giờ mà lần xoay đầu tiên sẽ diễn ra.
Ví dụ: để xoay vòng khoá sau mỗi 30 ngày và thực hiện lần xoay vòng đầu tiên sau 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 phần Tạo khoá.
Tạo một nhà cung cấp nhóm danh tính tải
Phần này cung cấp thông tin tổng quan ngắn gọn về tính năng Liên kết danh tính tải. Để biết thêm thông tin, hãy xem phần Liên kết danh tính tải.
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 một 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ò tiện ích 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ò người 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 đến mục 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 đầu ra cho một lượt 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 thành 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 một 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"Lưu ý
ArntrongKeyMetadataở đầu ra. 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 một 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 có bí danh, nhưng bí danh rất hữu ích khi tạo các lệnh Giao diện dòng lệnh của AWS. Ví dụ: bạn có thể truy xuất ARN khoá bằng cách sử dụng bí danh:
aws kms describe-key --key-id "alias/AWS_KEY_ALIAS" \ --query 'KeyMetadata.Arn' \ --output text
Tạo một nhà cung cấp danh tính OpenID Connect
Tạo một 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"
Ghi lại ARN của nhà cung cấp OIDC trong đầu ra. Bạn sẽ cần thông tin này trong các bước khác.
AWS_OIDC_PROVIDER_ARN
Tạo một 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 một chính sách IAM bằng cách sử dụ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.jsonLưu ý ARN chính sách IAM trong đầu ra. Bạn sẽ cần thông tin 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 của 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 một vai trò IAM với tên vai trò do 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
Quy 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á KMS của Google Cloud hoặc AWS. Bạn gửi DEK đã mã hoá 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ự mà bạn sẽ 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 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ách làm theo các bước sau:
- Mã hoá các byte băm bằng phương thức mã hoá Base64.
- Mã hoá hàm băm được mã hoá dưới dạng Base64 bằng DEK.
- Mã hoá đầu ra từ quy trình mã hoá bằng cách sử dụng phương thức mã hoá hex hoặc Base64.
- Sử dụng giá trị được mã hoá cho trường.
- Đặt
encryption_infovàencodingtrên 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:
- Đặ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 được mã hoá.
Sau đây là một đoạn mã của yêu cầu sử dụng khoá Google Cloud KMS và có các trường mã hoá và mã hoá được đặt:
{
...
"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à các tiện ích Data Manager API để tạo và gửi yêu cầu, hãy xem mẫu mã IngestAudienceMembersWithEncryption cho Java hoặc mẫu mã ingest_audience_members_with_encryption cho Python.