Identity and Access Management (IAM)

Cloud Firestore-এর জন্য সার্ভার ক্লায়েন্ট লাইব্রেরি ব্যবহার করার সময়, আপনি পরিচয় ও অ্যাক্সেস ম্যানেজমেন্ট (IAM) ব্যবহার করে আপনার রিসোর্সের অ্যাক্সেস ম্যানেজ করতে পারবেন। IAM আপনাকে নির্দিষ্ট Google Cloud রিসোর্সে আরও গ্র্যানুলার অ্যাক্সেস দিতে দেয় এবং অন্যান্য রিসোর্সে অবাঞ্ছিত অ্যাক্সেস প্রতিরোধ করে। এই পৃষ্ঠায় Cloud Firestore-এর জন্য IAM অনুমতি ও ভূমিকা বর্ণনা করা হয়েছে। IAM-এর বিস্তারিত বিবরণের জন্য, IAM ডকুমেন্টেশন পড়ুন।

IAM আপনাকে সবচেয়ে কম প্রিভিলেজ সংক্রান্ত নিরাপত্তা নীতি গ্রহণ করতে দেয়, যাতে আপনি নিজের রিসোর্সে শুধুমাত্র প্রয়োজনীয় অ্যাক্সেস প্রদান করেন।

IAM নীতি সেট করার মাধ্যমে IAM আপনাকে কোন রিসোর্সের জন্য কার (ব্যবহারকারী) কী (ভূমিকা) অনুমতি আছে তা নিয়ন্ত্রণ করতে দেয়। IAM নীতি কোনও ব্যবহারকারীকে এক বা একাধিক ভূমিকা প্রদান করে, যার ফলে ব্যবহারকারী নির্দিষ্ট কিছু অনুমতি পান। যেমন, আপনি কোনও ব্যবহারকারীকে datastore.indexAdmin ভূমিকা দিতে পারেন, যা ব্যবহারকারীকে ইন্ডেক্স তৈরি, পরিবর্তন, মুছে ফেলা, তালিকাভুক্ত করা বা দেখার অনুমতি দেয়।

অনুমতি ও ভূমিকা

এই বিভাগে Cloud Firestore-এর সমর্থিত অনুমতি ও ভূমিকার সারসংক্ষেপ রয়েছে।

API পদ্ধতির জন্য প্রয়োজনীয় অনুমতি

নিম্নলিখিত সারণীতে প্রতিটি অ্যাকশন পারফর্ম করার জন্য কলারের কাছে যেসব অনুমতি থাকতে হবে তার তালিকা দেওয়া হল:

পদ্ধতি প্রয়োজনীয় অনুমতি
projects.databases.documents
batchGet datastore.entities.get
batchWrite false-এ সেট করা আগে থেকে থাকা পূর্বশর্ত সহ আপডেট বা ট্রান্সফর্ম করুন datastore.entities.create
batchWrite true-এ সেট করা আগে থেকে থাকা পূর্বশর্ত সহ আপডেট বা ট্রান্সফর্ম করুন datastore.entities.create
batchWrite কোনও পূর্বশর্ত ছাড়াই আপডেট বা পরিবর্তন করুন datastore.entities.create
datastore.entities.update
beginTransaction datastore.databases.get
commit false-এ সেট করা আগে থেকে থাকা পূর্বশর্ত সহ আপডেট বা ট্রান্সফর্ম করুন datastore.entities.create
commit true-এ সেট করা আগে থেকে থাকা পূর্বশর্ত সহ আপডেট বা ট্রান্সফর্ম করুন datastore.entities.update
commit কোনও পূর্বশর্ত ছাড়াই আপডেট বা পরিবর্তন করুন datastore.entities.create
datastore.entities.update
commit মুছুন datastore.entities.delete
createDocument datastore.entities.create
delete datastore.entities.delete
get datastore.entities.get
list datastore.entities.get
datastore.entities.list
listCollectionIds datastore.entities.list
partitionQuery datastore.entities.get
datastore.entities.list
patch datastore.entities.update
rollback datastore.databases.get
runAggregationQuery datastore.entities.get
datastore.entities.list
runQuery datastore.entities.get
datastore.entities.list
executePipeline (RPC)

নিচে উল্লেখ করা যেকোনও স্টেজের সাথে:
- collection(...)
- collection_group(...)
- database()
datastore.entities.get
datastore.entities.list
executePipeline (RPC)

নিম্নলিখিত যেকোনও স্টেজ সহ:
- documents(...)
datastore.entities.get
executePipeline (RPC)

নিম্নলিখিত যেকোনও স্টেজ সহ:
- update(...)
datastore.entities.update
executePipeline (RPC)

নিম্নলিখিত যেকোনও স্টেজ সহ:
- delete(...)
datastore.entities.delete
write (RPC) false-এ সেট করা আগে থেকে থাকা পূর্বশর্ত সহ আপডেট বা ট্রান্সফর্ম করুন datastore.entities.create
write (RPC) true-এ সেট করা আগে থেকে থাকা পূর্বশর্ত সহ আপডেট বা ট্রান্সফর্ম করুন datastore.entities.update
write (RPC) কোনও পূর্বশর্ত ছাড়াই আপডেট বা পরিবর্তন করুন datastore.entities.create
datastore.entities.update
write (RPC) মুছুন datastore.entities.delete
projects.databases.indexes
create datastore.schemas.create
delete datastore.schemas.delete
get datastore.schemas.get
list datastore.schemas.list
projects.databases
create datastore.databases.create

আপনার create অনুরোধে tags ভ্যালু থাকলে, নিম্নলিখিত অতিরিক্ত অনুমতি প্রয়োজন:

  • datastore.databases.createTagBinding

আপনি যদি ট্যাগ বাইন্ডিংগুলি তালিকাভুক্ত করে সফলভাবে সেট করা হয়েছে কিনা তা যাচাই করতে চান, তাহলে নিম্নলিখিত অতিরিক্ত অনুমতির প্রয়োজন হবে:

  • datastore.databases.listTagBindings
  • datastore.databases.listEffectiveTags
delete datastore.databases.delete
get datastore.databases.getMetadata
list datastore.databases.list
patch datastore.databases.update
ফিরিয়ে আনুন datastore.backups.restoreDatabase
clone datastore.databases.clone

আপনার clone অনুরোধে tags ভ্যালু থাকলে, নিম্নলিখিত অতিরিক্ত অনুমতি প্রয়োজন:

  • datastore.databases.createTagBinding

আপনি যদি ট্যাগ বাইন্ডিংগুলি তালিকাভুক্ত করে সফলভাবে সেট করা হয়েছে কিনা তা যাচাই করতে চান, তাহলে নিম্নলিখিত অতিরিক্ত অনুমতির প্রয়োজন হবে:

  • datastore.databases.listTagBindings
  • datastore.databases.listEffectiveTags
projects.locations
get datastore.locations.get
list datastore.locations.list
projects.databases.backupschedules
পেয়ে যান datastore.backupSchedules.get
তালিকা datastore.backupSchedules.list
তৈরি করুন datastore.backupSchedules.create
আপডেট করুন datastore.backupSchedules.update
মুছুন datastore.backupSchedules.delete
projects.locations.backups
পেয়ে যান datastore.backups.get
তালিকা datastore.backups.list
মুছুন datastore.backups.delete

আগে থেকে নির্ধারিত ভূমিকা

IAM-এর মাধ্যমে, Cloud Firestore-এ প্রতিটি API পদ্ধতির জন্য প্রয়োজন যে API অনুরোধ করা অ্যাকাউন্টের কাছে রিসোর্স ব্যবহার করার জন্য উপযুক্ত অনুমতি আছে। ব্যবহারকারী, গ্রুপ বা পরিষেবা অ্যাকাউন্টকে ভূমিকা প্রদান করে এমন নীতি সেট করার মাধ্যমে অনুমতি দেওয়া হয়। মালিক, এডিটর ও দর্শক-এর মতো আদিম ভূমিকা ছাড়াও, আপনার প্রোজেক্টের ব্যবহারকারীদের আপনি Cloud Firestore ভূমিকা দিতে পারবেন।

নিম্নলিখিত সারণীতে Cloud Firestore IAM ভূমিকার তালিকা দেওয়া হয়েছে। আপনি কোনও ব্যবহারকারী, গ্রুপ বা পরিষেবা অ্যাকাউন্টকে একাধিক ভূমিকা দিতে পারেন।

ভূমিকা অনুমতি বিবরণ
roles/datastore.owner appengine.applications.get

datastore.*

resourcemanager.projects.get
resourcemanager.projects.list
Cloud Firestore-এ সম্পূর্ণ অ্যাক্সেস।
roles/datastore.user appengine.applications.get

datastore.databases.get
datastore.databases.getMetadata
datastore.databases.list
datastore.entities.*
datastore.schemas.list
datastore.namespaces.get
datastore.namespaces.list
datastore.statistics.get
datastore.statistics.list

resourcemanager.projects.get
resourcemanager.projects.list
Cloud Firestore ডেটাবেসে ডেটা পড়া/লেখার অ্যাক্সেস। অ্যাপ্লিকেশন ডেভেলপার ও পরিষেবা অ্যাকাউন্টের জন্য।
roles/datastore.viewer appengine.applications.get

datastore.databases.get
datastore.databases.getMetadata
datastore.databases.list
datastore.entities.get
datastore.entities.list
datastore.schemas.get
datastore.schemas.list
datastore.namespaces.get
datastore.namespaces.list
datastore.statistics.get
datastore.statistics.list

resourcemanager.projects.get
resourcemanager.projects.list

datastore.insights.get
সব Cloud Firestore রিসোর্স পড়ার অ্যাক্সেস।
roles/datastore.importExportAdmin appengine.applications.get
datastore.databases.export
datastore.databases.getMetadata
datastore.databases.import
datastore.operations.cancel
datastore.operations.get
datastore.operations.list
resourcemanager.projects.get
resourcemanager.projects.list
ইমপোর্ট ও এক্সপোর্ট ম্যানেজ করার সম্পূর্ণ অ্যাক্সেস।
roles/datastore.bulkAdmin resourcemanager.projects.get
resourcemanager.projects.list
datastore.databases.getMetadata
datastore.databases.bulkDelete
datastore.operations.cancel
datastore.operations.get
datastore.operations.list
বাল্ক অপারেশন ম্যানেজ করার সম্পূর্ণ অ্যাক্সেস।
roles/datastore.indexAdmin appengine.applications.get

datastore.databases.getMetadata

datastore.schemas.*

datastore.operations.list

datastore.operations.get

resourcemanager.projects.get
resourcemanager.projects.list
ইনডেক্স সংজ্ঞা ম্যানেজ করার সম্পূর্ণ অ্যাক্সেস।
roles/datastore.keyVisualizerViewer datastore.databases.getMetadata
datastore.keyVisualizerScans.get
datastore.keyVisualizerScans.list
resourcemanager.projects.get
resourcemanager.projects.list
Key Visualizer স্ক্যানে সম্পূর্ণ অ্যাক্সেস।
roles/datastore.backupSchedulesViewer datastore.backupSchedules.get
datastore.backupSchedules.list
Cloud Firestore ডেটাবেসে ব্যাক-আপ শিডিউল অ্যাক্সেস করার অনুমতি।
roles/datastore.backupSchedulesAdmin datastore.backupSchedules.get
datastore.backupSchedules.list
datastore.backupSchedules.create
datastore.backupSchedules.update
datastore.backupSchedules.delete
datastore.databases.list
datastore.databases.getMetadata
Cloud Firestore ডেটাবেসে ব্যাক-আপ শিডিউলের সম্পূর্ণ অ্যাক্সেস।
roles/datastore.backupsViewer datastore.backups.get
datastore.backups.list
Cloud Firestore লোকেশনে ব্যাক-আপ সংক্রান্ত তথ্য অ্যাক্সেস করার অনুমতি।
roles/datastore.backupsAdmin datastore.backups.get
datastore.backups.list
datastore.backups.delete
Cloud Firestore লোকেশনে ব্যাক-আপের সম্পূর্ণ অ্যাক্সেস।
roles/datastore.restoreAdmin datastore.backups.get
datastore.backups.list
datastore.backups.restoreDatabase
datastore.databases.list
datastore.databases.create
datastore.databases.getMetadata
datastore.operations.list
datastore.operations.get
নতুন ডেটাবেসে Cloud Firestore ব্যাক-আপ ফিরিয়ে আনার ক্ষমতা। এই ভূমিকা নতুন ডেটাবেস তৈরি করার ক্ষমতাও দেয়, ব্যাক-আপ থেকে রিস্টোর করার মাধ্যমে এটি করতে হবে এমন কোনও বাধ্যবাধকতা নেই।
roles/datastore.cloneAdmin datastore.databases.clone
datastore.databases.list
datastore.databases.create
datastore.databases.getMetadata
datastore.operations.list
datastore.operations.get
নতুন ডেটাবেসে Cloud Firestore ডেটাবেস ক্লোন করার ক্ষমতা। এই ভূমিকা নতুন ডেটাবেস তৈরি করার ক্ষমতাও দেয়, ক্লোন করার মাধ্যমে নয়।
roles/datastore.statisticsViewer resourcemanager.projects.get
resourcemanager.projects.list
datastore.databases.getMetadata
datastore.insights.get
datastore.keyVisualizerScans.get
datastore.keyVisualizerScans.list
datastore.statistics.list
datastore.statistics.get
ইনসাইট, পরিসংখ্যান এবং Key Visualizer স্ক্যান পড়ার অ্যাক্সেস।

কাস্টম ভূমিকা

পূর্বনির্ধারিত ভূমিকা আপনার ব্যবসার প্রয়োজনীয়তা পূরণ না করলে, আপনি নিজের কাস্টম ভূমিকা নির্ধারণ করতে পারেন এবং আপনার নির্দিষ্ট করা অনুমতি দিতে পারেন:

ট্যাগ তৈরি ও ম্যানেজ করার জন্য প্রয়োজনীয় ভূমিকা

তৈরি বা রিস্টোর করার অ্যাকশনে কোনও ট্যাগ দেখানো হলে, কিছু ভূমিকা প্রয়োজন হয়। ডেটাবেস রিসোর্সের সাথে ট্যাগ কী-ভ্যালু পেয়ার অ্যাসোসিয়েট করার আগে সেগুলি তৈরি করার ব্যাপারে আরও জানতে ট্যাগ তৈরি ও ম্যানেজ করা দেখুন।

নিচে তালিকাভুক্ত অনুমতিগুলি প্রয়োজন।

ট্যাগ দেখুন
  • datastore.databases.listTagBindings
  • datastore.databases.listEffectiveTags
রিসোর্সে ট্যাগ ম্যানেজ করা

আপনি যে ডেটাবেস রিসোর্সে ট্যাগ ভ্যালু অ্যাটাচ করছেন সেটির জন্য নিম্নলিখিত অনুমতি প্রয়োজন।

  • datastore.databases.createTagBinding

অনুমতি

Cloud Firestore যেসব অনুমতি সমর্থন করে তার তালিকা নিচে দেওয়া হল।

ডেটাবেসের অনুমতির নাম বিবরণ
datastore.databases.get ট্রানজ্যাকশন শুরু বা রোলব্যাক করুন।
datastore.databases.import ডেটাবেসে এন্টিটি ইমপোর্ট করুন।
datastore.databases.export ডেটাবেস থেকে এন্টিটি এক্সপোর্ট করুন।
datastore.databases.bulkDelete ডেটাবেস থেকে বাল্কে এন্টিটি মুছে ফেলা।
datastore.databases.getMetadata ডেটাবেস থেকে মেটাডেটা পড়ুন।
datastore.databases.list প্রোজেক্টে ডেটাবেসের তালিকা তৈরি করুন।
datastore.databases.create ডেটাবেস তৈরি করুন।
datastore.databases.update ডেটাবেস আপডেট করুন।
datastore.databases.delete ডেটাবেস মুছে দেওয়া।
datastore.databases.clone ডেটাবেস ক্লোন করুন।
datastore.databases.createTagBinding ডেটাবেসের জন্য ট্যাগ বাইন্ডিং তৈরি করুন।
datastore.databases.deleteTagBinding কোনও ডেটাবেসের জন্য ট্যাগ বাইন্ডিং মুছে দিন।
datastore.databases.listTagBindings কোনও ডেটাবেসের জন্য সব ট্যাগ বাইন্ডিংয়ের তালিকা তৈরি করুন।
datastore.databases.listEffectiveTagBindings কোনও ডেটাবেসের জন্য কার্যকর ট্যাগ বাইন্ডিংয়ের তালিকা তৈরি করুন।
এন্টিটির অনুমতির নাম বিবরণ
datastore.entities.create ডকুমেন্ট তৈরি করুন।
datastore.entities.delete ডকুমেন্ট মুছে দেওয়া।
datastore.entities.get ডকুমেন্ট পড়া।
datastore.entities.list প্রোজেক্টে থাকা ডকুমেন্টের নামের তালিকা।
(ডকুমেন্ট ডেটা অ্যাক্সেস করতে datastore.entities.get প্রয়োজন।)
datastore.entities.update ডকুমেন্ট আপডেট করুন।
ইনডেক্স অনুমতির নাম বিবরণ
datastore.schemas.create একটি ইন্ডেক্স তৈরি করুন।
datastore.schemas.delete ইন্ডেক্স মুছে দেওয়া।
datastore.schemas.get ইনডেক্স থেকে মেটাডেটা পড়ুন।
datastore.schemas.list প্রোজেক্টে ইন্ডেক্সের তালিকা তৈরি করুন।
datastore.schemas.update ইনডেক্স আপডেট করুন।
অপারেশন সংক্রান্ত অনুমতির নাম বিবরণ
datastore.operations.cancel দীর্ঘ সময় ধরে চলা অপারেশন বাতিল করুন।
datastore.operations.delete দীর্ঘ সময় ধরে চলা অপারেশন মুছে দিন।
datastore.operations.get দীর্ঘ সময় ধরে চলা অপারেশনের লেটেস্ট স্ট্যাটাস পায়।
datastore.operations.list দীর্ঘ সময় ধরে চলা অপারেশনের তালিকা।
প্রোজেক্টের অনুমতির নাম বিবরণ
resourcemanager.projects.get প্রোজেক্টে রিসোর্স ব্রাউজ করুন।
resourcemanager.projects.list মালিকানাধীন প্রোজেক্টের তালিকা।
লোকেশন সংক্রান্ত অনুমতির নাম বিবরণ
datastore.locations.get ডেটাবেস লোকেশন সম্পর্কে বিবরণ পান। নতুন ডেটাবেস তৈরি করতে হবে।
datastore.locations.list উপলভ্য ডেটাবেস লোকেশনের তালিকা। নতুন ডেটাবেস তৈরি করতে হবে।
Key Visualizer-এর অনুমতির নাম বিবরণ
datastore.keyVisualizerScans.get Key Visualizer স্ক্যান সম্পর্কে বিবরণ পান।
datastore.keyVisualizerScans.list উপলভ্য Key Visualizer স্ক্যানের তালিকা তৈরি করুন।
ব্যাক-আপ শিডিউল সংক্রান্ত অনুমতির নাম বিবরণ
datastore.backupSchedules.get ব্যাক-আপ শিডিউল সম্পর্কে বিবরণ পান।
datastore.backupSchedules.list উপলভ্য ব্যাক-আপ শিডিউলের তালিকা।
datastore.backupSchedules.create ব্যাক-আপ শিডিউল তৈরি করুন।
datastore.backupSchedules.update ব্যাক-আপের শিডিউল আপডেট করুন।
datastore.backupSchedules.delete ব্যাক-আপ শিডিউল মুছে দেওয়া।
ব্যাক-আপ অনুমতির নাম বিবরণ
datastore.backups.get ব্যাক-আপ সম্পর্কে বিবরণ পান।
datastore.backups.list উপলভ্য ব্যাক-আপের তালিকা।
datastore.backups.delete ব্যাক-আপ মুছে দেওয়া।
datastore.backups.restoreDatabase ব্যাক-আপ থেকে ডেটাবেস ফিরিয়ে আনুন।
ইনসাইট সংক্রান্ত অনুমতির নাম বিবরণ
datastore.insights.get রিসোর্সের ইনসাইট পাওয়া

ভূমিকা পরিবর্তন সংক্রান্ত লেটেন্সি

Cloud Firestore ৫ মিনিটের জন্য IAM অনুমতি ক্যাশে করে, তাই ভূমিকা পরিবর্তন কার্যকর হতে ৫ মিনিট পর্যন্ত সময় লাগে।

Cloud Firestore IAM ম্যানেজ করুন

Google Cloud কনসোল, IAM API বা gcloud কমান্ড-লাইন টুল ব্যবহার করে আপনি IAM নীতি পেতে ও সেট করতে পারবেন। আরও জানতে প্রোজেক্ট মেম্বারদের অ্যাক্সেস দেওয়া, পরিবর্তন করা ও তুলে নেওয়া দেখুন।

শর্তসাপেক্ষ অ্যাক্সেসের অনুমতি কনফিগার করুন

শর্তাধীন অ্যাক্সেস কন্ট্রোল নির্ধারণ ও প্রয়োগ করতে আপনি IAM শর্তাবলী ব্যবহার করতে পারবেন।

যেমন, নিম্নলিখিত শর্তটি একটি নির্দিষ্ট তারিখ পর্যন্ত কোনও প্রিন্সিপালকে datastore.user ভূমিকা অ্যাসাইন করে:

{
  "role": "roles/datastore.user",
  "members": [
    "user:travis@example.com"
  ],
  "condition": {
    "title": "Expires_December_1_2023",
    "description": "Expires on December 1, 2023",
    "expression":
      "request.time < timestamp('2023-12-01T00:00:00.000Z')"
  }
}

সাময়িক অ্যাক্সেসের জন্য IAM শর্ত কীভাবে নির্ধারণ করতে হয় তা জানতে, সাময়িক অ্যাক্সেস কনফিগার করুন দেখুন।

এক বা একাধিক ডেটাবেস অ্যাক্সেস করার জন্য IAM শর্তাবলী কীভাবে কনফিগার করতে হয় তা জানতে, ডেটাবেস অ্যাক্সেস শর্তাবলী কনফিগার করুন দেখুন।

IAM-এর উপর নিরাপত্তা সংক্রান্ত নিয়মের নির্ভরতা

মোবাইল/ওয়েব ক্লায়েন্টের জন্য Cloud Firestore Security Rules নিম্নলিখিত পরিষেবা অ্যাকাউন্ট ও IAM বাইন্ডিংয়ের উপর নির্ভর করে:

সার্ভিস অ্যাকাউন্ট IAM ভূমিকা
service-project_number@firebase-rules.iam.gserviceaccount.com roles/firebaserules.system

Firebase আপনার জন্য এই পরিষেবা অ্যাকাউন্ট অটোমেটিক সেট-আপ করে। আপনি যদি এই পরিষেবা অ্যাকাউন্ট থেকে firebaserules.system ভূমিকা সরিয়ে দেন, তাহলে আপনার নিরাপত্তা নিয়ম সব অনুরোধ প্রত্যাখ্যান করবে। এই IAM বাইন্ডিং ফিরিয়ে আনতে, নিম্নলিখিত gcloud CLI কমান্ড ব্যবহার করুন:

gcloud projects add-iam-policy-binding project_id \
--member=serviceAccount:service-project_number@firebase-rules.iam.gserviceaccount.com \
--role=roles/firebaserules.system

আপনার project_id এবং project_number নির্ধারণ করতে, প্রোজেক্ট শনাক্ত করা দেখুন।

Google Cloud কনসোলের পরিবর্তে Google Cloud CLI ব্যবহার করুন, কারণ কনসোলে ডিফল্ট হিসেবে firebaserules.system ভূমিকা লুকানো থাকে।

এর পরে কী করতে হবে