যখন আপনি 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 |
beginTransaction | datastore.databases.get |
exists প্রি-কন্ডিশন false সেট করে commit আপডেট বা ট্রান্সফর্ম করুন। | datastore.entities.create |
exists প্রি-কন্ডিশনটি true সেট করে commit আপডেট বা ট্রান্সফর্ম করুন। | datastore.entities.update |
কোনো পূর্বশর্ত ছাড়াই commit আপডেট বা রূপান্তর করুন | datastore.entities.create |
commit ডিলিট | datastore.entities.delete |
createDocument | datastore.entities.create |
delete | datastore.entities.delete |
get | datastore.entities.get |
list | datastore.entities.getdatastore.entities.list |
listCollectionIds | datastore.entities.list |
partitionQuery | datastore.entities.get |
patch | datastore.entities.update |
rollback | datastore.databases.get |
runAggregationQuery | datastore.entities.get |
runQuery | datastore.entities.get |
executePipeline (RPC)নিম্নলিখিত পর্যায়গুলির যেকোনো একটির সাথে: - collection(...)- collection_group(...)- database() | datastore.entities.get |
executePipeline (RPC)নিম্নলিখিত পর্যায়গুলির যেকোনো একটির সাথে: - documents(...) | datastore.entities.get |
executePipeline (RPC)নিম্নলিখিত পর্যায়গুলির যেকোনো একটির সাথে: - update(...) | datastore.entities.update |
executePipeline (RPC)নিম্নলিখিত পর্যায়গুলির যেকোনো একটির সাথে: - delete(...) | datastore.entities.delete |
exists প্রি-কন্ডিশন false সেট করে write (RPC) আপডেট বা ট্রান্সফর্ম করুন। | datastore.entities.create |
exists প্রি-কন্ডিশনটি true সেট করে write (RPC) | datastore.entities.update |
কোনো পূর্বশর্ত ছাড়াই write (RPC) আপডেট বা রূপান্তর করুন | datastore.entities.create |
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 আপনার
ট্যাগ বাইন্ডিংগুলো সফলভাবে সেট করা হয়েছে কিনা তা বাইন্ডিংগুলো তালিকাভুক্ত করে যাচাই করতে চাইলে, নিম্নলিখিত অতিরিক্ত অনুমতিগুলোর প্রয়োজন হবে:
|
delete | datastore.databases.delete |
get | datastore.databases.getMetadata |
list | datastore.databases.list |
patch | datastore.databases.update |
| পুনরুদ্ধার করুন | datastore.backups.restoreDatabase |
clone | datastore.databases.clone আপনার
ট্যাগ বাইন্ডিংগুলো সফলভাবে সেট করা হয়েছে কিনা তা বাইন্ডিংগুলো তালিকাভুক্ত করে যাচাই করতে চাইলে, নিম্নলিখিত অতিরিক্ত অনুমতিগুলোর প্রয়োজন হবে:
|
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.getdatastore.*resourcemanager.projects.getresourcemanager.projects.list | Cloud Firestore সম্পূর্ণ অ্যাক্সেস। |
roles/datastore.user | appengine.applications.getdatastore.databases.getdatastore.databases.getMetadatadatastore.databases.listdatastore.entities.*datastore.schemas.listdatastore.namespaces.getdatastore.namespaces.listdatastore.statistics.getdatastore.statistics.listresourcemanager.projects.getresourcemanager.projects.list | Cloud Firestore ডেটাবেসের ডেটাতে পঠন ও লিখন অ্যাক্সেস। অ্যাপ্লিকেশন ডেভেলপার এবং সার্ভিস অ্যাকাউন্টগুলোর জন্য উদ্দিষ্ট। |
roles/datastore.viewer | appengine.applications.getdatastore.databases.getdatastore.databases.getMetadatadatastore.databases.listdatastore.entities.getdatastore.entities.listdatastore.schemas.getdatastore.schemas.listdatastore.namespaces.getdatastore.namespaces.listdatastore.statistics.getdatastore.statistics.listresourcemanager.projects.getresourcemanager.projects.listdatastore.insights.get | Cloud Firestore সকল রিসোর্সে পঠনযোগ্য অ্যাক্সেস। |
roles/datastore.importExportAdmin | appengine.applications.getdatastore.databases.exportdatastore.databases.getMetadatadatastore.databases.importdatastore.operations.canceldatastore.operations.getdatastore.operations.listresourcemanager.projects.getresourcemanager.projects.list | আমদানি ও রপ্তানি ব্যবস্থাপনার পূর্ণ অধিকার। |
roles/datastore.bulkAdmin | resourcemanager.projects.getresourcemanager.projects.listdatastore.databases.getMetadatadatastore.databases.bulkDeletedatastore.operations.canceldatastore.operations.getdatastore.operations.list | বৃহৎ আকারের কার্যক্রম পরিচালনার জন্য সম্পূর্ণ প্রবেশাধিকার। |
roles/datastore.indexAdmin | appengine.applications.getdatastore.databases.getMetadatadatastore.schemas.*datastore.operations.listdatastore.operations.getresourcemanager.projects.getresourcemanager.projects.list | ইনডেক্স সংজ্ঞাগুলো পরিচালনা করার পূর্ণ অধিকার। |
roles/datastore.keyVisualizerViewer | datastore.databases.getMetadatadatastore.keyVisualizerScans.getdatastore.keyVisualizerScans.listresourcemanager.projects.getresourcemanager.projects.list | Key Visualizer স্ক্যানগুলিতে সম্পূর্ণ অ্যাক্সেস। |
roles/datastore.backupSchedulesViewer | datastore.backupSchedules.getdatastore.backupSchedules.list | Cloud Firestore ডেটাবেসে ব্যাকআপ শিডিউল পড়ার অ্যাক্সেস। |
roles/datastore.backupSchedulesAdmin | datastore.backupSchedules.getdatastore.backupSchedules.listdatastore.backupSchedules.createdatastore.backupSchedules.updatedatastore.backupSchedules.deletedatastore.databases.listdatastore.databases.getMetadata | Cloud Firestore ডেটাবেসে ব্যাকআপ শিডিউলগুলিতে সম্পূর্ণ অ্যাক্সেস। |
roles/datastore.backupsViewer | datastore.backups.getdatastore.backups.list | Cloud Firestore অবস্থানে ব্যাকআপ তথ্যে পড়ার অ্যাক্সেস। |
roles/datastore.backupsAdmin | datastore.backups.getdatastore.backups.listdatastore.backups.delete | Cloud Firestore লোকেশনে থাকা ব্যাকআপগুলিতে সম্পূর্ণ অ্যাক্সেস। |
roles/datastore.restoreAdmin | datastore.backups.getdatastore.backups.listdatastore.backups.restoreDatabasedatastore.databases.listdatastore.databases.createdatastore.databases.getMetadatadatastore.operations.listdatastore.operations.get | একটি নতুন ডেটাবেসে Cloud Firestore ব্যাকআপ পুনরুদ্ধার করার ক্ষমতা। এই ভূমিকাটি নতুন ডেটাবেস তৈরি করার ক্ষমতাও দেয়, যার জন্য ব্যাকআপ থেকে পুনরুদ্ধার করা আবশ্যক নয়। |
roles/datastore.cloneAdmin | datastore.databases.clonedatastore.databases.listdatastore.databases.createdatastore.databases.getMetadatadatastore.operations.listdatastore.operations.get | একটি Cloud Firestore ডেটাবেসকে একটি নতুন ডেটাবেসে ক্লোন করার ক্ষমতা। এই ভূমিকাটি ক্লোন করা ছাড়াই নতুন ডেটাবেস তৈরি করার ক্ষমতাও দেয়। |
roles/datastore.statisticsViewer | resourcemanager.projects.getresourcemanager.projects.listdatastore.databases.getMetadatadatastore.insights.getdatastore.keyVisualizerScans.getdatastore.keyVisualizerScans.listdatastore.statistics.listdatastore.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 রোলটি কনসোলে ডিফল্টরূপে লুকানো থাকে।
এরপর কী?
- IAM সম্পর্কে আরও জানুন।
- IAM ভূমিকা মঞ্জুর করুন ।
- প্রমাণীকরণ সম্পর্কে জানুন।