এই পৃষ্ঠাটি MongoDB সামঞ্জস্যের সাথে ক্লাউড ফায়ারস্টোরের জন্য গ্রাহক-পরিচালিত এনক্রিপশন কী (CMEK) সম্পর্কিত কাজগুলি কীভাবে সম্পাদন করতে হয় তা বর্ণনা করে। কখন এবং কেন এটি সক্ষম করতে হবে সহ সাধারণভাবে CMEK সম্পর্কে আরও তথ্যের জন্য, Cloud KMS ডকুমেন্টেশন দেখুন।
আপনার CMEK কী প্রস্তুত করুন
আপনি MongoDB সামঞ্জস্যপূর্ণ ডাটাবেসের সাথে একটি CMEK-সুরক্ষিত ক্লাউড ফায়ারস্টোর তৈরি করার আগে, আপনাকে অবশ্যই নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করতে হবে:
- MongoDB সামঞ্জস্যপূর্ণ CMEK বৈশিষ্ট্য সহ ক্লাউড ফায়ারস্টোরে অ্যাক্সেসের অনুরোধ করুন ।
- MongoDB সামঞ্জস্যপূর্ণ পরিষেবা এজেন্টের সাথে একটি ক্লাউড ফায়ারস্টোর তৈরি করুন (বা পুনরুদ্ধার করুন) ।
- একটি CMEK কী তৈরি করুন ।
- সেই কীটির জন্য 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
আপনার ক্লাউড ফায়ারস্টোরের জন্য MongoDB সামঞ্জস্যপূর্ণ ডেটাবেসগুলির সাথে আপনি যে প্রকল্পটি ব্যবহার করার পরিকল্পনা করছেন তার সাথে FIRESTORE_PROJECT
প্রতিস্থাপন করুন৷
কমান্ডটি পরিষেবা এজেন্ট আইডি প্রদর্শন করে, যা একটি ইমেল ঠিকানার মতো ফর্ম্যাট করা হয়। আউটপুট ইমেল স্ট্রিং রেকর্ড করুন, কারণ আপনি এটি পরবর্তী ধাপে ব্যবহার করবেন।
Service identity created:
service-xxx@gcp-sa-firestore.
একটি কী তৈরি করুন
আপনি সরাসরি ক্লাউড KMS-এ তৈরি একটি কী ব্যবহার করতে পারেন বা ক্লাউড এক্সটার্নাল কী ম্যানেজারের সাথে উপলব্ধ একটি বাহ্যিকভাবে পরিচালিত কী ব্যবহার করতে পারেন৷
ক্লাউড কেএমএস কী অবস্থানটি মঙ্গোডিবি সামঞ্জস্যপূর্ণ ডাটাবেসের সাথে ক্লাউড ফায়ারস্টোরের অবস্থানের মতোই হতে হবে যার সাথে এটি ব্যবহার করা হবে।
আঞ্চলিক ডাটাবেস অবস্থানগুলির জন্য, কী রিং, কী এবং ডাটাবেসের জন্য একই অবস্থানের নাম ব্যবহার করুন কারণ অবস্থানের নামগুলির এক-এক-একটি ম্যাপিং রয়েছে৷
উদাহরণস্বরূপ, আপনি যদি
us-west1
এ একটি CMEK-সুরক্ষিত ডাটাবেস তৈরি করতে চান, তাহলেus-west1
এ একটি কী রিং এবং কী তৈরি করুন।বহু-অঞ্চল ডাটাবেস অবস্থানের জন্য, KMS বহু-অঞ্চল অবস্থানের অবস্থানের নাম ব্যবহার করুন:
MongoDB কম্প্যাটিবিলিটি
nam5
মাল্টি-রিজিওন লোকেশন সহ ক্লাউড ফায়ারস্টোরের জন্য Cloud KMSus
মাল্টি-রিজিয়ন লোকেশন ব্যবহার করুন।MongoDB সামঞ্জস্যপূর্ণ
eur3
মাল্টি-রিজিওন অবস্থানের সাথে ক্লাউড ফায়ারস্টোরের জন্য ক্লাউড KMSeurope
মাল্টি-রিজিয়ন লোকেশন ব্যবহার করুন।
Google Cloud প্রকল্পে যেখানে আপনি আপনার কীগুলি পরিচালনা করতে চান, নিম্নলিখিতগুলি সম্পূর্ণ করুন:
নিম্নলিখিত বিকল্পগুলির মধ্যে একটি ব্যবহার করে একটি কী রিং এবং একটি কী তৈরি করুন:
- ক্লাউড কেএমএসে সরাসরি কী রিং এবং কী তৈরি করুন ।
- একটি বাহ্যিকভাবে পরিচালিত কী ব্যবহার করুন। এক্সটার্নাল কী তৈরি করুন এবং তারপর ক্লাউড কেএমএস-এর মাধ্যমে কী উপলব্ধ করতে একটি ক্লাউড EKM কী তৈরি করুন ।
কীটির জন্য IAM সেটিংস কনফিগার করুন
কনসোল
আপনার পরিষেবা এজেন্টকে একটি ক্লাউড কেএমএস ভূমিকা প্রদান করতে, নিম্নলিখিতগুলি করুন৷ আপনি যদি কম গ্রানুলারিটি চান তবে আপনি কী বা কী-রিং স্তরে অনুমতি দিতে সক্ষম।
Google ক্লাউড কনসোলে, IAM পৃষ্ঠাতে যান।
যোগ করুন ক্লিক করুন।
MongoDB সামঞ্জস্যপূর্ণ পরিষেবা এজেন্টের সাথে আপনার ক্লাউড ফায়ারস্টোরের জন্য ইমেল-ফরম্যাট করা আইডি লিখুন।
ক্লাউড কেএমএস ক্রিপ্টোকি এনক্রিপ্টার/ডিক্রিপ্টারের ভূমিকা নির্বাচন করুন।
সংরক্ষণ করুন ক্লিক করুন.
জিক্লাউড
আপনার পরিষেবা এজেন্টকে 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-সুরক্ষিত ডাটাবেস তৈরি করতে পারেন। Google ডিফল্ট এনক্রিপশন দ্বারা সুরক্ষিত MongoDB সামঞ্জস্যপূর্ণ ডেটাবেসের সাথে বিদ্যমান ক্লাউড ফায়ারস্টোরকে CMEK ব্যবহার করার জন্য রূপান্তর করা যাবে না।
আপনি যখন একটি CMEK-সক্ষম ডাটাবেস তৈরি করেন তখনই আপনি একটি এনক্রিপশন প্রকার এবং কী চয়ন করতে পারেন৷
কনসোল
Google ক্লাউড কনসোলে, ডেটাবেস পৃষ্ঠায় যান।
একটি ফায়ারস্টোর ডেটাবেস তৈরি করুন ক্লিক করুন।
একটি ডাটাবেস আইডি লিখুন।
এন্টারপ্রাইজ সংস্করণ নির্বাচন করুন।
আপনার ডাটাবেসের জন্য একটি অবস্থান নির্বাচন করুন.
এনক্রিপশন বিকল্পগুলি দেখান ক্লিক করুন এবং তারপরে ক্লাউড কেএমএস কী নির্বাচন করুন।
আপনি ডাটাবেসের জন্য যে CMEK কী ব্যবহার করতে চান তার জন্য সম্পদের নাম নির্বাচন করুন বা লিখুন।
কীগুলির তালিকা বর্তমান Google Cloud প্রকল্প এবং আপনার নির্বাচিত ডাটাবেস অবস্থানের মধ্যে সীমাবদ্ধ। একটি ভিন্ন Google Cloud প্রজেক্ট থেকে একটি কী ব্যবহার করতে, প্রজেক্ট স্যুইচ করুন বা ম্যানুয়ালি কী লিখুন ক্লিক করুন।
যদি আপনাকে MongoDB সামঞ্জস্যপূর্ণ পরিষেবা অ্যাকাউন্টের সাথে ক্লাউড ফায়ারস্টোরে কী অনুমতি দেওয়ার জন্য অনুরোধ করা হয়, তাহলে অনুদান ক্লিক করুন। একটি CMEK ডাটাবেস তৈরি করতে, MongoDB সামঞ্জস্যপূর্ণ পরিষেবা অ্যাকাউন্টের সাথে আপনার ক্লাউড ফায়ারস্টোরকে
cloudkms.cryptoKeyEncrypterDecrypter
ভূমিকা মঞ্জুর করতে হবে।মোবাইল এবং ওয়েব ক্লায়েন্টদের জন্য নিরাপত্তা নিয়ম নির্বাচন করুন।
ডেটাবেস তৈরি করুন ক্লিক করুন।
ডাটাবেস তৈরি হওয়ার পর, আপনি ডাটাবেস বিবরণ দেখে যাচাই করতে পারেন যে ডাটাবেসটি CMEK-সক্ষম হয়েছে:
- যদি আপনার ডাটাবেস CMEK দ্বারা সুরক্ষিত থাকে, তাহলে এনক্রিপশন টাইপ ক্ষেত্রটি গ্রাহক-পরিচালিত হিসাবে দেখায় এবং এনক্রিপশন কী ক্ষেত্রটি সংশ্লিষ্ট ক্লাউড কেএমএস এবং এই ডাটাবেস সুরক্ষিত করতে ব্যবহৃত কী সংস্করণের তালিকা করে।
- যদি আপনার ডাটাবেস CMEK দ্বারা সুরক্ষিত না থাকে, তাহলে এনক্রিপশন টাইপ ক্ষেত্রটি Google-পরিচালিত হিসাবে দেখায়।
জিক্লাউড
আপনি Google Cloud CLI এর সাথে একটি CMEK-সক্ষম ডাটাবেস তৈরি করার আগে, সর্বশেষ সংস্করণটি ইনস্টল করুন এবং 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-সুরক্ষিত ডাটাবেস পুনরুদ্ধার করুন
Google-এর ডিফল্ট এনক্রিপশনে (নন-সিএমইকে) পুনরুদ্ধার করতে, নিম্নলিখিত উপায়ে encryption-type
পতাকা সেট করুন:
gcloud firestore databases restore \
--encryption-type=google-default-encryption
একটি CMEK-সুরক্ষিত ডাটাবেসকে ব্যাকআপের মতো একই এনক্রিপশন টাইপে পুনরুদ্ধার করুন
ব্যাকআপ হিসাবে একই এনক্রিপশন টাইপ পুনরুদ্ধার করতে, নিম্নলিখিত উপায়ে encryption-type
পতাকা সেট করুন:
gcloud firestore databases restore --encryption-type=use-source-encryption
ফায়ারবেস CLI
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
-
FIRESTORE_LOCATION
আপনার ক্লাউড ফায়ারস্টোরের অবস্থান MongoDB সামঞ্জস্যপূর্ণ ডাটাবেসের সাথে - আপনার ব্যাকআপের আইডি সহ
BACKUP_ID
- আপনার CMEK কী ধারণ করে এমন প্রকল্পের সাথে
KMS_PROJECT
- আপনার CMEK কী এবং চাবির রিং রয়েছে এমন অবস্থানের সাথে
KMS_LOCATION
- আপনার CMEK কী রিং এর ID সহ
KMS_KEYRING_ID
নিশ্চিত করুন যে আপনার পুনরুদ্ধার করা ক্লাউড ফায়ারস্টোর MongoDB সামঞ্জস্যপূর্ণ ডাটাবেসের সাথে CMEK-এনক্রিপ্ট করা হয়েছে:
firebase firestore:databases:get DATABASE_ID --project FIRESTORE_PROJECT
ডিফল্ট এনক্রিপশনে একটি CMEK-সুরক্ষিত ডাটাবেস পুনরুদ্ধার করুন
Google-এর ডিফল্ট এনক্রিপশনে (নন-সিএমইকে) পুনরুদ্ধার করতে, নিম্নলিখিত উপায়ে 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
-
FIRESTORE_LOCATION
আপনার ক্লাউড ফায়ারস্টোরের অবস্থান MongoDB সামঞ্জস্যপূর্ণ ডাটাবেসের সাথে - আপনার ব্যাকআপের আইডি সহ
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
-
FIRESTORE_LOCATION
আপনার ক্লাউড ফায়ারস্টোরের অবস্থান MongoDB সামঞ্জস্যপূর্ণ ডাটাবেসের সাথে - আপনার ব্যাকআপের আইডি সহ
BACKUP_ID
একটি CMEK-সুরক্ষিত ডাটাবেস ক্লোন করুন
আপনি একটি CMEK-সুরক্ষিত ডাটাবেস ক্লোন করার আগে:
- আপনি ডাটাবেসকে CMEK এনক্রিপশন, Google-এর ডিফল্ট এনক্রিপশন (নন-CMEK) বা উৎস ডাটাবেসের মতো একই এনক্রিপশনে ক্লোন করতে চান কিনা তা স্থির করুন।
কী (প্রাথমিক-সংস্করণ) এবং মূল সংস্করণটি প্রস্তুত করুন যা আপনি উৎস ডাটাবেস এনক্রিপ্ট করতে ব্যবহার করেছেন। কী এবং কী সংস্করণ উভয়ই সক্ষম করুন।
জিক্লাউড
CMEK এনক্রিপশনে একটি CMEK-সুরক্ষিত ডাটাবেস ক্লোন করুন
CMEK এনক্রিপশনে ক্লোন করতে, ক্লোন করা ডাটাবেসের জন্য এনক্রিপশন টাইপ কনফিগার করতে ঐচ্ছিক encryption-type
এবং kms-key-name
ফ্ল্যাগ সহ gcloud alpha firestore ডাটাবেস ক্লোন কমান্ডটি চালান। আপনি যদি এনক্রিপশনের ধরন নির্দিষ্ট না করেন, তাহলে ক্লোন করা ডাটাবেস উৎস ডাটাবেসের মতো একই এনক্রিপশন কনফিগারেশন ব্যবহার করবে।
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-সুরক্ষিত ডাটাবেস ক্লোন করুন
Google এর ডিফল্ট এনক্রিপশন (নন-সিএমইকে) ক্লোন করতে, নিম্নলিখিত উপায়ে 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 কনফিগারেশন নিশ্চিত করতে 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"
]
},
...
}
একটি কী অক্ষম করুন
একটি ডাটাবেসের সাথে যুক্ত একটি কী নিষ্ক্রিয় করতে, নিম্নলিখিতটি সম্পূর্ণ করুন:
- একটি ডাটাবেসের জন্য ব্যবহৃত মূল সংস্করণগুলি দেখুন
- সেই মূল সংস্করণগুলি নিষ্ক্রিয় করুন
- পরিবর্তন কার্যকর হওয়ার জন্য অপেক্ষা করুন এবং ডেটা আর অ্যাক্সেসযোগ্য কিনা তা পরীক্ষা করুন। পরিবর্তনগুলি সাধারণত কয়েক মিনিটের মধ্যে কার্যকর হয়, তবে 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."
}
]
}
}
একটি কী সক্ষম করুন
একটি ডাটাবেসের সাথে যুক্ত একটি কী পুনরায় সক্ষম করতে, নিম্নলিখিতটি সম্পূর্ণ করুন:
- একটি ডাটাবেসের জন্য ব্যবহৃত মূল সংস্করণগুলি দেখুন
- সেই মূল সংস্করণগুলি সক্ষম করুন
- পরিবর্তন কার্যকর হওয়ার জন্য অপেক্ষা করুন এবং ডেটা আর অ্যাক্সেসযোগ্য কিনা তা পরীক্ষা করুন। পরিবর্তনগুলি সাধারণত কয়েক মিনিটের মধ্যে কার্যকর হয়, তবে 3 ঘন্টা পর্যন্ত সময় নিতে পারে৷
একটি ক্লাউড KMS কী-এর জন্য অডিট লগগুলি দেখুন৷
আপনি ক্লাউড KMS ডেটা অ্যাক্সেস অডিট লগগুলি সক্ষম করার আগে, আপনার ক্লাউড অডিট লগগুলির সাথে পরিচিত হওয়া উচিত৷
ক্লাউড KMS ডেটা অ্যাক্সেস অডিট লগগুলি আপনাকে দেখায় যখন MongoDB সামঞ্জস্যের সাথে ক্লাউড ফায়ারস্টোর বা আপনার CMEK কী ব্যবহার করার জন্য কনফিগার করা অন্য কোনও পণ্য ক্লাউড KMS-এ এনক্রিপ্ট বা ডিক্রিপ্ট কল করে। MongoDB সামঞ্জস্য সহ ক্লাউড ফায়ারস্টোর প্রতিটি ডেটা অনুরোধে একটি এনক্রিপ্ট বা ডিক্রিপ্ট কল ইস্যু করে না, বরং একটি পোলার বজায় রাখে যা পর্যায়ক্রমে কী পরীক্ষা করে। ভোটের ফলাফল অডিট লগে প্রদর্শিত হয়।
আপনি Google ক্লাউড কনসোলে অডিট লগ সেট আপ করতে এবং ইন্টারঅ্যাক্ট করতে পারেন:
আপনার প্রকল্পে ক্লাউড KMS API-এর জন্য লগিং সক্ষম করা আছে তা নিশ্চিত করুন৷
গুগল ক্লাউড কনসোলে Cloud Logging এ যান।
ক্যোয়ারী বিল্ডারে নিম্নলিখিত লাইনগুলি যোগ করে আপনার ক্লাউড 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 কী নামের সাথে
অডিট লগ ব্যাখ্যা করার বিষয়ে বিস্তারিত জানার জন্য অডিট লগ বোঝা দেখুন।
একটি CMEK সংগঠন নীতি কনফিগার করুন
আপনার প্রতিষ্ঠানে MongoDB সামঞ্জস্যপূর্ণ ডেটাবেসের সাথে ক্লাউড ফায়ারস্টোরের জন্য এনক্রিপশন সম্মতির প্রয়োজনীয়তা নির্দিষ্ট করতে, একটি CMEK সংস্থার নীতি সীমাবদ্ধতা ব্যবহার করুন।
CMEK সুরক্ষা প্রয়োজন
MongoDB সামঞ্জস্যপূর্ণ ডেটাবেস তৈরির সাথে ক্লাউড ফায়ারস্টোরের জন্য CMEK-এর প্রয়োজনের জন্য constraints/gcp.restrictNonCmekServices
কনফিগার করুন। deny
সীমাবদ্ধতা সেট করুন এবং অস্বীকার তালিকায় firestore.googleapis.com
যোগ করুন, উদাহরণস্বরূপ:
gcloud resource-manager org-policies deny gcp.restrictNonCmekServices is:firestore.googleapis.com --project=FIRESTORE_PROJECT
FIRESTORE_PROJECT
সীমাবদ্ধ করার জন্য প্রকল্পের সাথে প্রতিস্থাপন করুন।
প্রতিষ্ঠানের নীতিগুলি কনফিগার করার বিষয়ে আরও জানতে, নীতিগুলি তৈরি এবং সম্পাদনা দেখুন৷
নীতি কার্যকর হওয়ার পরে, আপনি যদি প্রভাবিত প্রকল্পের অধীনে একটি নন-সিএমইকে ডাটাবেস তৈরি করার চেষ্টা করেন তবে আপনি একটি 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
সীমাবদ্ধতা কনফিগার করুন৷
তালিকার সীমাবদ্ধতা হিসাবে, গৃহীত মানগুলি হল সম্পদ শ্রেণিবিন্যাসের সূচক (উদাহরণস্বরূপ, projects/PROJECT_ID
, under:folders/FOLDER_ID
, এবং under:organizations/ORGANIZATION_ID
)। সম্পদ শ্রেণিবিন্যাসের সূচকগুলির একটি তালিকা কনফিগার করে এবং অনুমতিতে সীমাবদ্ধতা সেট করে এই সীমাবদ্ধতাটি ব্যবহার করুন। এই কনফিগারেশন সমর্থিত পরিষেবাগুলিকে সীমাবদ্ধ করে যাতে 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."
}
]
}
]
}
}