আইডেন্টিটি অ্যান্ড অ্যাকসেস ম্যানেজমেন্ট (আইএএম)

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

IAM আপনাকে সর্বনিম্ন বিশেষাধিকারের নিরাপত্তা নীতি অবলম্বন করতে দেয়, যার ফলে আপনি আপনার রিসোর্সগুলিতে কেবল প্রয়োজনীয় অ্যাক্সেসই প্রদান করেন।

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

অনুমতি এবং ভূমিকা

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

এপিআই পদ্ধতিগুলির জন্য প্রয়োজনীয় অনুমতি

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

পদ্ধতি প্রয়োজনীয় অনুমতি
projects.databases.documents
batchGet datastore.entities.get
বিদ্যমান থাকার পূর্বশর্ত false সেট করা থাকলে batchWrite আপডেট বা রূপান্তর করুন। datastore.entities.create
exists প্রি-কন্ডিশনটি true সেট করে batchWrite আপডেট বা ট্রান্সফর্ম করুন। datastore.entities.create
কোনো পূর্বশর্ত ছাড়াই batchWrite আপডেট বা রূপান্তর করুন datastore.entities.create
datastore.entities.update
beginTransaction datastore.databases.get
exists প্রি-কন্ডিশন false সেট করে commit আপডেট বা ট্রান্সফর্ম করুন। datastore.entities.create
exists প্রি-কন্ডিশনটি true সেট করে commit আপডেট বা ট্রান্সফর্ম করুন। 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
exists প্রি-কন্ডিশন false সেট করে write (RPC) আপডেট বা ট্রান্সফর্ম করুন। datastore.entities.create
exists প্রি-কন্ডিশনটি true সেট করে write (RPC) 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 অনুরোধকারী অ্যাকাউন্টের রিসোর্সটি ব্যবহারের উপযুক্ত অনুমতি থাকা আবশ্যক। কোনো ব্যবহারকারী, গ্রুপ বা সার্ভিস অ্যাকাউন্টকে রোল প্রদানকারী পলিসি সেট করার মাধ্যমে অনুমতি দেওয়া হয়। মালিক (owner), সম্পাদক (editor) এবং দর্শক (viewer) -এর মতো সাধারণ রোলগুলো ছাড়াও, আপনি আপনার প্রোজেক্টের ব্যবহারকারীদের Cloud Firestore বিভিন্ন রোল প্রদান করতে পারেন।

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

ভূমিকা অনুমতি বর্ণনা
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
ইনসাইটস, স্ট্যাটস এবং কী ভিজ্যুয়ালাইজার স্ক্যানগুলো পড়ার সুযোগ।

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

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

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

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

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

ট্যাগগুলি দেখুন
  • 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 উপলব্ধ ডাটাবেস অবস্থানগুলির তালিকা। নতুন ডাটাবেস তৈরি করার জন্য এটি প্রয়োজন।
কী ভিজ্যুয়ালাইজার অনুমতির নাম বর্ণনা
datastore.keyVisualizerScans.get Key Visualizer স্ক্যান সম্পর্কে বিস্তারিত জানুন।
datastore.keyVisualizerScans.list উপলব্ধ কী ভিজ্যুয়ালাইজার স্ক্যানগুলির তালিকা দিন।
ব্যাকআপ শিডিউলের অনুমতির নাম বর্ণনা
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 আইএএম পরিচালনা করুন

আপনি গুগল ক্লাউড কনসোল, আইএএম এপিআই, অথবা gcloud কমান্ড-লাইন টুল ব্যবহার করে আইএএম পলিসিগুলো পেতে ও সেট করতে পারেন। বিস্তারিত জানতে ‘প্রজেক্ট সদস্যদের অ্যাক্সেস প্রদান, পরিবর্তন এবং প্রত্যাহার’ দেখুন।

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

আপনি শর্তসাপেক্ষ অ্যাক্সেস নিয়ন্ত্রণ সংজ্ঞায়িত ও প্রয়োগ করতে 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 বাইন্ডিংয়ের উপর নির্ভর করে:

পরিষেবা অ্যাকাউন্ট আইএএম ভূমিকা
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 CLI ব্যবহার করুন, কারণ firebaserules.system রোলটি কনসোলে ডিফল্টরূপে লুকানো থাকে।

এরপর কী?