डेटा मैनेजर एपीआई, डेटा को एन्क्रिप्ट यानी सुरक्षित करने के लिए, कुंजी को मैनेज करने वाली इन सेवाओं के साथ काम करता है:
- Google Cloud की क्रिप्टोग्राफ़िक कुंजी के लिए मैनेजमेंट सेवा
- AWS की क्रिप्टोग्राफ़िक कुंजी के लिए मैनेजमेंट सेवा
कुछ इस्तेमाल के उदाहरणों के लिए, कुंजी को मैनेज करने वाली सेवा (केएमएस) के हिसाब से अलग-अलग सुविधाएं उपलब्ध होती हैं:
| कैटगरी | इस्तेमाल का उदाहरण | Google Cloud की क्रिप्टोग्राफ़िक कुंजी के लिए मैनेजमेंट सेवा | AWS की क्रिप्टोग्राफ़िक कुंजी के लिए मैनेजमेंट सेवा |
|---|---|---|---|
| ऑडियंस | ऑडियंस के सदस्यों को डेटा भेजना | ||
| इवेंट | ऑफ़लाइन कन्वर्ज़न या लीड के लिए बेहतर कन्वर्ज़न ट्रैकिंग | ||
| इवेंट | Google Ads की, स्टोर में होने वाली बिक्री के कन्वर्ज़न | ||
| इवेंट | Google Ads के डेस्टिनेशन को, डेटा के अतिरिक्त सोर्स के तौर पर भेजे गए इवेंट | ||
| इवेंट | Google Analytics के डेस्टिनेशन को, डेटा के अतिरिक्त सोर्स के तौर पर भेजे गए इवेंट |
Google Cloud की क्रिप्टोग्राफ़िक कुंजी के लिए मैनेजमेंट सेवा (केएमएस) सेट अप करना
एन्क्रिप्शन के लिए, Google Cloud की क्रिप्टोग्राफ़िक कुंजी के लिए मैनेजमेंट सेवा (केएमएस) के संसाधन सेट अप करने का तरीका यहां दिया गया है.
Google Cloud का कमांड लाइन इंटरफ़ेस सेट अप करना
Google Cloud का कोई नया प्रोजेक्ट चुनने या बनाने और Cloud की क्रिप्टोग्राफ़िक कुंजी के लिए मैनेजमेंट सेवा (केएमएस) को चालू करने के लिए, Cloud की क्रिप्टोग्राफ़िक कुंजी के लिए मैनेजमेंट सेवा (केएमएस) चालू करें पर क्लिक करें.
Cloud की क्रिप्टोग्राफ़िक कुंजी के लिए मैनेजमेंट सेवा (केएमएस) चालू करनाअपने एनवायरमेंट में प्रोजेक्ट सेट करने के लिए,
gcloud config setकमांड का इस्तेमाल करें. यह देखने के लिए कि आपके एनवायरमेंट में प्रोजेक्ट पहले से सेट है या नहीं,gcloud config listचलाएं.अगर कोई
projectसेट नहीं है या आपको अपनी कुंजी के लिए कोई दूसरा प्रोजेक्ट इस्तेमाल करना है, तोgcloud config setचलाएं:gcloud config set project PROJECT_ID
कुंजी बनाना
ज़्यादा जानकारी के लिए, Cloud की क्रिप्टोग्राफ़िक कुंजी के लिए मैनेजमेंट सेवा (केएमएस) की खास जानकारी देखें.
कोई की-रिंग बनाएं.
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 (डब्लूआईपी) बनाएं. पूल के लिए
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"डब्लूआईपी की सेवा देने वाली कंपनी को, कुंजी को डिक्रिप्ट करने की भूमिका असाइन करें.
# 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"
इसके बाद, डेटा को एन्क्रिप्ट यानी सुरक्षित करने का तरीका सेक्शन पर जाएं.
AWS की क्रिप्टोग्राफ़िक कुंजी के लिए मैनेजमेंट सेवा (केएमएस) सेट अप करना
एन्क्रिप्शन के लिए, AWS की क्रिप्टोग्राफ़िक कुंजी के लिए मैनेजमेंट सेवा (केएमएस) के संसाधन सेट अप करने का तरीका यहां दिया गया है.
AWS का कमांड लाइन इंटरफ़ेस सेट अप करना
- AWS का कमांड लाइन इंटरफ़ेस इंस्टॉल करें.
इंस्टॉल करने की पुष्टि करने के लिए, यह कमांड चलाएं:
aws --versionसफलतापूर्वक इंस्टॉल होने पर, आउटपुट का स्निपेट यहां दिया गया है:
aws-cli/2.31.12 Python/3.13.7 ...
AWS का कोई उपयोगकर्ता सेट अप करना और साइन इन करना
- AWS के कमांड लाइन इंटरफ़ेस का इस्तेमाल करने के लिए, ज़रूरी शर्तें पूरी करें .
- साइन इन करें IAM Identity Center के किसी सेशन में.
कुंजी बनाना
सिमेट्रिक केएमएस कुंजी (केईके) बनाएं.
aws kms create-key \ --key-usage ENCRYPT_DECRYPT \ --key-spec SYMMETRIC_DEFAULT \ --description "KEK for Confidential Matching Data Encryption"आउटपुट में,
KeyMetadataके तहतArnनोट करें. आपको अन्य चरणों में, इस Amazon Resource Name (एआरएन) की ज़रूरत पड़ेगी.AWS_KEY_ARNज़रूरी नहीं: अपनी पसंद का कोई एलियास नाम इस्तेमाल करके, कुंजी का एलियास बनाएं.
aws kms create-alias \ --alias-name "alias/AWS_KEY_ALIAS" \ --target-key-id AWS_KEY_ARNएलियास बनाना ज़रूरी नहीं है. हालांकि, AWS के कमांड लाइन इंटरफ़ेस के कमांड बनाने में यह काम आता है. उदाहरण के लिए, एलियास का इस्तेमाल करके, कुंजी का एआरएन वापस पाया जा सकता है:
aws kms describe-key --key-id "alias/AWS_KEY_ALIAS" \ --query 'KeyMetadata.Arn' \ --output text
OpenID Connect आइडेंटिटी प्रोवाइडर बनाना
OpenID Connect (ओआईडीसी) आइडेंटिटी प्रोवाइडर बनाएं. आपको AWS के हर खाते के लिए, यह चरण सिर्फ़ एक बार पूरा करना होगा.
aws iam create-open-id-connect-provider \
--url https://confidentialcomputing.googleapis.com \
--client-id-list AUDIENCE \
--thumbprint-list "08745487e891c19e3078c1f2a07e452950ef36f6"
आउटपुट से, ओआईडीसी प्रोवाइडर का एआरएन नोट करें. आपको अन्य चरणों में इसकी ज़रूरत पड़ेगी.
AWS_OIDC_PROVIDER_ARN
आईएएम नीति बनाना
kms-decrypt-policy.jsonनाम की JSON फ़ाइल बनाएं. इसमें यह कॉन्टेंट शामिल करें:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "AWS_KEY_ARN" } ] }JSON फ़ाइल और अपनी पसंद का कोई नीति नाम इस्तेमाल करके, आईएएम नीति बनाएं.
aws iam create-policy \ --policy-name "AWS_POLICY_NAME" \ --policy-document file://kms-decrypt-policy.jsonआउटपुट में, आईएएम नीति का एआरएन नोट करें. आपको अन्य चरणों में इसकी ज़रूरत पड़ेगी.
AWS_IAM_POLICY_ARN
आईएएम की भूमिका बनाना और अटैच करना
role-trust-policy.jsonनाम की JSON फ़ाइल बनाएं. इसमें यह कॉन्टेंट और पिछले चरण में मिला ओआईडीसी प्रोवाइडर का एआरएन शामिल करें:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "AWS_OIDC_PROVIDER_ARN" }, "Action": [ "sts:AssumeRoleWithWebIdentity", "sts:TagSession" ], "Condition": { "StringEquals": { "confidentialcomputing.googleapis.com:aud": "cfm-awsresource", "aws:RequestTag/swname": "CONFIDENTIAL_SPACE", "aws:RequestTag/container.signatures.key_ids": "6b1f357b59e9407fb017ca0e3e783b2bd5acbfea6c83dd82971a4150df5b25f9" }, "StringLike": { "aws:RequestTag/confidential_space.support_attributes": "*STABLE*" } } } ] }अपनी पसंद का कोई भूमिका नाम इस्तेमाल करके, आईएएम की भूमिका बनाएं.
aws iam create-role \ --role-name "AWS_IAM_ROLE_NAME" \ --assume-role-policy-document file://role-trust-policy.jsonभूमिका की नीति को, आईएएम नीति से अटैच करें.
aws iam attach-role-policy \ --role-name "AWS_IAM_ROLE_NAME" \ --policy-arn "AWS_IAM_POLICY_ARN"
डेटा को एन्क्रिप्ट यानी सुरक्षित करना
डेटा मैनेजर एपीआई में, डेटा को एन्क्रिप्ट यानी सुरक्षित करने के लिए, डेटा एन्क्रिप्शन की (डीईके) की ज़रूरत होती है. डीईके, सिमेट्रिक कुंजी होती है. इसका इस्तेमाल, डेटा को एन्क्रिप्ट यानी सुरक्षित करने के लिए किया जाता है. आपकी डीईके को, Google Cloud या AWS की क्रिप्टोग्राफ़िक कुंजी के लिए मैनेजमेंट सेवा (केएमएस) की, की एन्क्रिप्शन की (केईके) का इस्तेमाल करके एन्क्रिप्ट यानी सुरक्षित किया जाता है. अनुरोध के तहत, एन्क्रिप्ट यानी सुरक्षित की गई डीईके, केईके का यूआरआई, और डब्लूआईपी की सेवा देने वाली कंपनी की जानकारी भेजी जाती है.
अनुरोध में शामिल डेटा को एन्क्रिप्ट यानी सुरक्षित करने के लिए, फ़ॉर्मैटिंग और हैशिंग से जुड़े वही दिशा-निर्देश अपनाएं जो एन्क्रिप्ट यानी सुरक्षित नहीं किए गए डेटा के लिए अपनाए जाते हैं.
हैश नहीं की गई वैल्यू को एन्क्रिप्ट यानी सुरक्षित न करें. उदाहरण के लिए, region_code या postal_code
का एक AddressInfo.
हर फ़ील्ड के डेटा को फ़ॉर्मैट और हैश करने के बाद, हैश की गई वैल्यू को एन्क्रिप्ट यानी सुरक्षित करने के लिए, यह तरीका अपनाएं:
- हैश बाइट को Base64 कोड में बदलें.
- अपनी डीईके का इस्तेमाल करके, Base64 कोड में बदले गए हैश को एन्क्रिप्ट यानी सुरक्षित करें.
- एन्क्रिप्शन की प्रोसेस से मिले आउटपुट को, हेक्स या Base64 कोड में बदलें.
- फ़ील्ड के लिए, कोड में बदली गई वैल्यू का इस्तेमाल करें.
- अनुरोध में,
encryption_infoऔरencodingसेट करें.
आखिरी चरण पूरा करने के लिए,
IngestAudienceMembersRequest या
IngestEventsRequest
में बदलाव करें, ताकि यह पता चल सके कि आपने अपना डेटा एन्क्रिप्ट यानी सुरक्षित किया है:
encryption_infoफ़ील्ड सेट करें.encodingफ़ील्ड को, एन्क्रिप्ट यानी सुरक्षित किए गए फ़ील्ड की वैल्यू को कोड में बदलने के लिए इस्तेमाल किए गए एन्कोडिंग पर सेट करें.
यहां, Google Cloud की क्रिप्टोग्राफ़िक कुंजी के लिए मैनेजमेंट सेवा (केएमएस) की कुंजी का इस्तेमाल करके किए गए अनुरोध का स्निपेट दिया गया है. इसमें एन्क्रिप्शन और एन्कोडिंग फ़ील्ड सेट किए गए हैं:
{
...
"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"
}
अनुरोध बनाने और भेजने के लिए, डेटा मैनेजर एपीआई की लाइब्रेरी और
यूटिलिटी का इस्तेमाल करने के बारे में जानने के लिए, IngestAudienceMembers कोड का सैंपल
Java के लिए या ingest_audience_members कोड का सैंपल
Python के लिए देखें.
एन्क्रिप्शन से जुड़ी समस्याओं की जानकारी के लिए, गड़बड़ी की जानकारी देखें
एन्क्रिप्ट यानी सुरक्षित किया गया डेटा अपलोड करने के बाद, गड़बड़ी की जानकारी देखें. इससे, एन्क्रिप्शन से जुड़ी चेतावनियों के बारे में पता चलता है. जैसे, PROCESSING_WARNING_REASON_KEK_PERMISSION_DENIED या PROCESSING_WARNING_REASON_DEK_DECRYPTION_ERROR. गड़बड़ी की जानकारी में दिखने वाली चेतावनियों को ठीक करें. इसके बाद, फिर से अनुरोध भेजें. साथ ही, पुष्टि करें कि आपके बदलावों के बाद, गड़बड़ी की जानकारी में अब चेतावनियां नहीं दिख रही हैं.