วิธีส่งข้อมูลที่เข้ารหัสในคําขอส่งผ่านข้อมูลสมาชิกกลุ่มเป้าหมายมีดังนี้
ตั้งค่าอินเทอร์เฟซบรรทัดคำสั่งของ Google Cloud
ติดตั้งและเริ่มต้นใช้งานอินเทอร์เฟซบรรทัดคำสั่งของ Google Cloud
เรียกใช้คําสั่งต่อไปนี้เพื่อให้แน่ใจว่าคอมโพเนนต์
gcloud
เป็นเวอร์ชันล่าสุดgcloud components update
หากต้องการเลือกหรือสร้างโปรเจ็กต์ Google Cloud ใหม่และเปิดใช้บริการจัดการคีย์ในระบบคลาวด์ ให้คลิกเปิดใช้ Cloud KMS
หากต้องการตั้งค่าโปรเจ็กต์ในสภาพแวดล้อม ให้ใช้คำสั่ง
gcloud config set
หากต้องการตรวจสอบว่าระบบตั้งค่าโปรเจ็กต์ในสภาพแวดล้อมแล้วหรือยัง ให้เรียกใช้gcloud config list
หากไม่ได้ตั้งค่า
project
หรือต้องการใช้โปรเจ็กต์อื่นสำหรับคีย์ ให้เรียกใช้gcloud config set
ดังนี้gcloud config set project PROJECT_ID
สร้างคีย์
ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบเกี่ยวกับบริการจัดการคีย์
สร้างคีย์ริง
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
สร้าง Workload Identity Pool (WIP)
location
ของกลุ่มต้องมีค่าเป็นglobal
gcloud 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"
เข้ารหัสข้อมูล
การเข้ารหัสใน Data Manager API ต้องใช้คีย์การเข้ารหัสข้อมูล (DEK) DEK คือคีย์แบบสมมาตรที่คุณใช้เข้ารหัสข้อมูล ระบบจะเข้ารหัส DEK โดยใช้คีย์ Google Cloud KMS คุณส่ง DEK ที่เข้ารหัสเป็นส่วนหนึ่งของคำขอ
หากต้องการเตรียมข้อมูลในคำขอเข้ารหัส ให้ทำตามหลักเกณฑ์การจัดรูปแบบและการแฮชเดียวกันกับที่ใช้สำหรับข้อมูลที่ไม่ได้เข้ารหัส
อย่าเข้ารหัสค่าที่ไม่ได้แฮช เช่น region_code
หรือ postal_code
ของ AddressInfo
เมื่อจัดรูปแบบและแฮชข้อมูลสำหรับแต่ละช่องแล้ว ให้เข้ารหัสค่าที่แฮชโดยใช้ขั้นตอนต่อไปนี้
- เข้ารหัสไบต์แฮชโดยใช้การเข้ารหัส Base64
- เข้ารหัสแฮชที่เข้ารหัส Base64 โดยใช้ DEK
- เข้ารหัสเอาต์พุตจากกระบวนการเข้ารหัสโดยใช้การเข้ารหัสฐาน 16 หรือ Base64
- ใช้ค่าที่เข้ารหัสสําหรับช่อง
- ตั้งค่า
encryption_info
และencoding
ในคำขอ
หากต้องการทำขั้นตอนสุดท้ายให้เสร็จสมบูรณ์ ให้แก้ไข IngestAudienceMembersRequest
เพื่อระบุว่าคุณได้เข้ารหัสข้อมูลแล้ว โดยทำดังนี้
- ตั้งค่าช่อง
encryption_info
- ตั้งค่าช่อง
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"
}
หากต้องการใช้ไลบรารีและยูทิลิตีของ Data Manager API เพื่อสร้างและส่งคําขอ โปรดดูตัวอย่างโค้ด IngestAudienceMembersWithEncryption
สําหรับ Java หรือตัวอย่างโค้ด ingest_audience_members_with_encryption
สําหรับ Python