ব্যবহারকারীর ডেটা এনক্রিপ্ট করুন

এখানে কিভাবে এনক্রিপ্ট করা ডেটা পাঠাতে হয়:

Google ক্লাউড কমান্ড লাইন ইন্টারফেস সেট আপ করুন

  1. Google ক্লাউড কমান্ড লাইন ইন্টারফেস ইনস্টল এবং আরম্ভ করুন

  2. আপনার gcloud উপাদানগুলি আপ টু ডেট আছে তা নিশ্চিত করতে, নিম্নলিখিত কমান্ডটি চালান।

    gcloud components update
    
  3. একটি নতুন Google ক্লাউড প্রকল্প নির্বাচন বা তৈরি করতে এবং ক্লাউড কী ম্যানেজমেন্ট পরিষেবা সক্ষম করতে, ক্লাউড কেএমএস সক্ষম করুন ক্লিক করুন৷

    ক্লাউড KMS সক্ষম করুন৷
  4. আপনার পরিবেশে আপনার প্রকল্প সেট করতে, gcloud config set কমান্ডটি ব্যবহার করুন। প্রকল্পটি ইতিমধ্যে আপনার পরিবেশে সেট করা আছে কিনা তা পরীক্ষা করতে, gcloud config list চালান।

    যদি কোনও project সেট না থাকে, বা আপনি আপনার কীটির জন্য একটি ভিন্ন প্রকল্প ব্যবহার করতে চান, gcloud config set চালান:

    gcloud config set project PROJECT_ID
    

একটি কী তৈরি করুন

আরও তথ্যের জন্য, কী ম্যানেজমেন্ট সার্ভিস ডকুমেন্টেশন দেখুন।

  1. একটি চাবির রিং তৈরি করুন।

    gcloud kms keyrings create KEY_RING_NAME \
        --location KEY_RING_LOCATION
    

    আরও তথ্যের জন্য, একটি কী রিং তৈরি করুন

  2. কী রিং এ একটি কী তৈরি করুন। 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"
    

    আরও তথ্যের জন্য, একটি কী তৈরি করুন দেখুন।

একটি কাজের চাপ পরিচয় পুল প্রদানকারী তৈরি করুন

এই বিভাগটি ওয়ার্কলোড আইডেন্টিটি ফেডারেশনের একটি সংক্ষিপ্ত বিবরণ। আরও তথ্যের জন্য, ওয়ার্কলোড আইডেন্টিটি ফেডারেশন ডকুমেন্টেশন দেখুন।

  1. একটি ওয়ার্কলোড আইডেন্টিটি পুল (WIP) তৈরি করুন। পুলের location অবশ্যই global হতে হবে।

    gcloud iam workload-identity-pools create WIP_ID \
       --location=global \
       --display-name="WIP_DISPLAY_NAME" \
       --description="WIP_DESCRIPTION"
    

    আরও তথ্যের জন্য, কাজের চাপের পরিচয় পুল এবং প্রদানকারীদের পরিচালনা দেখুন।

  2. একটি কাজের চাপ পরিচয় পুল প্রদানকারী তৈরি করুন. --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"
    
  3. 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"
    

ডেটা এনক্রিপ্ট করুন

ডেটা ম্যানেজার API-এ এনক্রিপশনের জন্য একটি ডেটা এনক্রিপশন কী (DEK) প্রয়োজন। একটি DEK হল একটি সিমেট্রিক কী যা আপনি ডেটা এনক্রিপ্ট করতে ব্যবহার করেন। আপনার DEK আপনার Google ক্লাউড KMS কী ব্যবহার করে এনক্রিপ্ট করা হয়েছে। আপনি অনুরোধের অংশ হিসাবে এনক্রিপ্ট করা DEK পাঠান।

এনক্রিপশনের অনুরোধে ডেটা প্রস্তুত করতে, এনক্রিপ্ট করা ডেটার জন্য আপনি যে ফর্ম্যাটিং এবং হ্যাশিং নির্দেশিকা ব্যবহার করবেন সেই একই ফর্ম্যাটিং এবং হ্যাশিং নির্দেশিকা অনুসরণ করুন।

আনহ্যাশ করা মান এনক্রিপ্ট করবেন না। উদাহরণস্বরূপ, একটি AddressInfo এর region_code বা postal_code

একবার প্রতিটি ক্ষেত্রের ডেটা ফর্ম্যাট এবং হ্যাশ হয়ে গেলে, নিম্নলিখিত পদক্ষেপগুলি ব্যবহার করে হ্যাশড মান এনক্রিপ্ট করুন:

  1. Base64 এনকোডিং ব্যবহার করে হ্যাশ বাইট এনকোড করুন।
  2. আপনার DEK ব্যবহার করে Base64-এনকোডেড হ্যাশ এনক্রিপ্ট করুন।
  3. হেক্স বা বেস64 এনকোডিং ব্যবহার করে এনক্রিপশন প্রক্রিয়া থেকে আউটপুট এনকোড করুন।
  4. ক্ষেত্রের জন্য এনকোড করা মান ব্যবহার করুন।
  5. অনুরোধে 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"
}

ডেটা ম্যানেজার API লাইব্রেরি এবং ইউটিলিটিগুলি তৈরি করতে এবং একটি অনুরোধ পাঠাতে, Java এর জন্য IngestAudienceMembersWithEncryption কোড নমুনা বা পাইথনের জন্য ingest_audience_members_with_encryption কোড নমুনা দেখুন।