একটি এক্সটেনশনের নির্দিষ্ট ক্রিয়া সম্পাদনের জন্য, Firebase একটি ইনস্টল করা এক্সটেনশনের প্রতিটি দৃষ্টান্ত প্রদান করে একটি পরিষেবা অ্যাকাউন্টের মাধ্যমে প্রকল্প এবং এর ডেটাতে সীমিত অ্যাক্সেস।
একটি পরিষেবা অ্যাকাউন্ট কি?
একটি পরিষেবা অ্যাকাউন্ট হল একটি বিশেষ ধরনের Google ব্যবহারকারী অ্যাকাউন্ট। এটি একটি অ-মানব ব্যবহারকারীকে প্রতিনিধিত্ব করে যে Google পরিষেবাগুলিতে অনুমোদিত API কল করতে পারে৷
একটি এক্সটেনশন ইনস্টল করার সময়, ফায়ারবেস প্রকল্পে এক্সটেনশনের জন্য একটি পরিষেবা অ্যাকাউন্ট তৈরি করে। একটি এক্সটেনশনের প্রতিটি ইনস্টল করা উদাহরণের নিজস্ব পরিষেবা অ্যাকাউন্ট রয়েছে৷ যদি একটি এক্সটেনশন উদাহরণ আনইনস্টল করা হয়, Firebase এক্সটেনশনের পরিষেবা অ্যাকাউন্ট মুছে দেয়।
এক্সটেনশনগুলির জন্য তৈরি পরিষেবা অ্যাকাউন্টগুলি ফর্ম্যাটে রয়েছে:
ext- extension-instance-id @ project-id .iam.gserviceaccount.com
ফায়ারবেস এক্সটেনশনের পরিষেবা অ্যাকাউন্টে নির্দিষ্ট ভূমিকা (অনুমতির বান্ডিল) বরাদ্দ করে একটি প্রকল্প এবং এর ডেটাতে একটি এক্সটেনশনের অ্যাক্সেস সীমিত করে। আপনি যখন একটি এক্সটেনশন তৈরি করেন, তখন আপনি নির্ধারণ করেন যে আপনার এক্সটেনশনের কোন ভূমিকাগুলি পরিচালনা করতে হবে, তারপরে আপনি এই ভূমিকাগুলি তালিকাভুক্ত করেন এবং আপনার extension.yaml
ফাইলে আপনার এক্সটেনশনের এই ভূমিকাগুলির প্রয়োজনের কারণ (এই পৃষ্ঠার নীচে উদাহরণ দেখুন)।
আপনার এক্সটেনশনের কোন ভূমিকা প্রয়োজন তা নির্ধারণ করুন
আপনি যখন আপনার এক্সটেনশন তৈরি করেন, তখন আপনি আপনার এক্সটেনশনটি পরিচালনা করার জন্য প্রয়োজনীয় অ্যাক্সেসের স্তর নির্ধারণ করেন।
ইনস্টলেশনের সময়, Firebase CLI ব্যবহারকারীকে প্রতিটি ভূমিকা দ্বারা প্রদত্ত অ্যাক্সেস লেভেল গ্রহণ করার জন্য অনুরোধ করে। যদি আপনার এক্সটেনশনটি আসলে প্রয়োজনের চেয়ে বেশি ভূমিকার অনুরোধ করে, তাহলে ব্যবহারকারীদের এটি ইনস্টল করার সম্ভাবনা কম হতে পারে।
আপনার এক্সটেনশন কোনো পণ্যের সাথে ইন্টারঅ্যাক্ট করে কিনা তা নির্ধারণ করুন:
যদি আপনার এক্সটেনশন কোনো পণ্যের সাথে ইন্টারঅ্যাক্ট করে , তাহলে আপনাকে সেই পণ্যে আপনার এক্সটেনশন অ্যাক্সেস দিতে হবে।
উদাহরণস্বরূপ, যদি আপনার এক্সটেনশন একটি Realtime Database উদাহরণে ডেটা লেখে , তাহলে আপনার এক্সটেনশনের একটি Realtime Database ভূমিকা প্রয়োজন (বিশেষত,
firebasedatabase.admin
)।যদি আপনার এক্সটেনশন শুধুমাত্র একটি পণ্য থেকে একটি ট্রিগারিং ইভেন্টের জন্য শোনে , তাহলে আপনার এক্সটেনশনের সেই পণ্যের সাথে যুক্ত ভূমিকার প্রয়োজন নেই ৷
উদাহরণস্বরূপ, যদি আপনার এক্সটেনশনটি Realtime Database ইনস্ট্যান্সে লেখার সময় ট্রিগার করে (কিন্তু ডাটাবেসে কিছু না লেখে), তাহলে আপনার এক্সটেনশনের Realtime Database ভূমিকার প্রয়োজন নেই ।
আপনার এক্সটেনশন কোন পণ্যগুলির সাথে মিথস্ক্রিয়া করে তা নির্ধারণ করার পরে, সেই নির্দিষ্ট মিথস্ক্রিয়াটির জন্য কোন ভূমিকা প্রয়োজন তা আপনাকে সিদ্ধান্ত নিতে হবে৷ কিছু পণ্য ক্রিয়া বা কর্মের সেটের উপর নির্ভর করে বিভিন্ন ভূমিকা অফার করে।
উদাহরণস্বরূপ, বলুন আপনার এক্সটেনশন একটি Cloud Storage বাকেটের সাথে ইন্টারঅ্যাক্ট করে৷
storage.objectCreator
ভূমিকা এক্সটেনশনকে একটি Cloud Storage বাকেটের মধ্যে একটি বস্তু তৈরি করার অনুমতি দেবে, কিন্তু সেই ভূমিকাটি এক্সটেনশনকে অবজেক্ট দেখতে, মুছে ফেলতে বা ওভাররাইট করার অনুমতি দেবে না৷ এই অতিরিক্ত ক্রিয়াগুলি সম্পাদন করার জন্য এক্সটেনশনটিকে সক্ষম করতে, আপনাকে পরিবর্তেstorage.objectAdmin
ভূমিকা বরাদ্দ করতে হবে৷
আপনি আপনার এক্সটেনশনের পরিষেবা অ্যাকাউন্ট বরাদ্দ করতে পারেন এমন সমস্ত সমর্থিত ভূমিকা দেখতে এই পৃষ্ঠার নীচের অংশটি পড়ুন৷ প্রতিটি ভূমিকার বিবরণ এবং প্রদত্ত অনুমতি সম্পর্কে জানতে, Firebase ডকুমেন্টেশন বা Google ক্লাউড ডকুমেন্টেশন দেখুন। আপনি Google ক্লাউড কনসোলের IAM এবং অ্যাডমিন প্যানেলে ভূমিকাগুলিও দেখতে পারেন৷
কিভাবে একটি এক্সটেনশনে ভূমিকা বরাদ্দ করতে হয়
আপনার extension.yaml
ফাইলের roles
বিভাগে কাজ করার জন্য আপনার এক্সটেনশনের জন্য প্রয়োজনীয় IAM ভূমিকাগুলি তালিকাভুক্ত করুন৷
এখানে একটি এক্সটেনশনের উদাহরণ দেওয়া হল যা একটি নির্দিষ্ট Firebase Realtime Database পাথ শোনে। ট্রিগার করা হলে, এক্সটেনশনটি একটি ব্যবহারকারীর অ্যাকাউন্টের ইমেল আপডেট করে ( Firebase Authentication সাথে ইন্টারঅ্যাকশন) এবং একটি বিজ্ঞপ্তি পাঠায় ( Firebase Cloud Messaging সাথে মিথস্ক্রিয়া)। নিম্নলিখিত লক্ষ্য করুন:
- যদিও এক্সটেনশনটি Realtime Database ইভেন্ট থেকে ট্রিগার হয় ,
firebasedatabase.admin
ভূমিকা তালিকাভুক্ত নয় (শোনাকে একটি ইন্টারঅ্যাকশন হিসাবে বিবেচনা করা হয় না)। - যেহেতু এক্সটেনশনটি Authentication এবং Cloud Messaging সাথে ইন্টারঅ্যাক্ট করে , তাই এক্সটেনশনের সেই পণ্যগুলি অ্যাক্সেস করার জন্য ভূমিকা প্রয়োজন (যথাক্রমে
firebaseauth.admin
এবংfirebasenotifications.admin
)।
# extension.yaml
...
# Roles assigned to the extension's service account by Firebase during installation
roles:
- role: firebaseauth.admin
reason: Required to update the email address of the user account
- role: firebasenotifications.admin
reason: Required to send a notification that the email address has been updated
...
আপনার extension.yaml
ফাইলে, একটি এক্সটেনশনের পরিষেবা অ্যাকাউন্টে একটি ভূমিকা নির্ধারণ করতে নিম্নলিখিত ক্ষেত্রগুলি ব্যবহার করুন:
মাঠ | টাইপ | বর্ণনা |
---|---|---|
role (প্রয়োজনীয়) | স্ট্রিং | পরিচালনার জন্য এক্সটেনশনের প্রয়োজনীয় IAM ভূমিকার নাম |
reason (প্রয়োজনীয়) | স্ট্রিং | কেন এক্সটেনশনের ভূমিকা দ্বারা প্রদত্ত অ্যাক্সেস প্রয়োজন তার কারণের সংক্ষিপ্ত বিবরণ৷ পর্যাপ্ত বিশদ প্রদান নিশ্চিত করুন যাতে একজন ব্যবহারকারী বুঝতে পারেন যে এক্সটেনশনটি কীভাবে ভূমিকা ব্যবহার করে। |
resource (ঐচ্ছিক) | স্ট্রিং | কোন সম্পদের IAM নীতিতে এই ভূমিকা যোগ করা উচিত। যদি বাদ দেওয়া হয়, সমর্থিত মান হল |
ভূমিকার সুযোগ কমিয়ে দিন
এক্সটেনশনগুলিকে ন্যূনতম বিশেষাধিকারের নীতি অনুসরণ করা উচিত এবং শুধুমাত্র তাদের প্রয়োজনীয় সংস্থানগুলিতে অ্যাক্সেসের অনুরোধ করা উচিত৷ আপনি role.resource
ক্ষেত্র ব্যবহার করে এক্সটেনশনের অ্যাক্সেসের সুযোগ সীমিত করতে পারেন। উদাহরণস্বরূপ, যদি আপনার এক্সটেনশনকে একটি ক্লাউড স্টোরেজ বালতিতে বস্তু লিখতে হয়, আপনি নিম্নলিখিত ভূমিকাটি ব্যবহার করতে পারেন:
roles:
- role: storage.objectCreator
reason: Needed in order to write
resource: projects/${PROJECT_ID}/buckets/${STORAGE_BUCKET}
এটি এক্সটেনশনকে শুধুমাত্র তার প্রয়োজনীয় বালতি অ্যাক্সেস করতে দেয় এবং একই প্রকল্পে অন্যদের নয়।
এই ক্ষেত্রটি প্রজেক্ট ( projects/{project_id}
) এবং স্টোরেজ বাকেট ( projects/{project_id}/buckets/{bucket_id}
) সমর্থন করে।
এক্সটেনশনের জন্য সমর্থিত ভূমিকা
নিম্নলিখিত সারণীতে Firebase পণ্যগুলির সাথে ইন্টারঅ্যাক্ট করার জন্য সমর্থিত IAM ভূমিকাগুলির তালিকা রয়েছে৷ এই টেবিলের বেশিরভাগ ভূমিকা হল Firebase পণ্য-স্তরের ভূমিকা , কিন্তু কিছু সরাসরি Google ক্লাউড (বিশেষত, Cloud Firestore এবং Cloud Storage ) দ্বারা পরিচালিত হয়।
ফায়ারবেস পণ্য
যদি আপনার এক্সটেনশন এর সাথে ইন্টারঅ্যাক্ট করে... | এই ভূমিকাগুলির মধ্যে একটি বরাদ্দ করুন... |
---|---|
Cloud Firestore | datastore.importExportAdmin datastore.indexAdmin datastore.owner datastore.user datastore.viewer |
Cloud Storage for Firebase | store.admin store.objectAdmin store.objectCreator store.objectViewer |
Firebase App Distribution | firebaseappdistro.admin firebaseappdistro.viewer |
Firebase Authentication | firebaseauth.admin firebaseauth.viewer |
Firebase A/B Testing | firebaseabt.admin firebaseabt.viewer |
Firebase Cloud Messaging | firebasenotifications.admin firebasenotifications.viewer |
Firebase Crashlytics | firebasecrashlytics.admin firebasecrashlytics.viewer |
Firebase Hosting | firebasehosting.admin firebasehosting.viewer |
Firebase In-App Messaging | firebaseinappmessaging.admin firebaseinappmessaging.viewer |
Firebase ML | firebaseml.admin firebaseml.viewer |
Firebase Performance Monitoring | firebaseperformance.viewer firebaseperformance.reader firebaseperformance.writer |
Firebase Realtime Database | firebasedatabase.admin firebasedatabase.viewer |
নিরাপত্তা নিয়ম | firebaserules.viewer firebaserules.developer firebaserules.deployer |
Google Analytics | firebaseanalytics.admin firebaseanalytics.viewer |
গুগল ক্লাউড পণ্য
Google ক্লাউড ডকুমেন্টেশনে এই ভূমিকাগুলি সম্পর্কে জানুন৷
যদি আপনার এক্সটেনশন এর সাথে ইন্টারঅ্যাক্ট করে... | এই ভূমিকাগুলির মধ্যে একটি বরাদ্দ করুন... |
---|---|
কর্ম | অ্যাকশন। অ্যাডমিন কর্ম। দর্শক |
এপিজি | apigee.analyticsAgent apigee.analyticsEditor apigee.analyticsViewer apigee.apiCreator apigee.deployer apigee.developerAdmin apigee.readOnlyAdmin apigee.synchronizerManager |
App Engine | appengine.appAdmin appengine.appViewer appengine.codeViewer appengine.deployer appengine.serviceAdmin |
অটোএমএল | automl.editor automl. predictor automl.viewer |
BigQuery | bigquery.connectionAdmin bigquery.connectionUser bigquery.dataEditor bigquery.dataOwner bigquery.dataViewer bigquery.jobUser bigquery.metadataViewer bigquery.readSessionUser bigquery.user |
ক্লাউড বিগটেবল | bigtable.reader bigtable.user bigtable.viewer |
বিলিং | billing.viewer |
হ্যাঙ্গআউট চ্যাট | chat.owner chat.reader |
ক্লাউড সম্পদ | cloudasset.owner cloudasset.viewer |
ক্লাউড ডেটা ফিউশন | datafusion.admin datafusion.viewer |
ক্লাউড ডিবাগার | Clouddebugger.agent clouddebugger.user |
ক্লাউড ফাংশন | cloudfunctions.invoker cloudfunctions.viewer |
ক্লাউড আইএপি | iap.admin iap.httpsResourceAccessor iap.settingsAdmin iap.tunnelResourceAccessor |
ক্লাউড আইওটি | cloudiot.deviceController cloudiot.editor cloudiot.provisioner cloudiot.viewer |
স্ট্যাকড্রাইভার প্রোফাইলার | cloudprofiler.agent cloudprofiler.user |
Cloud Scheduler | cloudscheduler.admin cloudscheduler.jobRunner cloudscheduler.viewer |
ক্লাউড সিকিউরিটি স্ক্যানার | cloudsecurityscanner.editor cloudsecurityscanner.runner cloudsecurityscanner.viewer |
ক্লাউড এসকিউএল | cloudsql.client cloudsql.editor cloudsql.viewer |
মেঘ ট্রেস | cloudtrace.admin cloudtrace.agent cloudtrace.user |
ডেটাফ্লো | dataflow.developer dataflow.viewer dataflow.worker |
ডায়ালগফ্লো | dialogflow.admin dialogflow.client dialogflow.reader |
ক্লাউড ডেটা ক্ষতি প্রতিরোধ | dlp.reader dlp.user |
ত্রুটি রিপোর্টিং | errorreporting.user errorreporting.viewer errorreporting.writer |
ইভেন্টর্ক | eventarc.publisher eventarc.eventReceiver |
ক্লাউড ফাইলস্টোর | file.editor file.viewer |
লগিং | logging.configWriter logging.logWriter logging.privateLogViewer logging.viewer |
মেশিন লার্নিং ইঞ্জিন | ml.developer ml.jobOwner ml.modelOwner ml.modelUser ml.operationOwner ml.viewer |
মনিটরিং | monitoring.editor monitoring.metricWriter পর্যবেক্ষণ.দর্শক |
এআই নোটবুক | notebooks.admin নোটবুক.দর্শক |
Pub/Sub | pubsub.editor pubsub.publisher pubsub.subscriber pubsub.viewer |
মেমোরিস্টোর রেডিস | redis.editor redis.viewer |
ক্লাউড রান | run.invoker |
উৎস | source.reader source.writer |
ক্লাউড স্প্যানার | spanner.databaseAdmin spanner.databaseReader spanner.databaseUser spanner.viewer |
পরিষেবা ব্যবহার | serviceusage.apiKeysMetadataViewer |
ক্লাউড স্টোরেজ ট্রান্সফার সার্ভিস | storetransfer.user storetransfer.viewer |
ক্লাউড ট্রান্সকোডার | transcoder.admin transcoder.viewer |
ভার্টেক্স এআই | aiplatform.user |
অন্যান্য | identitytoolkit.admin identitytoolkit.viewer |