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