ऑडियंस में शामिल सदस्यों का डेटा डालने के अनुरोधों में, एन्क्रिप्ट (सुरक्षित) किया गया डेटा भेजने का तरीका यहां बताया गया है.
Google Cloud का कमांड-लाइन इंटरफ़ेस सेट अप करना
Google Cloud के कमांड लाइन इंटरफ़ेस को इंस्टॉल और शुरू करें.
यह पक्का करने के लिए कि आपके
gcloud
कॉम्पोनेंट अप-टू-डेट हैं, यह कमांड चलाएं.gcloud components update
नया Google 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 दिन में रोटेट करने और पहला रोटेशन एक हफ़्ते में करने के लिए, 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 Provider की पुष्टि करने का तरीका सेट अप करना
इस सेक्शन में, 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 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 में एन्क्रिप्शन के लिए, डेटा एन्क्रिप्शन पासकोड (डीईके) की ज़रूरत होती है. डीईके एक ऐसी सिमेट्रिक कुंजी होती है जिसका इस्तेमाल डेटा को एन्क्रिप्ट करने के लिए किया जाता है. आपकी डीईके को, Google Cloud केएमएस कुंजी का इस्तेमाल करके एन्क्रिप्ट किया जाता है. अनुरोध के हिस्से के तौर पर, एन्क्रिप्ट (सुरक्षित) किया गया डीईके भेजा जाता है.
एन्क्रिप्शन के अनुरोध में डेटा तैयार करने के लिए, फ़ॉर्मैटिंग और हैश करने के उन ही दिशा-निर्देशों का पालन करें जिनका इस्तेमाल, एन्क्रिप्ट नहीं किए गए डेटा के लिए किया जाता है.
बिना हैश की गई वैल्यू को एन्क्रिप्ट (सुरक्षित) न करें. उदाहरण के लिए, AddressInfo
का region_code
या postal_code
.
हर फ़ील्ड के लिए डेटा को फ़ॉर्मैट और हैश करने के बाद, हैश की गई वैल्यू को एन्क्रिप्ट करने के लिए यह तरीका अपनाएं:
- Base64 कोड में बदलने की सुविधा का इस्तेमाल करके, हैश बाइट को कोड में बदलें.
- अपने डीईके का इस्तेमाल करके, Base64 कोड में बदले गए हैश को एन्क्रिप्ट करें.
- हेक्स या 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 की लाइब्रेरी और उपयोगिता का इस्तेमाल करने के लिए, Java के लिए IngestAudienceMembersWithEncryption
कोड सैंपल या Python के लिए ingest_audience_members_with_encryption
कोड सैंपल देखें.