গ্রাহক-পরিচালিত এনক্রিপশন কী (CMEK) ব্যবহার করুন

এই পৃষ্ঠাটি MongoDB সামঞ্জস্য সহ ক্লাউড ফায়ারস্টোরের জন্য গ্রাহক-পরিচালিত এনক্রিপশন কী (CMEK) সম্পর্কিত কাজগুলি কীভাবে সম্পাদন করতে হয় তা বর্ণনা করে। CMEK সম্পর্কে সাধারণভাবে আরও তথ্যের জন্য, কখন এবং কেন এটি সক্ষম করতে হবে তা সহ, ক্লাউড KMS ডকুমেন্টেশন দেখুন।

তোমার CMEK চাবি প্রস্তুত করো।

MongoDB সামঞ্জস্যপূর্ণ ডাটাবেস সহ একটি CMEK-সুরক্ষিত ক্লাউড ফায়ারস্টোর তৈরি করার আগে, আপনাকে নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করতে হবে:

  1. MongoDB সামঞ্জস্যপূর্ণ CMEK বৈশিষ্ট্য সহ ক্লাউড ফায়ারস্টোরে অ্যাক্সেসের অনুরোধ করুন
  2. MongoDB সামঞ্জস্যপূর্ণ পরিষেবা এজেন্ট দিয়ে একটি ক্লাউড ফায়ারস্টোর তৈরি করুন (অথবা পুনরুদ্ধার করুন)
  3. একটি CMEK কী তৈরি করুন
  4. সেই কী-এর জন্য IAM সেটিংস কনফিগার করুন

প্রতিটি প্রকল্পের জন্য এই পদক্ষেপগুলি সম্পূর্ণ করুন যেখানে MongoDB সামঞ্জস্যপূর্ণ ডাটাবেস সহ CMEK-সুরক্ষিত ক্লাউড ফায়ারস্টোর থাকবে। আপনি যদি পরে একটি নতুন CMEK কী তৈরি করেন, তাহলে আপনাকে সেই কীটির জন্য IAM সেটিংস কনফিগার করতে হবে।

অ্যাক্সেসের অনুরোধ করুন

MongoDB সামঞ্জস্যপূর্ণ পরিষেবা এজেন্ট দিয়ে একটি ক্লাউড ফায়ারস্টোর তৈরি করার আগে, অ্যাক্সেস অনুরোধ ফর্মটি পূরণ করে CMEK বৈশিষ্ট্যটিতে অ্যাক্সেসের জন্য অনুরোধ করুন।

MongoDB সামঞ্জস্যপূর্ণ পরিষেবা এজেন্ট দিয়ে একটি ক্লাউড ফায়ারস্টোর তৈরি করুন

একটি CMEK কী তৈরি করার আগে, আপনার অবশ্যই একটি ক্লাউড ফায়ারস্টোর থাকতে হবে যার সাথে MongoDB সামঞ্জস্যপূর্ণ পরিষেবা এজেন্ট রয়েছে, যা এক ধরণের Google-পরিচালিত পরিষেবা অ্যাকাউন্ট যা MongoDB সামঞ্জস্যপূর্ণ ক্লাউড ফায়ারস্টোর কী অ্যাক্সেস করতে ব্যবহার করে।

আপনার পক্ষে CMEK কী অ্যাক্সেস করার জন্য MongoDB সামঞ্জস্যপূর্ণ ক্লাউড ফায়ারস্টোর যে পরিষেবা এজেন্ট ব্যবহার করে, সেটি তৈরি করতে পরিষেবা পরিচয় তৈরি কমান্ডটি চালান। এই কমান্ডটি পরিষেবা অ্যাকাউন্ট তৈরি করে যদি এটি ইতিমধ্যে বিদ্যমান না থাকে, তারপর এটি প্রদর্শন করে।

gcloud beta services identity create \
    --service=firestore.googleapis.com \
    --project FIRESTORE_PROJECT

আপনার ক্লাউড ফায়ারস্টোরের জন্য যে প্রকল্পটি ব্যবহার করার পরিকল্পনা করছেন, FIRESTORE_PROJECT পরিবর্তে MongoDB সামঞ্জস্যতা ডেটাবেস ব্যবহার করুন।

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

Service identity created:
service-xxx@gcp-sa-firestore.

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

আপনি ক্লাউড কেএমএসে সরাসরি তৈরি একটি কী অথবা ক্লাউড এক্সটার্নাল কী ম্যানেজারের মাধ্যমে উপলব্ধ একটি বহিরাগতভাবে পরিচালিত কী ব্যবহার করতে পারেন।

ক্লাউড KMS কী-এর অবস্থান অবশ্যই MongoDB-এর সাথে ক্লাউড ফায়ারস্টোরের সামঞ্জস্যপূর্ণ ডাটাবেসের অবস্থানের সাথে একই হতে হবে, যেখানে এটি ব্যবহার করা হবে।

  • আঞ্চলিক ডাটাবেস অবস্থানের জন্য, কী রিং, কী এবং ডাটাবেসের জন্য একই অবস্থানের নাম ব্যবহার করুন কারণ অবস্থানের নামগুলিতে এক-থেকে-এক ম্যাপিং থাকে।

    উদাহরণস্বরূপ, যদি আপনি us-west1 তে একটি CMEK-সুরক্ষিত ডাটাবেস তৈরি করতে চান, তাহলে us-west1 তে একটি কী রিং এবং কী তৈরি করুন।

  • মাল্টি-রিজিওন ডাটাবেস অবস্থানের জন্য, KMS মাল্টি-রিজিওন অবস্থানের অবস্থানের নাম ব্যবহার করুন:

    • MongoDB সামঞ্জস্যপূর্ণ nam5 মাল্টি-রিজিওন লোকেশন সহ ক্লাউড ফায়ারস্টোরের জন্য ক্লাউড KMS us মাল্টি-রিজিওন লোকেশন ব্যবহার করুন।

    • MongoDB সামঞ্জস্যপূর্ণ eur3 মাল্টি-রিজিওন লোকেশন সহ ক্লাউড ফায়ারস্টোরের জন্য ক্লাউড KMS europe মাল্টি-রিজিওন লোকেশন ব্যবহার করুন।

যে Google Cloud প্রজেক্টে আপনি আপনার কীগুলি পরিচালনা করতে চান, সেখানে নিম্নলিখিতগুলি সম্পূর্ণ করুন:

  1. ক্লাউড KMS API সক্ষম করুন

  2. নিম্নলিখিত বিকল্পগুলির মধ্যে একটি ব্যবহার করে একটি চাবির রিং এবং একটি চাবি তৈরি করুন:

কীটির জন্য IAM সেটিংস কনফিগার করুন

কনসোল

আপনার পরিষেবা এজেন্টকে ক্লাউড KMS ভূমিকা প্রদান করতে, নিম্নলিখিতগুলি করুন। আপনি যদি কম গ্র্যানুলারিটি চান তবে কী বা কী-রিং স্তরেও অনুমতি প্রদান করতে পারবেন।

  1. গুগল ক্লাউড কনসোলে, IAM পৃষ্ঠায় যান।

    IAM পৃষ্ঠায় যান।

  2. যোগ করুন ক্লিক করুন।

  3. MongoDB সামঞ্জস্যপূর্ণ পরিষেবা এজেন্ট সহ আপনার ক্লাউড ফায়ারস্টোরের জন্য ইমেল-ফর্ম্যাট করা আইডি লিখুন।

  4. ক্লাউড কেএমএস ক্রিপ্টোকি এনক্রিপ্টার/ডিক্রিপ্টার ভূমিকা নির্বাচন করুন।

  5. সংরক্ষণ করুন ক্লিক করুন।

জিক্লাউড

আপনার পরিষেবা এজেন্টকে cloudkms.cryptoKeyEncrypterDecrypter ভূমিকা প্রদান করুন:

gcloud kms keys add-iam-policy-binding KMS_KEY \
--keyring KMS_KEYRING\
--location KMS_LOCATION \
--member serviceAccount:SERVICE_AGENT_EMAIL \
--role roles/cloudkms.cryptoKeyEncrypterDecrypter \
--project KMS_PROJECT

নিম্নলিখিতগুলি প্রতিস্থাপন করুন:

  • KMS_KEY আপনার কী-তে নির্ধারিত নাম সহ
  • KMS_KEYRING , KMS কী রিং সহ, যাতে চাবিটি থাকে
  • KMS_LOCATION চাবির রিং ধারণকারী অঞ্চল সহ
  • আপনি যে পরিষেবা এজেন্টকে অ্যাক্সেস দিচ্ছেন তার ইমেল-ফর্ম্যাট করা শনাক্তকারী সহ SERVICE_AGENT_EMAIL
  • KMS_PROJECT প্রকল্পের সাথে যেখানে কীটি রয়েছে

টার্মিনালটি নিম্নলিখিতগুলির মতো একটি প্রতিক্রিয়া প্রদর্শন করবে:

Updated IAM policy for key KMS_KEY.
bindings:
- members:
- serviceAccount:
service-{project-number}@gcp-sa-firestore.
role: roles/cloudkms.cryptoKeyEncrypterDecrypter

একটি CMEK-সক্ষম ডাটাবেস তৈরি করুন

আপনার CMEK কী তৈরি এবং কনফিগার করার পরে, আপনি একটি CMEK-সুরক্ষিত ডাটাবেস তৈরি করতে পারেন। MongoDB সামঞ্জস্যপূর্ণ ডাটাবেস সহ বিদ্যমান ক্লাউড ফায়ারস্টোর যা Google ডিফল্ট এনক্রিপশন দ্বারা সুরক্ষিত, সেগুলিকে CMEK ব্যবহারে রূপান্তর করা যাবে না।

আপনি যখন একটি CMEK-সক্ষম ডাটাবেস তৈরি করবেন তখনই আপনি একটি এনক্রিপশন ধরণ এবং কী নির্বাচন করতে পারবেন।

কনসোল

  1. গুগল ক্লাউড কনসোলে, ডাটাবেস পৃষ্ঠায় যান।

    ডাটাবেস পৃষ্ঠায় যান।

  2. একটি ফায়ারস্টোর ডেটাবেস তৈরি করুন ক্লিক করুন।

  3. একটি ডাটাবেস আইডি লিখুন।

  4. এন্টারপ্রাইজ সংস্করণ নির্বাচন করুন।

  5. আপনার ডাটাবেসের জন্য একটি অবস্থান নির্বাচন করুন।

  6. এনক্রিপশন বিকল্পগুলি দেখান ক্লিক করুন, এবং তারপর ক্লাউড KMS কী নির্বাচন করুন।

  7. ডাটাবেসের জন্য যে CMEK কীটি ব্যবহার করতে চান তার জন্য রিসোর্সের নাম নির্বাচন করুন বা লিখুন।

  8. কীগুলির তালিকা বর্তমান Google Cloud প্রকল্প এবং আপনার নির্বাচিত ডাটাবেস অবস্থানের মধ্যে সীমাবদ্ধ। অন্য কোনও Google Cloud প্রকল্প থেকে কী ব্যবহার করতে, "প্রকল্প পরিবর্তন করুন" বা "ম্যানুয়ালি কী প্রবেশ করুন" এ ক্লিক করুন।

  9. যদি আপনাকে MongoDB সামঞ্জস্য পরিষেবা অ্যাকাউন্টের সাথে Cloud Firestore-এর মূল অনুমতি প্রদানের অনুরোধ করা হয়, তাহলে Grant-এ ক্লিক করুন। একটি CMEK ডাটাবেস তৈরি করতে, আপনার MongoDB সামঞ্জস্য পরিষেবা অ্যাকাউন্টের সাথে Cloud Firestore-কে cloudkms.cryptoKeyEncrypterDecrypter ভূমিকা প্রদান করতে হবে।

  10. মোবাইল এবং ওয়েব ক্লায়েন্টদের জন্য নিরাপত্তা নিয়ম নির্বাচন করুন।

  11. ডাটাবেস তৈরি করুন ক্লিক করুন।

ডাটাবেস তৈরি হওয়ার পর, আপনি ডাটাবেসের বিবরণ দেখে যাচাই করতে পারেন যে ডাটাবেসটি CMEK-সক্ষম:

  • যদি আপনার ডাটাবেস CMEK দ্বারা সুরক্ষিত থাকে, তাহলে এনক্রিপশন টাইপ ফিল্ডটি গ্রাহক-পরিচালিত হিসাবে দেখানো হবে এবং এনক্রিপশন কী ফিল্ডটি সংশ্লিষ্ট ক্লাউড KMS এবং এই ডাটাবেসটি সুরক্ষিত করার জন্য ব্যবহৃত কী সংস্করণটি তালিকাভুক্ত করবে।
  • যদি আপনার ডাটাবেস CMEK দ্বারা সুরক্ষিত না থাকে, তাহলে Encryption type ক্ষেত্রটি Google-managed হিসাবে প্রদর্শিত হবে।

জিক্লাউড

Google Cloud CLI দিয়ে সিএমইকে-সক্ষম ডাটাবেস তৈরি করার আগে, সর্বশেষ সংস্করণটি ইনস্টল করুন এবং gcloud CLI অনুমোদন করুন। আরও তথ্যের জন্য, gcloud CLI ইনস্টল করুন দেখুন।

gcloud firestore databases create \
    --location=FIRESTORE_DATABASE_LOCATION \
    --database=DATABASE_ID \
    --edition=enterprise \
    --kms-key-name=KMS_KEY_NAME \
    --project=FIRESTORE_PROJECT

নিম্নলিখিতগুলি প্রতিস্থাপন করুন:

  • ডাটাবেসের অবস্থান সহ FIRESTORE_DATABASE_LOCATION
  • ডাটাবেসের জন্য একটি আইডি সহ DATABASE_ID
  • KMS_KEY_NAME আপনার নির্ধারিত নাম সহ। নিম্নলিখিত ফর্ম্যাটে কীটির জন্য সম্পূর্ণ রিসোর্স নামটি ব্যবহার করুন:

    projects/ KMS_PROJECT /locations/ KMS_LOCATION /keyRings/ KMS_KEYRING_ID /cryptoKeys/ KMS_KEY_ID

  • আপনার ক্লাউড ফায়ারস্টোরের জন্য MongoDB সামঞ্জস্যপূর্ণ ডাটাবেসের জন্য ব্যবহারযোগ্য প্রকল্পের সাথে FIRESTORE_PROJECT

একটি CMEK-সুরক্ষিত ডাটাবেস অ্যাক্সেস করুন

CMEK-সুরক্ষিত ডাটাবেসে পাঠানো সমস্ত পঠন, লেখা এবং কোয়েরি অপারেশনগুলি Google ডিফল্ট এনক্রিপ্ট করা ডাটাবেসের মতোই কাজ করবে। উদাহরণস্বরূপ, প্রতিটি অনুরোধের জন্য আপনাকে একটি কী প্রদান করতে হবে না।

একটি CMEK-সুরক্ষিত ডাটাবেস পুনরুদ্ধার করুন

ব্যাকআপ থেকে CMEK-সুরক্ষিত ডাটাবেস পুনরুদ্ধার করার আগে:

  • আপনি ডাটাবেসটি CMEK এনক্রিপশনে, Google-এর ডিফল্ট এনক্রিপশনে (CMEK-নন-নন) পুনরুদ্ধার করতে চান, নাকি ব্যাকআপের মতো একই এনক্রিপশনে পুনরুদ্ধার করতে চান তা সিদ্ধান্ত নিন।
  • ব্যাকআপ এনক্রিপ্ট করার জন্য ব্যবহৃত কী (প্রাথমিক-সংস্করণ) এবং কী সংস্করণটি প্রস্তুত করুন। কী এবং কী সংস্করণ উভয়ই সক্ষম করুন।

জিক্লাউড

CMEK-সুরক্ষিত ডাটাবেসটি CMEK এনক্রিপশনে পুনরুদ্ধার করুন।

CMEK এনক্রিপশনে পুনরুদ্ধার করতে, পুনরুদ্ধার করা ডাটাবেসের জন্য এনক্রিপশন টাইপ কনফিগার করতে ঐচ্ছিক encryption-type এবং kms-key-name ফ্ল্যাগ সহ gcloud firestore databases restore কমান্ডটি চালান। যদি আপনি এনক্রিপশন টাইপ নির্দিষ্ট না করেন, তাহলে পুনরুদ্ধার করা ডাটাবেস ব্যাকআপের মতো একই এনক্রিপশন কনফিগারেশন ব্যবহার করবে।

gcloud firestore databases restore \
--encryption-type=customer-managed-encryption \
--kms-key-name=KMS_KEY_NAME

KMS_KEY_NAME পরিবর্তে আপনি যে নামটি কীটিতে দিয়েছেন তা দিন। নিম্নলিখিত ফর্ম্যাটে কীটির জন্য সম্পূর্ণ রিসোর্স নামটি ব্যবহার করুন:

projects/ KMS_PROJECT /locations/ KMS_LOCATION /keyRings/ KMS_KEYRING_ID /cryptoKeys/ KMS_KEY_ID

একটি CMEK-সুরক্ষিত ডাটাবেস ডিফল্ট এনক্রিপশনে পুনরুদ্ধার করুন

গুগলের ডিফল্ট এনক্রিপশন (CMEK নয়) তে পুনরুদ্ধার করতে, নিম্নলিখিত উপায়ে encryption-type ফ্ল্যাগ সেট করুন:

gcloud firestore databases restore \
--encryption-type=google-default-encryption

ব্যাকআপের মতো একই এনক্রিপশন টাইপে একটি CMEK-সুরক্ষিত ডাটাবেস পুনরুদ্ধার করুন।

ব্যাকআপের মতো একই এনক্রিপশন টাইপে পুনরুদ্ধার করতে, নিম্নলিখিত পদ্ধতিতে encryption-type ফ্ল্যাগ সেট করুন:

gcloud firestore databases restore --encryption-type=use-source-encryption

ফায়ারবেস সিএলআই

CMEK-সুরক্ষিত ডাটাবেসটি CMEK এনক্রিপশনে পুনরুদ্ধার করুন।

CMEK এনক্রিপশনে পুনরুদ্ধার করতে, ঐচ্ছিক encryption-type এবং kms-key-name ফ্ল্যাগ ব্যবহার করুন। যদি আপনি এনক্রিপশনের ধরণ নির্দিষ্ট না করেন, তাহলে পুনরুদ্ধার করা ডাটাবেস ব্যাকআপের মতো একই এনক্রিপশন কনফিগারেশন ব্যবহার করবে।

firebase firestore:databases:restore \
--database DATABASE_ID \
--backup 'projects/FIRESTORE_PROJECT/locations/FIRESTORE_LOCATION/backups/BACKUP_ID' \
--encryption-type CUSTOMER_MANAGED_ENCRYPTION \
--kms-key-name projects/KMS_PROJECT/locations/KMS_LOCATION/keyRings/KMS_KEYRING_ID/cryptoKeys/KMS_KEY_ID \
--project FIRESTORE_PROJECT

নিম্নলিখিতগুলি প্রতিস্থাপন করুন:

  • আপনার ডাটাবেসের আইডি সহ DATABASE_ID
  • আপনার ক্লাউড ফায়ারস্টোরের জন্য MongoDB সামঞ্জস্যপূর্ণ ডাটাবেসের জন্য ব্যবহারযোগ্য প্রকল্পের সাথে FIRESTORE_PROJECT
  • MongoDB সামঞ্জস্যপূর্ণ ডাটাবেসের সাহায্যে আপনার ক্লাউড ফায়ারস্টোরের অবস্থান সহ FIRESTORE_LOCATION
  • আপনার ব্যাকআপের আইডি সহ BACKUP_ID
  • আপনার CMEK কী ধারণকারী প্রকল্পের সাথে KMS_PROJECT
  • KMS_LOCATION যেখানে আপনার CMEK কী এবং কীরিং আছে সেই অবস্থানটি রয়েছে
  • আপনার CMEK কীরিং এর আইডি সহ KMS_KEYRING_ID

নিশ্চিত করুন যে আপনার পুনরুদ্ধার করা ক্লাউড ফায়ারস্টোর MongoDB সামঞ্জস্যপূর্ণ ডাটাবেসটি CMEK-এনক্রিপ্ট করা আছে:

firebase firestore:databases:get DATABASE_ID --project FIRESTORE_PROJECT

একটি CMEK-সুরক্ষিত ডাটাবেস ডিফল্ট এনক্রিপশনে পুনরুদ্ধার করুন

গুগলের ডিফল্ট এনক্রিপশন (CMEK নয়) তে পুনরুদ্ধার করতে, নিম্নলিখিত উপায়ে encryption-type ফ্ল্যাগ সেট করুন:

firebase firestore:databases:restore \
--database DATABASE_ID \
--backup 'projects/FIRESTORE_PROJECT/locations/FIRESTORE_LOCATION/backups/BACKUP_ID' \
--encryption-type GOOGLE_DEFAULT_ENCRYPTION \
--project FIRESTORE_PROJECT

নিম্নলিখিতগুলি প্রতিস্থাপন করুন:

  • আপনার ডাটাবেসের আইডি সহ DATABASE_ID
  • আপনার ক্লাউড ফায়ারস্টোরের জন্য MongoDB সামঞ্জস্যপূর্ণ ডাটাবেসের জন্য ব্যবহারযোগ্য প্রকল্পের সাথে FIRESTORE_PROJECT
  • MongoDB সামঞ্জস্যপূর্ণ ডাটাবেসের সাহায্যে আপনার ক্লাউড ফায়ারস্টোরের অবস্থান সহ FIRESTORE_LOCATION
  • আপনার ব্যাকআপের আইডি সহ BACKUP_ID

ব্যাকআপের মতো একই এনক্রিপশন টাইপে একটি CMEK-সুরক্ষিত ডাটাবেস পুনরুদ্ধার করুন।

ব্যাকআপের মতো একই এনক্রিপশন টাইপে পুনরুদ্ধার করতে, নিম্নলিখিত পদ্ধতিতে encryption-type ফ্ল্যাগ সেট করুন:

firebase firestore:databases:restore \
--database DATABASE_ID \
--backup 'projects/FIRESTORE_PROJECT/locations/FIRESTORE_LOCATION/backups/BACKUP_ID' \
--encryption-type USE_SOURCE_ENCRYPTION

নিম্নলিখিতগুলি প্রতিস্থাপন করুন:

  • আপনার ডাটাবেসের আইডি সহ DATABASE_ID
  • আপনার ক্লাউড ফায়ারস্টোরের জন্য MongoDB সামঞ্জস্যপূর্ণ ডাটাবেসের জন্য ব্যবহারযোগ্য প্রকল্পের সাথে FIRESTORE_PROJECT
  • MongoDB সামঞ্জস্যপূর্ণ ডাটাবেসের সাহায্যে আপনার ক্লাউড ফায়ারস্টোরের অবস্থান সহ FIRESTORE_LOCATION
  • আপনার ব্যাকআপের আইডি সহ BACKUP_ID

একটি CMEK-সুরক্ষিত ডাটাবেস ক্লোন করুন

CMEK-সুরক্ষিত ডাটাবেস ক্লোন করার আগে:

  • আপনি ডাটাবেসটি CMEK এনক্রিপশনে, Google-এর ডিফল্ট এনক্রিপশনে (CMEK নয়), নাকি সোর্স ডাটাবেসের মতো একই এনক্রিপশনে ক্লোন করতে চান তা নির্ধারণ করুন।
  • সোর্স ডাটাবেস এনক্রিপ্ট করার জন্য ব্যবহৃত কী (প্রাথমিক-সংস্করণ) এবং কী সংস্করণটি প্রস্তুত করুন। কী এবং কী সংস্করণ উভয়ই সক্ষম করুন।

জিক্লাউড

CMEK-সুরক্ষিত ডাটাবেসকে CMEK এনক্রিপশনে ক্লোন করুন

CMEK এনক্রিপশনে ক্লোন করতে, ক্লোন করা ডাটাবেসের জন্য এনক্রিপশন টাইপ কনফিগার করতে ঐচ্ছিক encryption-type এবং kms-key-name ফ্ল্যাগ সহ gcloud alpha firestore databases clone কমান্ডটি চালান। যদি আপনি এনক্রিপশন টাইপ নির্দিষ্ট না করেন, তাহলে ক্লোন করা ডাটাবেস সোর্স ডাটাবেসের মতো একই এনক্রিপশন কনফিগারেশন ব্যবহার করবে।

gcloud alpha firestore databases clone \
--encryption-type=customer-managed-encryption \
--kms-key-name=KMS_KEY_NAME

KMS_KEY_NAME পরিবর্তে আপনি যে নামটি কীটিতে দিয়েছেন তা দিন। নিম্নলিখিত ফর্ম্যাটে কীটির জন্য সম্পূর্ণ রিসোর্স নামটি ব্যবহার করুন:

projects/KMS_PROJECT/locations/KMS_LOCATION/keyRings/KMS_KEYRING_ID/cryptoKeys/KMS_KEY_ID

একটি CMEK-সুরক্ষিত ডাটাবেসকে ডিফল্ট এনক্রিপশনে ক্লোন করুন

গুগলের ডিফল্ট এনক্রিপশনে (CMEK নয়) ক্লোন করতে, encryption-type ফ্ল্যাগটি নিম্নলিখিত উপায়ে সেট করুন:

gcloud alpha firestore databases clone \
--encryption-type=google-default-encryption

সোর্স ডাটাবেসের মতো একই এনক্রিপশন টাইপের একটি CMEK-সুরক্ষিত ডাটাবেস ক্লোন করুন।

সোর্স ডাটাবেসের মতো একই এনক্রিপশন টাইপে ক্লোন করতে, নিম্নলিখিত পদ্ধতিতে encryption-type ফ্ল্যাগ সেট করুন:

gcloud alpha firestore databases clone \
--encryption-type=use-source-encryption

ব্যবহৃত কীটি দেখুন

জিক্লাউড

ডাটাবেস CMEK কনফিগারেশন নিশ্চিত করতে আপনি databases describe gcloud CLI কমান্ড ব্যবহার করতে পারেন:

gcloud firestore databases describe \
  --database=DATABASE_ID \
  --project=FIRESTORE_PROJECT

নিচের চিত্রের মতো প্রতিক্রিয়ায় cmekConfig ক্ষেত্রে আপনার CMEK তথ্য দেখা উচিত:

cmekConfig:
    activeKeyVersion:
    - projects/PROJECT_ID/locations/us/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME/cryptoKeyVersions/1
    kmsKeyName: projects/PROJECT_ID/locations/us/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME
  locationId: nam5
  name: projects/PROJECT_ID/databases/DATABASE_ID

প্রতিক্রিয়াটিতে নিম্নলিখিত তথ্য রয়েছে:

  • kmsKeyName : আপনার CMEK-সুরক্ষিত ডাটাবেস এনক্রিপ্ট করতে ব্যবহৃত কী-এর সম্পূর্ণ কী রিসোর্স নাম।
  • activeKeyVersion : CMEK-সুরক্ষিত ডাটাবেস দ্বারা ব্যবহৃত সমস্ত কী সংস্করণের একটি তালিকা। কী ঘূর্ণনের সময়, আপনার একাধিক সক্রিয় কী সংস্করণ থাকতে পারে। কী ঘূর্ণনের সময় পুরানো কী সংস্করণ এবং নতুন কী সংস্করণ উভয়ই উপলব্ধ থাকা প্রয়োজন। পুরানো কী সংস্করণটি অক্ষম করবেন না যতক্ষণ না এটি আর activeKeyVersion ক্ষেত্রে প্রদর্শিত না হয়।

REST API

HTTP অনুরোধ:

GET https://firestore.googleapis.com/v1/{name=projects/FIRESTORE_PROJECT/databases/DATABASE_ID}

অনুরোধের মূল অংশে cmek_config.kms_key_name ক্ষেত্রে CMEK কনফিগার করুন। একটি ক্লাউড KMS কী-এর সম্পূর্ণ রিসোর্স আইডিতে সেট করুন। এই ডাটাবেসের মতো একই স্থানে শুধুমাত্র একটি কী অনুমোদিত।

এই মানটি projects/{KMS_PROJECT}/locations/{KMS_LOCATION}/keyRings/{KMS_KEYRING_ID}/cryptoKeys/{KMS_KEY_ID} ফর্ম্যাটে ক্লাউড KMS কী রিসোর্স আইডি হওয়া উচিত।

অন্যান্য ক্ষেত্রের আরও তথ্যের জন্য, database create পৃষ্ঠাটি দেখুন।

অনুরোধের উদাহরণ:

curl 'https://firestore.googleapis.com/v1/projects/FIRESTORE_PROJECT/databases/{DATABASE_ID}' \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-type: application/json"

উদাহরণ প্রতিক্রিয়া:

{
  "name": "projects/FIRESTORE_PROJECT/databases/{DATABASE_ID}",
  "locationId": "{FIRESTORE_DATABASE_LOCATION}",
  "type": "FIRESTORE_NATIVE",
  "cmekConfig": {
    "kmsKeyName": "projects/{KMS_PROJECT}/locations/{KMS_LOCATION}/keyRings/{KMS_KEYRING_ID}/cryptoKeys/{KMS_KEY_ID}",
    "activeKeyVersion": [
      "projects/{KMS_PROJECT}/locations/{KMS_LOCATION}/keyRings/{KMS_KEYRING_ID}/cryptoKeys/{KMS_KEY_ID}/cryptoKeyVersions/1"
    ]
  },
  ...
}

একটি কী অক্ষম করুন

ডাটাবেসের সাথে সম্পর্কিত একটি কী নিষ্ক্রিয় করতে, নিম্নলিখিতগুলি সম্পূর্ণ করুন:

  1. ডাটাবেসের জন্য ব্যবহৃত মূল সংস্করণগুলি দেখুন
  2. ঐ কী ভার্সনগুলি অক্ষম করুন
  3. পরিবর্তনটি কার্যকর হওয়ার জন্য অপেক্ষা করুন এবং ডেটা আর অ্যাক্সেসযোগ্য কিনা তা পরীক্ষা করুন। পরিবর্তনগুলি সাধারণত কয়েক মিনিটের মধ্যে কার্যকর হয়, তবে 3 ঘন্টা পর্যন্ত সময় লাগতে পারে।

যখন একটি ডাটাবেস দ্বারা ব্যবহৃত একটি কী অক্ষম করা হয়, তখন ত্রুটি বার্তায় অতিরিক্ত বিবরণ সহ একটি INVALID_ARGUMENT ব্যতিক্রম পাওয়ার আশা করুন, উদাহরণস্বরূপ:

{
  "error": {
    "code": 400,
    "message": "Failed: (InvalidArgument) The customer-managed encryption key required by the requested resource is not accessible. Error reason: projects/{FIRESTORE_PROJECT}/locations/{KMS_LOCATION}/keyRings/{KMS_KEYRING_ID}/cryptoKeys/{KMS_KEY_ID}/cryptoKeyVersions/1 is not enabled, current state is: DISABLED.",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.DebugInfo",
        "detail": "Failed: (InvalidArgument) The customer-managed encryption key required by the requested resource is not accessible. Error reason: projects/{FIRESTORE_PROJECT}/locations/{KMS_LOCATION}/keyRings/{KMS_KEYRING_ID}/cryptoKeys/{KMS_KEY_ID}/cryptoKeyVersions/1 is not enabled, current state is: DISABLED."
      }
    ]
  }
}

একটি কী সক্রিয় করুন

ডাটাবেসের সাথে সম্পর্কিত একটি কী পুনরায় সক্রিয় করতে, নিম্নলিখিতগুলি সম্পূর্ণ করুন:

  1. ডাটাবেসের জন্য ব্যবহৃত মূল সংস্করণগুলি দেখুন
  2. ঐ কী ভার্সনগুলি সক্ষম করুন
  3. পরিবর্তনটি কার্যকর হওয়ার জন্য অপেক্ষা করুন এবং ডেটা আর অ্যাক্সেসযোগ্য কিনা তা পরীক্ষা করুন। পরিবর্তনগুলি সাধারণত কয়েক মিনিটের মধ্যে কার্যকর হয়, তবে 3 ঘন্টা পর্যন্ত সময় লাগতে পারে।

ক্লাউড KMS কী-এর জন্য অডিট লগ দেখুন

ক্লাউড কেএমএস ডেটা অ্যাক্সেস অডিট লগ সক্ষম করার আগে, আপনার ক্লাউড অডিট লগের সাথে পরিচিত হওয়া উচিত।

ক্লাউড কেএমএস ডেটা অ্যাক্সেস অডিট লগগুলি আপনাকে দেখাবে কখন মঙ্গোডিবি সামঞ্জস্যপূর্ণ ক্লাউড ফায়ারস্টোর বা আপনার সিএমইকে কী ব্যবহারের জন্য কনফিগার করা অন্য কোনও পণ্য ক্লাউড কেএমএসে এনক্রিপ্ট বা ডিক্রিপ্ট কল করে। মঙ্গোডিবি সামঞ্জস্যপূর্ণ ক্লাউড ফায়ারস্টোর প্রতিটি ডেটা অনুরোধে এনক্রিপ্ট বা ডিক্রিপ্ট কল জারি করে না, বরং একটি পোলার বজায় রাখে যা পর্যায়ক্রমে কীটি পরীক্ষা করে। পোলিং ফলাফল অডিট লগে প্রদর্শিত হয়।

আপনি গুগল ক্লাউড কনসোলে অডিট লগ সেট আপ করতে এবং ইন্টারঅ্যাক্ট করতে পারেন:

  1. আপনার প্রোজেক্টে ক্লাউড KMS API-এর জন্য লগিং সক্ষম আছে কিনা তা নিশ্চিত করুন।

  2. গুগল ক্লাউড কনসোলে Cloud Logging -এ যান।

    Cloud Logging এ যান

  3. কোয়েরি বিল্ডারে নিম্নলিখিত লাইনগুলি যোগ করে আপনার ক্লাউড KMS কী-তে লগ এন্ট্রি সীমাবদ্ধ করুন:

    resource.type="cloudkms_cryptokey"
    resource.labels.key_ring_id = KMS_KEYRING
    resource.labels.crypto_key_id = KMS_KEY
    resource.labels.location=KMS_LOCATION
    

    নিম্নলিখিতগুলি প্রতিস্থাপন করুন:

    • CMEK কী-এর নাম সহ KMS_KEY
    • KMS_KEYRING , KMS কী রিং সহ, যাতে চাবিটি থাকে
    • চাবি এবং চাবির রিংয়ের অবস্থান সহ KMS_LOCATION

    লগটি প্রতিটি ডাটাবেস প্রতি পাঁচ মিনিটে কয়েকটি লগ এন্ট্রি দেখায়। লগ এন্ট্রিগুলি এই উদাহরণগুলির মতো দেখতে:

    Info 2021-03-20 08:02:24.869 EDT Cloudkms.googleapis.com Decrypt projects/cloud-kms-project/locations/us-central1/keyRings/firestore-keys/cryptoKeys/my-cmek-key service-123456789123@gcp-sa-firestore.
    audit_log, method: "Decrypt", principal_email: "service-1234567891011@gcp-sa-firestore."
    
    Info 2021-03-20 08:02:24.913 EDT Cloudkms.googleapis.com Encrypt projects/cloud-kms-project/locations/us-central1/keyRings/firestore-keys/cryptoKeys/my-cmek-key service-123456789123@gcp-sa-firestore.
    audit_log, method: "Encrypt", principal_email: "service-123456789123@gcp-sa-firestore."
    

অডিট লগ ব্যাখ্যা করার বিশদ বিবরণের জন্য অডিট লগ বোঝা দেখুন।

একটি CMEK প্রতিষ্ঠান নীতি কনফিগার করুন

আপনার প্রতিষ্ঠানের MongoDB সামঞ্জস্যপূর্ণ ডাটাবেসের সাথে ক্লাউড ফায়ারস্টোরের জন্য এনক্রিপশন সম্মতির প্রয়োজনীয়তা নির্দিষ্ট করতে, একটি CMEK প্রতিষ্ঠানের নীতি সীমাবদ্ধতা ব্যবহার করুন।

CMEK সুরক্ষা প্রয়োজন

MongoDB সামঞ্জস্যপূর্ণ ডাটাবেস তৈরির মাধ্যমে ক্লাউড ফায়ারস্টোরের জন্য CMEK প্রয়োজন করতে constraints/gcp.restrictNonCmekServices কনফিগার করুন। constraints কে deny এ সেট করুন এবং firestore.googleapis.com deny তালিকায় যোগ করুন, উদাহরণস্বরূপ:

gcloud resource-manager org-policies deny gcp.restrictNonCmekServices  is:firestore.googleapis.com --project=FIRESTORE_PROJECT

FIRESTORE_PROJECT সীমাবদ্ধ করার জন্য প্রজেক্ট দিয়ে প্রতিস্থাপন করুন।

প্রতিষ্ঠানের নীতিমালা কনফিগার করার বিষয়ে আরও জানতে, নীতিমালা তৈরি এবং সম্পাদনা দেখুন।

নীতি কার্যকর হওয়ার পরে, আপনি যদি প্রভাবিত প্রকল্পের অধীনে একটি নন-CMEK ডাটাবেস তৈরি করার চেষ্টা করেন তবে আপনি একটি FAILED_PRECONDITION ব্যতিক্রম এবং ত্রুটি বার্তা পাবেন। উদাহরণস্বরূপ, একটি ব্যতিক্রম দেখতে এরকম দেখাবে:

{
  "error": {
    "code": 400,
    "message": "Constraint 'constraints/gcp.restrictNonCmekServices' violated for 'projects/FIRESTORE_PROJECT' attempting to perform the operation 'google.firestore.admin.v1.FirestoreAdmin.CreateDatabase' with violated value 'firestore.googleapis.com'. See https://cloud.google.com/resource-manager/docs/organization-policy/org-policy-constraints for more information.",
    "status": "FAILED_PRECONDITION",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.PreconditionFailure",
        "violations": [
          {
            "type": "constraints/gcp.restrictNonCmekServices",
            "subject": "orgpolicy:projects/FIRESTORE_PROJECT",
            "description": "Constraint 'constraints/gcp.restrictNonCmekServices' violated for 'projects/FIRESTORE_PROJECT' attempting to perform the operation 'google.firestore.admin.v1.FirestoreAdmin.CreateDatabase' with violated value 'firestore.googleapis.com'. See https://cloud.google.com/resource-manager/docs/organization-policy/org-policy-constraints for more information."
          }
        ]

CMEK-এর জন্য কী ব্যবহার সীমিত করুন

CMEK সুরক্ষার জন্য কোন ক্লাউড KMS কী ব্যবহার করা হবে তা সীমিত করতে, constraints/gcp.restrictCmekCryptoKeyProjects constraints কনফিগার করুন।

তালিকার সীমাবদ্ধতা হিসেবে, গৃহীত মানগুলি হল রিসোর্স হায়ারার্কি সূচক (উদাহরণস্বরূপ, projects/PROJECT_ID , under:folders/FOLDER_ID , এবং under:organizations/ORGANIZATION_ID )। রিসোর্স হায়ারার্কি সূচকগুলির একটি তালিকা কনফিগার করে এবং সীমাবদ্ধতাটিকে Allow এ সেট করে এই সীমাবদ্ধতাটি ব্যবহার করুন। এই কনফিগারেশনটি সমর্থিত পরিষেবাগুলিকে সীমাবদ্ধ করে যাতে CMEK কীগুলি শুধুমাত্র তালিকাভুক্ত প্রকল্প, ফোল্ডার এবং সংস্থাগুলি থেকে বেছে নেওয়া যায়। কনফিগার করা পরিষেবাগুলিতে CMEK-সুরক্ষিত সংস্থান তৈরির অনুরোধগুলি অনুমোদিত সংস্থানগুলির মধ্যে একটি থেকে MongoDB সামঞ্জস্যতা কী সহ ক্লাউড ফায়ারস্টোর ছাড়া সফল হয় না।

নিম্নলিখিত উদাহরণটি নির্দিষ্ট প্রকল্পে CMEK-সুরক্ষিত ডাটাবেসের জন্য শুধুমাত্র ALLOWED_KEY_PROJECT_ID থেকে কীগুলি অনুমোদন করে:

gcloud resource-manager org-policies allow gcp.restrictCmekCryptoKeyProjects \
under:projects/<var>ALLOWED_KEY_PROJECT_ID</var> \
--project=<var>FIRESTORE_PROJECT</var>

নীতি কার্যকর হওয়ার পরে, আপনি একটি FAILED_PRECONDITION ব্যতিক্রম এবং সীমাবদ্ধতা লঙ্ঘন করলে একটি ত্রুটি বার্তা পাবেন। একটি ব্যতিক্রম নিম্নলিখিতটির মতো দেখাবে:

{
  "error": {
    "code": 400,
    "message": "Constraint 'constraints/gcp.restrictCmekCryptoKeyProjects' violated for 'projects/FIRESTORE_PROJECT' attempting to perform the operation 'google.firestore.admin.v1.FirestoreAdmin.CreateDatabase' with violated value 'projects/{NOT_ALLOWED_KEY_PROJECT}'. See https://cloud.google.com/resource-manager/docs/organization-policy/org-policy-constraints for more information.",
    "status": "FAILED_PRECONDITION",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.PreconditionFailure",
        "violations": [
          {
            "type": "constraints/gcp.restrictCmekCryptoKeyProjects",
            "subject": "orgpolicy:projects/FIRESTORE_PROJECT",
            "description": "Constraint 'constraints/gcp.restrictCmekCryptoKeyProjects' violated for 'projects/FIRESTORE_PROJECT' attempting to perform the operation 'google.firestore.admin.v1.FirestoreAdmin.CreateDatabase' with violated value 'projects/{NOT_ALLOWED_KEY_PROJECT}'. See https://cloud.google.com/resource-manager/docs/organization-policy/org-policy-constraints for more information."
          }
        ]
      }
    ]
  }
}

এরপর কি?