একটি এক্সটেনশনের জন্য উপযুক্ত অ্যাক্সেস সেট আপ করুন

একটি এক্সটেনশনের নির্দিষ্ট ক্রিয়া সম্পাদনের জন্য, Firebase একটি ইনস্টল করা এক্সটেনশনের প্রতিটি দৃষ্টান্ত প্রদান করে একটি পরিষেবা অ্যাকাউন্টের মাধ্যমে প্রকল্প এবং এর ডেটাতে সীমিত অ্যাক্সেস।

একটি পরিষেবা অ্যাকাউন্ট কি?

একটি পরিষেবা অ্যাকাউন্ট হল একটি বিশেষ ধরনের Google ব্যবহারকারী অ্যাকাউন্ট। এটি একটি অ-মানব ব্যবহারকারীকে প্রতিনিধিত্ব করে যে Google পরিষেবাগুলিতে অনুমোদিত API কল করতে পারে৷

একটি এক্সটেনশন ইনস্টল করার সময়, ফায়ারবেস প্রকল্পে এক্সটেনশনের জন্য একটি পরিষেবা অ্যাকাউন্ট তৈরি করে। একটি এক্সটেনশনের প্রতিটি ইনস্টল করা উদাহরণের নিজস্ব পরিষেবা অ্যাকাউন্ট রয়েছে৷ যদি একটি এক্সটেনশন উদাহরণ আনইনস্টল করা হয়, Firebase এক্সটেনশনের পরিষেবা অ্যাকাউন্ট মুছে দেয়।

এক্সটেনশনগুলির জন্য তৈরি পরিষেবা অ্যাকাউন্টগুলি ফর্ম্যাটে রয়েছে:

ext- extension-instance-id @ project-id .iam.gserviceaccount.com

ফায়ারবেস এক্সটেনশনের পরিষেবা অ্যাকাউন্টে নির্দিষ্ট ভূমিকা (অনুমতির বান্ডিল) বরাদ্দ করে একটি প্রকল্প এবং এর ডেটাতে একটি এক্সটেনশনের অ্যাক্সেস সীমিত করে। আপনি যখন একটি এক্সটেনশন তৈরি করেন, তখন আপনি নির্ধারণ করেন যে আপনার এক্সটেনশনের কোন ভূমিকাগুলি পরিচালনা করতে হবে, তারপরে আপনি এই ভূমিকাগুলি তালিকাভুক্ত করেন এবং আপনার extension.yaml ফাইলে আপনার এক্সটেনশনের এই ভূমিকাগুলির প্রয়োজনের কারণ (এই পৃষ্ঠার নীচে উদাহরণ দেখুন)।

আপনার এক্সটেনশনের কোন ভূমিকা প্রয়োজন তা নির্ধারণ করুন

আপনি যখন আপনার এক্সটেনশন তৈরি করেন, তখন আপনি আপনার এক্সটেনশনটি পরিচালনা করার জন্য প্রয়োজনীয় অ্যাক্সেসের স্তর নির্ধারণ করেন।

ইনস্টলেশনের সময়, Firebase CLI ব্যবহারকারীকে প্রতিটি ভূমিকা দ্বারা প্রদত্ত অ্যাক্সেস লেভেল গ্রহণ করার জন্য অনুরোধ করে। যদি আপনার এক্সটেনশনটি আসলে প্রয়োজনের চেয়ে বেশি ভূমিকার অনুরোধ করে, তাহলে ব্যবহারকারীদের এটি ইনস্টল করার সম্ভাবনা কম হতে পারে।

  1. আপনার এক্সটেনশন কোনো পণ্যের সাথে ইন্টারঅ্যাক্ট করে কিনা তা নির্ধারণ করুন:

    • যদি আপনার এক্সটেনশন কোনো পণ্যের সাথে ইন্টারঅ্যাক্ট করে , তাহলে আপনাকে সেই পণ্যে আপনার এক্সটেনশন অ্যাক্সেস দিতে হবে।

      উদাহরণস্বরূপ, যদি আপনার এক্সটেনশন একটি Realtime Database উদাহরণে ডেটা লেখে , তাহলে আপনার এক্সটেনশনের একটি Realtime Database ভূমিকা প্রয়োজন (বিশেষত, firebasedatabase.admin )।

    • যদি আপনার এক্সটেনশন শুধুমাত্র একটি পণ্য থেকে একটি ট্রিগারিং ইভেন্টের জন্য শোনে , তাহলে আপনার এক্সটেনশনের সেই পণ্যের সাথে যুক্ত ভূমিকার প্রয়োজন নেই

      উদাহরণস্বরূপ, যদি আপনার এক্সটেনশনটি Realtime Database ইনস্ট্যান্সে লেখার সময় ট্রিগার করে (কিন্তু ডাটাবেসে কিছু না লেখে), তাহলে আপনার এক্সটেনশনের Realtime Database ভূমিকার প্রয়োজন নেই

  2. আপনার এক্সটেনশন কোন পণ্যগুলির সাথে মিথস্ক্রিয়া করে তা নির্ধারণ করার পরে, সেই নির্দিষ্ট মিথস্ক্রিয়াটির জন্য কোন ভূমিকা প্রয়োজন তা আপনাকে সিদ্ধান্ত নিতে হবে৷ কিছু পণ্য ক্রিয়া বা কর্মের সেটের উপর নির্ভর করে বিভিন্ন ভূমিকা অফার করে।

    উদাহরণস্বরূপ, বলুন আপনার এক্সটেনশন একটি 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 নীতিতে এই ভূমিকা যোগ করা উচিত। যদি বাদ দেওয়া হয়, projects/${project_id}

সমর্থিত মান হল projects/* এবং projects/*/buckets/*

ভূমিকার সুযোগ কমিয়ে দিন

এক্সটেনশনগুলিকে ন্যূনতম বিশেষাধিকারের নীতি অনুসরণ করা উচিত এবং শুধুমাত্র তাদের প্রয়োজনীয় সংস্থানগুলিতে অ্যাক্সেসের অনুরোধ করা উচিত৷ আপনি 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