একটি এক্সটেনশনকে তার নির্দিষ্ট ক্রিয়া সম্পাদন করার জন্য, ফায়ারবেস একটি ইনস্টল করা এক্সটেনশনের প্রতিটি উদাহরণকে একটি পরিষেবা অ্যাকাউন্টের মাধ্যমে প্রকল্প এবং এর ডেটাতে সীমিত অ্যাক্সেস দেয়।
একটি পরিষেবা অ্যাকাউন্ট কী?
একটি পরিষেবা অ্যাকাউন্ট হল একটি বিশেষ ধরণের Google ব্যবহারকারী অ্যাকাউন্ট। এটি এমন একটি অ-মানব ব্যবহারকারীকে প্রতিনিধিত্ব করে যা Google পরিষেবাগুলিতে অনুমোদিত API কল করতে পারে।
একটি এক্সটেনশন ইনস্টল করার সময়, ফায়ারবেস প্রকল্পে এক্সটেনশনের জন্য একটি পরিষেবা অ্যাকাউন্ট তৈরি করে। প্রতিটি ইনস্টল করা এক্সটেনশনের নিজস্ব পরিষেবা অ্যাকাউন্ট থাকে। যদি কোনও এক্সটেনশন ইনস্ট্যান্স আনইনস্টল করা হয়, তাহলে ফায়ারবেস এক্সটেনশনের পরিষেবা অ্যাকাউন্ট মুছে ফেলে।
এক্সটেনশনের জন্য তৈরি পরিষেবা অ্যাকাউন্টগুলি এই ফর্ম্যাটে রয়েছে:
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 Cloud ডকুমেন্টেশন দেখুন। আপনি Google Cloud কনসোলের 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 (বিশেষ করে, Cloud Firestore এবং Cloud Storage ) দ্বারা পরিচালিত হয়।
ফায়ারবেস পণ্য
| যদি আপনার এক্সটেনশন... এর সাথে ইন্টারঅ্যাক্ট করে। | এই ভূমিকাগুলির মধ্যে একটি নির্ধারণ করুন... |
|---|---|
| Cloud Firestore | ডেটাস্টোর.ইম্পোর্টএক্সপোর্টঅ্যাডমিন ডেটাস্টোর.ইন্ডেক্সঅ্যাডমিন ডেটাস্টোর.মালিক ডেটাস্টোর.ইউজার ডেটাস্টোর.ভিউয়ার |
| Cloud Storage for Firebase | স্টোরেজ.অ্যাডমিন স্টোরেজ.অবজেক্টঅ্যাডমিন storage.objectCreator সম্পর্কে স্টোরেজ.অবজেক্টভিউয়ার |
| 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 সম্পর্কে |
গুগল ক্লাউড পণ্য
গুগল ক্লাউড ডকুমেন্টেশনে এই ভূমিকাগুলি সম্পর্কে জানুন।
| যদি আপনার এক্সটেনশন... এর সাথে ইন্টারঅ্যাক্ট করে। | এই ভূমিকাগুলির মধ্যে একটি নির্ধারণ করুন... |
|---|---|
| কর্ম | অ্যাকশন। অ্যাডমিন অ্যাকশন। ভিউয়ার |
| এপিজি | apigee.analyticsএজেন্ট apigee.analyticsসম্পাদক apigee.analyticsViewer সম্পর্কে apigee.apiস্রষ্টা অনুসরণ apigee.developerঅ্যাডমিন apigee.readOnlyAdmin সম্পর্কে apigee.synchronizerম্যানেজার |
| App Engine | অ্যাপইঞ্জিন.অ্যাপঅ্যাডমিন অ্যাপইঞ্জিন.অ্যাপভিউয়ার অ্যাপইঞ্জিন.কোডভিউয়ার অ্যাপইঞ্জিন.ডিপ্লয়ার অ্যাপইঞ্জিন.সার্ভিস অ্যাডমিন |
| অটোএমএল | automl.editor সম্পর্কে automl.predictor সম্পর্কে automl.viewer সম্পর্কে |
| বিগকুয়েরি | bigquery.connectionAdmin সম্পর্কে bigquery.connectionব্যবহারকারী bigquery.dataEditor সম্পর্কে bigquery.data মালিক bigquery.dataViewer সম্পর্কে bigquery.jobব্যবহারকারী bigquery.metadataViewer সম্পর্কে bigquery.readSessionUser সম্পর্কে bigquery.user সম্পর্কে |
| ক্লাউড বিগটেবিল | bigtable.reader সম্পর্কে bigtable.user সম্পর্কে অনুসরণ |
| বিলিং | বিলিং.ভিউয়ার |
| Hangout চ্যাট | চ্যাট.মালিক চ্যাট.রিডার |
| ক্লাউড অ্যাসেট | অনুসরণ অনুসরণ |
| ক্লাউড ডেটা ফিউশন | ডেটাফিউশন.অ্যাডমিন ডেটাফিউশন.ভিউয়ার |
| ক্লাউড ডিবাগার | ক্লাউডডিবাগার.এজেন্ট ক্লাউডডিবাগার.ব্যবহারকারী |
| ক্লাউড ফাংশন | ক্লাউডফাংশন.ইনভোকার ক্লাউডফাংশন.ভিউয়ার |
| ক্লাউড আইএপি | iap.admin সম্পর্কে iap.httpsরিসোর্সঅ্যাক্সেসর iap.settingsঅ্যাডমিন iap.tunnelরিসোর্সঅ্যাক্সেসর |
| ক্লাউড আইওটি | ক্লাউডিওট.ডিভাইসকন্ট্রোলার ক্লাউডিওট.এডিটর ক্লাউডিওট.প্রোভিশনার ক্লাউডিওট.ভিউয়ার |
| স্ট্যাকড্রাইভার প্রোফাইলার | ক্লাউডপ্রোফাইলার.এজেন্ট ক্লাউডপ্রোফাইলার.ইউজার |
| Cloud Scheduler | ক্লাউডশিডিউলার.অ্যাডমিন ক্লাউডশিডিউলার.জবরানার ক্লাউডশিডিউলার.ভিউয়ার |
| ক্লাউড সিকিউরিটি স্ক্যানার | ক্লাউডসিকিউরিটিস্ক্যানার.এডিটর ক্লাউডসিকিউরিটিস্ক্যানার.রানার ক্লাউডসিকিউরিটিস্ক্যানার.ভিউয়ার |
| ক্লাউড এসকিউএল | ক্লাউডস্কিএল.ক্লায়েন্ট ক্লাউডস্কিএল.এডিটর ক্লাউডস্কিএল.ভিউয়ার |
| ক্লাউড ট্রেস | ক্লাউডট্রেস.অ্যাডমিন ক্লাউডট্রেস.এজেন্ট ক্লাউডট্রেস.ইউজার |
| ডেটাফ্লো | ডেটাফ্লো.ডেভেলপার ডেটাফ্লো.ভিউয়ার ডেটাফ্লো.ওয়ার্কার |
| ডায়ালগফ্লো | ডায়ালগফ্লো.অ্যাডমিন ডায়ালগফ্লো.ক্লায়েন্ট ডায়ালগফ্লো.রিডার |
| ক্লাউড ডেটা ক্ষতি প্রতিরোধ | dlp.reader সম্পর্কে dlp.user সম্পর্কে |
| ত্রুটি প্রতিবেদন | errorreporting.user সম্পর্কে ত্রুটি প্রতিবেদন.দর্শক ত্রুটি প্রতিবেদন লেখক |
| ইভেন্টার্ক | অনুসরণ eventarc.eventReceiver সম্পর্কে |
| ক্লাউড ফাইলস্টোর | ফাইল.এডিটর ফাইল.ভিউয়ার |
| লগিং | logging.configWriter সম্পর্কে লগিং.লগ রাইটার লগিং.প্রাইভেটলগভিউয়ার লগিং.ভিউয়ার |
| মেশিন লার্নিং ইঞ্জিন | ml.developer সম্পর্কে ml.jobমালিক ml.modelOwner সম্পর্কে ml.modelUser সম্পর্কে ml.operationমালিক ml.viewer সম্পর্কে |
| পর্যবেক্ষণ | পর্যবেক্ষণ.সম্পাদক monitoring.metricWriter সম্পর্কে পর্যবেক্ষণ.দর্শক |
| এআই নোটবুক | নোটবুক.অ্যাডমিন নোটবুক.ভিউয়ার |
| Pub/Sub | pubsub.editor সম্পর্কে অনুসরণ অনুসরণ অনুসরণ |
| মেমোরিস্টোর রেডিস | redis.editor সম্পর্কে redis.viewer সম্পর্কে |
| ক্লাউড রান | রান.ইনভোকার |
| উৎস | সোর্স.রিডার উৎস.লেখক |
| ক্লাউড স্প্যানার | স্প্যানার.ডাটাবেসঅ্যাডমিন স্প্যানার.ডাটাবেসরিডার spanner.databaseব্যবহারকারী অনুসরণ |
| পরিষেবা ব্যবহার | serviceusage.apiKeysমেটাডেটাভিউয়ার |
| ক্লাউড স্টোরেজ ট্রান্সফার পরিষেবা | storagetransfer.user সম্পর্কে স্টোরেজট্রান্সফার.ভিউয়ার |
| ক্লাউড ট্রান্সকোডার | ট্রান্সকোডার.অ্যাডমিন ট্রান্সকোডার.ভিউয়ার |
| ভার্টেক্স এআই | aiplatform.user সম্পর্কে |
| অন্যান্য | আইডেন্টিটিটুলকিট.অ্যাডমিন আইডেন্টিটিটুলকিট.ভিউয়ার |