Dưới đây là cách gửi dữ liệu đã mã hoá trong các yêu cầu truyền dẫn thành viên đối tượng.
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 Google Cloud.
Để đảm bảo các thành phần
gcloud
của bạn luôn mới nhất, hãy chạy lệnh sau.gcloud components update
Để chọn hoặc tạo một dự án Google Cloud mới và bật Dịch vụ quản lý khoá trên đám mây, hãy nhấp vào Bật Cloud KMS.
Để thiết lập dự án trong môi trường, hãy sử 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
project
hoặ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 tài liệu về Dịch vụ quản lý khoá.
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 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ờ diễn ra lần xoay đầu tiên.
Ví dụ: để xoay khoá mỗi 30 ngày và thực hiện lần xoay đầu tiên trong 1 tuần, hãy đặt ROTATION_PERIOD thành
30d
và 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 nhà cung cấp nhóm danh tính tải
Phần này là thông tin tổng quan ngắn gọn về tính năng Liên kết thông tin nhận dạng theo khối lượng công việc. Để biết thêm thông tin, hãy xem tài liệu về Liên minh danh tính tải trọng.
Tạo nhóm danh tính tải (WIP).
location
cho 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 phần 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-condition
xá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"
Mã hoá dữ liệu
Tính năng mã hoá trong API Trình quản lý dữ liệu yêu cầu một 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 mã hoá bằng khoá Google Cloud KMS. 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 nguyên tắc định dạng và băm giống như bạn sử dụng cho dữ liệu chưa mã hoá.
Không mã hoá các giá trị chưa băm. Ví dụ: region_code
hoặc postal_code
của AddressInfo
.
Sau khi định dạng và băm dữ liệu cho từng trường, hãy mã hoá giá trị đã băm bằng các bước sau:
- Mã hoá các byte băm bằng cách sử dụng phương thức mã hoá Base64.
- Mã hoá hàm băm được mã hoá Base64 bằng DEK.
- Mã hoá đầu ra của quá trình mã hoá bằng cách sử dụng phương thức mã hoá thập lục phân hoặc Base64.
- Sử dụng giá trị đã mã hoá cho trường.
- Đặt
encryption_info
vàencoding
trên yêu cầu.
Để hoàn tất bước cuối cùng, hãy sửa đổi IngestAudienceMembersRequest
để cho biết bạn đã mã hoá dữ liệu:
- Đặt trường
encryption_info
. - Đặt trường
encoding
thành phương thức mã hoá dùng để mã hoá các giá trị trường đã mã hoá.
Dưới đây là đoạn mã của một yêu cầu đã đặt các trường mã hoá và mã hoá:
{
...
"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 API Trình quản lý dữ liệu nhằm tạo và gửi yêu cầu, hãy xem mã mẫu IngestAudienceMembersWithEncryption
cho Java hoặc mã mẫu ingest_audience_members_with_encryption
cho Python.