ডেটা ম্যানেজার API নিম্নলিখিত কী ম্যানেজমেন্ট পরিষেবা ব্যবহার করে ডেটা এনক্রিপ্ট করার সুবিধা প্রদান করে:
কিছু ব্যবহারের ক্ষেত্রে সহায়তা, কী ম্যানেজমেন্ট সার্ভিস (KMS) অনুযায়ী আলাদা হয়:
| বিভাগ | ব্যবহারিক ক্ষেত্র | Google Cloud KMS | AWS KMS |
|---|---|---|---|
| দর্শক | অডিয়েন্স মেম্বারদের পাঠান | ||
| ইভেন্ট | অফলাইন কনভার্সন বা লিডের জন্য উন্নত কনভার্সন | ||
| ইভেন্ট | Google Ads স্টোর সেলস কনভার্সন | ||
| ইভেন্ট | Google Ads-এর মাল্টি-সোর্স কনভার্সন | ||
| ইভেন্ট | Google Analytics-এর মাল্টি-সোর্স ইভেন্ট |
Google Cloud KMS সেট-আপ করা
এনক্রিপশনের জন্য Google Cloud KMS রিসোর্স সেট-আপ করার ধাপগুলি এখানে দেওয়া হল।
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-এর মাধ্যমে প্রথমবার রোটেট করার তারিখ ও সময় দেখানো হয়।
যেমন, প্রতি ৩০ দিন অন্তর কী রোটেট করতে এবং ১ সপ্তাহে প্রথম রোটেশন করতে, 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 Federation দেখুন।
ওয়ার্কলোড আইডেন্টিটি পুল (WIP) তৈরি করুন। পুলটির জন্য
locationঅবশ্যইglobalহতে হবে।gcloud iam workload-identity-pools create WIP_ID \ --location=global \ --display-name="WIP_DISPLAY_NAME" \ --description="WIP_DESCRIPTION"আরও তথ্যের জন্য, ওয়ার্কলোড আইডেন্টিটি পুল ও প্রদানকারী ম্যানেজ করুন দেখুন।
ওয়ার্কলোড আইডেন্টিটি পুল প্রোভাইডার তৈরি করুন।
--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"আপনি যদি অফলাইন কনভার্সন এবং লিডের জন্য Enhanced Conversions-এর জন্য ইভেন্ট ডেটা এনক্রিপ্ট করতে চান, তাহলে 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 KMS সেট-আপ করুন
এনক্রিপশনের জন্য AWS KMS রিসোর্স সেট-আপ করার ধাপ এখানে দেওয়া হল।
AWS কমান্ড লাইন ইন্টারফেস সেট-আপ করুন
- AWS কমান্ড লাইন ইন্টারফেস ইনস্টল করুন।
ইনস্টলেশন যাচাই করতে এই কমান্ড রান করুন:
aws --versionসফলভাবে ইনস্টল করার পরে আউটপুটের স্নিপেট এখানে দেওয়া হল:
aws-cli/2.31.12 Python/3.13.7 ...
AWS ব্যবহারকারী সেট-আপ করে সাইন-ইন করুন
- AWS কমান্ড লাইন ইন্টারফেস ব্যবহার করার জন্য পূর্বশর্ত সম্পূর্ণ করুন।
- IAM Identity Center সেশনে সাইন-ইন করুন।
'কী' তৈরি করুন
সিমেট্রিক KMS কী (KEK) তৈরি করুন।
aws kms create-key \ --key-usage ENCRYPT_DECRYPT \ --key-spec SYMMETRIC_DEFAULT \ --description "KEK for Confidential Matching Data Encryption"আউটপুটে
KeyMetadata-এর অধীনেArnলক্ষ্য করুন। অন্যান্য ধাপে আপনার এই Amazon Resource Name (ARN) প্রয়োজন হবে।AWS_KEY_ARNঐচ্ছিক: আপনার পছন্দের অ্যালিয়াস নাম ব্যবহার করে কী অ্যালিয়াস তৈরি করুন।
aws kms create-alias \ --alias-name "alias/AWS_KEY_ALIAS" \ --target-key-id AWS_KEY_ARNউপনামের প্রয়োজন নেই, তবে AWS কমান্ড লাইন ইন্টারফেস কমান্ড তৈরি করার জন্য এটি উপযোগী। যেমন, আপনি alias ব্যবহার করে কী ARN ফিরিয়ে আনতে পারবেন:
aws kms describe-key --key-id "alias/AWS_KEY_ALIAS" \ --query 'KeyMetadata.Arn' \ --output text
OpenID Connect পরিচয় প্রদানকারী তৈরি করুন
OpenID Connect (OIDC) পরিচয় প্রদানকারী তৈরি করুন। আপনাকে প্রতিটি AWS অ্যাকাউন্টের জন্য এই ধাপটি একবারই করতে হবে।
aws iam create-open-id-connect-provider \
--url https://confidentialcomputing.googleapis.com \
--client-id-list AUDIENCE \
--thumbprint-list "08745487e891c19e3078c1f2a07e452950ef36f6"
আউটপুট থেকে OIDC প্রোভাইডার ARN নোট করুন। অন্যান্য ধাপে আপনার এটি প্রয়োজন হবে।
AWS_OIDC_PROVIDER_ARN
IAM নীতি তৈরি করুন
নিম্নলিখিত কন্টেন্ট সহ
kms-decrypt-policy.jsonনামের একটি JSON ফাইল তৈরি করুন:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "AWS_KEY_ARN" } ] }JSON ফাইল এবং আপনার বেছে নেওয়া নীতির নাম ব্যবহার করে একটি IAM নীতি তৈরি করুন।
aws iam create-policy \ --policy-name "AWS_POLICY_NAME" \ --policy-document file://kms-decrypt-policy.jsonআউটপুটে IAM নীতি ARN নোট করুন। অন্যান্য ধাপে আপনার এটি প্রয়োজন হবে।
AWS_IAM_POLICY_ARN
IAM ভূমিকা তৈরি ও অ্যাটাচ করা
নিম্নলিখিত কন্টেন্ট এবং আগের ধাপ থেকে OIDC প্রোভাইডার 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*" } } } ] }আপনার বেছে নেওয়া ভূমিকার নাম দিয়ে একটি IAM ভূমিকা তৈরি করুন।
aws iam create-role \ --role-name "AWS_IAM_ROLE_NAME" \ --assume-role-policy-document file://role-trust-policy.jsonIAM নীতিতে ভূমিকা নীতি অ্যাটাচ করুন।
aws iam attach-role-policy \ --role-name "AWS_IAM_ROLE_NAME" \ --policy-arn "AWS_IAM_POLICY_ARN"
ডেটা এনক্রিপ্ট করুন
Data Manager API-তে এনক্রিপশনের জন্য ডেটা এনক্রিপশন কী (DEK) প্রয়োজন। DEK হল একটি সিমেট্রিক কী যা আপনি ডেটা এনক্রিপ্ট করতে ব্যবহার করেন। আপনার Google Cloud বা AWS KMS কী এনক্রিপশন কী (KEK) ব্যবহার করে আপনার DEK এনক্রিপ্ট করা হয়। আপনি অনুরোধের অংশ হিসেবে এনক্রিপ্ট করা DEK, KEK URI এবং WIP প্রদানকারী পাঠান।
অনুরোধে এনক্রিপশনের জন্য ডেটা প্রস্তুত করতে, এনক্রিপ্ট না করা ডেটার জন্য আপনি যে ফর্ম্যাটিং ও হ্যাশিং নির্দেশিকা ব্যবহার করেন, সেটিই অনুসরণ করুন।
হ্যাশ না করা ভ্যালু এনক্রিপ্ট করবেন না। যেমন, AddressInfo-এর region_code,
postal_code, city বা administrative_area হ্যাশ করবেন না।
প্রতিটি ফিল্ডের ডেটা ফর্ম্যাট ও হ্যাশ করা হয়ে গেলে, নিম্নলিখিত ধাপগুলি অনুসরণ করে হ্যাশ ভ্যালু এনক্রিপ্ট করুন:
Base64 এনকোডিং ব্যবহার করে হ্যাশ বাইট এনকোড করুন।
আপনার DEK ব্যবহার করে Base64-এনকোড করা হ্যাশ এনক্রিপ্ট করুন। প্রয়োজনীয় সাইফার
XCHACHA20_POLY1305হওয়ার কারণে, Tink-এরencrypt()ফাংশনের জন্য একটি সংশ্লিষ্ট ডেটা প্যারামিটার প্রয়োজন। এই প্যারামিটারটি অবশ্যই খালি থাকতে হবে (যেমন, Python-এb""বা Java-তেnew byte[0])। আপনিnullবা খালি নয় এমন কোনও ভ্যালু পাস করলে, ডেটা ম্যানেজার API ডেটা ডিক্রিপ্ট করতে পারবে না।হেক্স বা Base64 এনকোডিং ব্যবহার করে এনক্রিপশন প্রসেস থেকে আউটপুট এনকোড করুন।
ফিল্ডের জন্য এনকোড করা ভ্যালু ব্যবহার করুন।
অনুরোধে
encryption_infoএবংencodingসেট করুন।
শেষ ধাপ সম্পূর্ণ করতে, IngestAudienceMembersRequest অথবা
IngestEventsRequest
পরিবর্তন করুন যাতে বোঝা যায় যে আপনি ডেটা
এনক্রিপ্ট করেছেন:
encryption_infoফিল্ড সেট করুন।এনক্রিপ্ট করা ফিল্ডের ভ্যালু এনকোড করার জন্য ব্যবহৃত এনকোডিংয়ে
encodingফিল্ড সেট করুন।
Google Cloud KMS কী ব্যবহার করে এবং এনক্রিপশন ও এনকোডিং ফিল্ড সেট করে করা অনুরোধের একটি স্নিপেট এখানে দেওয়া হল:
{
...
"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"
}
অনুরোধ তৈরি ও পাঠাতে, ডেটা ম্যানেজার API লাইব্রেরি ও ইউটিলিটি ব্যবহার করতে,
Java-এর জন্য
IngestAudienceMembers কোড স্যাম্পেল
অথবা Python-এর জন্য
ingest_audience_members কোড স্যাম্পেল
দেখুন।
এনক্রিপশন সংক্রান্ত সমস্যার জন্য ডায়াগনস্টিক চেক করুন
এনক্রিপ্ট করা ডেটা আপলোড করার পরে, ডায়াগনস্টিক ব্যবহার করে
এনক্রিপশন সম্পর্কিত কোনও সতর্কতা আছে কিনা তা চেক করুন, যেমন
PROCESSING_WARNING_REASON_KEK_PERMISSION_DENIED বা
PROCESSING_WARNING_REASON_DEK_DECRYPTION_ERROR। ডায়াগনস্টিক্সে দেখানো যেকোনও সতর্কতার সমাধান করুন, আবার অনুরোধ পাঠান এবং আপনার পরিবর্তনের পরে ডায়াগনস্টিক্স আর কোনও সতর্কতা দেখাচ্ছে না কিনা তা যাচাই করুন।