วิธีส่งข้อมูลที่เข้ารหัสมีดังนี้
ตั้งค่าอินเทอร์เฟซบรรทัดคำสั่งของ Google Cloud
ติดตั้งและ เริ่มต้นใช้งานอินเทอร์เฟซบรรทัดคำสั่งของ Google Cloud
หากต้องการตรวจสอบว่า
gcloud
คอมโพเนนต์เป็นเวอร์ชันล่าสุด ให้เรียกใช้คำสั่งต่อไปนี้gcloud components update
หากต้องการเลือกหรือสร้างโปรเจ็กต์ Google Cloud ใหม่และเปิดใช้ Cloud Key Management Service ให้คลิกเปิดใช้ 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 Pool
ส่วนนี้เป็นภาพรวมสั้นๆ ของการรวมศูนย์ข้อมูล Workload Identity ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบเกี่ยวกับ Workload Identity Federation
สร้าง 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 Pool อาร์กิวเมนต์
--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
- เข้ารหัสเอาต์พุตจากกระบวนการเข้ารหัสโดยใช้การเข้ารหัสแบบเลขฐานสิบหกหรือ Base64
- ใช้ค่าที่เข้ารหัสสำหรับฟิลด์
- ตั้งค่า
encryption_info
และencoding
ในคำขอ
หากต้องการทำขั้นตอนสุดท้ายให้เสร็จสมบูรณ์ ให้แก้ไข
IngestAudienceMembersRequest
หรือ
IngestEventsRequest
เพื่อระบุว่าคุณเข้ารหัส
ข้อมูลแล้ว
- ตั้งค่าฟิลด์
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