এই নথিতে ফায়ারবেস রিয়েলটাইম ডেটাবেসের জন্য নিরীক্ষিত পদ্ধতিগুলোর তালিকা দেওয়া হয়েছে। Google Cloud পরিষেবাগুলো অডিট লগ তৈরি করে, যা আপনার Google Cloud রিসোর্সের মধ্যেকার প্রশাসনিক এবং অ্যাক্সেস কার্যকলাপ রেকর্ড করে। ক্লাউড অডিট লগ সম্পর্কে আরও তথ্যের জন্য, নিম্নলিখিতগুলো দেখুন:
- অডিট লগের প্রকারভেদ
- অডিট লগ এন্ট্রির কাঠামো
- অডিট লগ সংরক্ষণ এবং রাউটিং
- ক্লাউড লগিং মূল্যের সারাংশ
- ডেটা অ্যাক্সেস অডিট লগ সক্রিয় করুন
নোট
DATA_READ এবং DATA_WRITE অপারেশনগুলির জন্য protoPayload.metadata এর ফিল্ডগুলি সম্পর্কে অতিরিক্ত তথ্য রেফারেন্স ডকুমেন্টেশনে পাওয়া যাবে।
পরিষেবার নাম
Firebase Realtime Database-এর অডিট লগগুলো দেখতে, নিম্নলিখিত পদক্ষেপগুলো অনুসরণ করুন:
Google Cloud কনসোলে, Logs Explorer পৃষ্ঠায় যান:
নিচের কোয়েরিটি কপি করে Logs Explorer -এর কোয়েরি ফিল্ডে পেস্ট করুন এবং তারপর রান কোয়েরি-তে ক্লিক করুন।
protoPayload.serviceName="firebasedatabase.googleapis.com"
অনুমতির ধরণ অনুসারে পদ্ধতি
প্রতিটি IAM পারমিশনের একটি type প্রপার্টি থাকে, যার ভ্যালু হলো একটি enum যা চারটি মানের মধ্যে যেকোনো একটি হতে পারে: ADMIN_READ , ADMIN_WRITE , DATA_READ , বা DATA_WRITE । যখন আপনি কোনো মেথড কল করেন, তখন Firebase Realtime Database একটি অডিট লগ তৈরি করে, যার ক্যাটাগরি মেথডটি সম্পাদনের জন্য প্রয়োজনীয় পারমিশনের ' type ' প্রপার্টির উপর নির্ভর করে। যে মেথডগুলোর জন্য DATA_READ , DATA_WRITE , বা ADMIN_READ type প্রপার্টি ভ্যালুসহ IAM পারমিশন প্রয়োজন হয় , সেগুলো ডেটা অ্যাক্সেস (Data Access) অডিট লগ তৈরি করে। যে মেথডগুলোর জন্য ADMIN_WRITE type প্রপার্টি ভ্যালুসহ IAM পারমিশন প্রয়োজন হয়, সেগুলো অ্যাডমিন অ্যাক্টিভিটি (Admin Activity) অডিট লগ তৈরি করে।
| অনুমতির ধরণ | পদ্ধতি |
|---|---|
ADMIN_READ | google.firebase.database.v1beta.RealtimeDatabaseService.GetDatabaseInstancegoogle.firebase.database.v1beta.RealtimeDatabaseService.ListDatabaseInstances |
ADMIN_WRITE | google.firebase.database.v1beta.RealtimeDatabaseService.CreateDatabaseInstancegoogle.firebase.database.v1beta.RealtimeDatabaseService.DeleteDatabaseInstancegoogle.firebase.database.v1beta.RealtimeDatabaseService.DisableDatabaseInstancegoogle.firebase.database.v1beta.RealtimeDatabaseService.ReenableDatabaseInstancegoogle.firebase.database.v1beta.RealtimeDatabaseService.UndeleteDatabaseInstance |
DATA_READ | google.firebase.database.v1.RealtimeDatabase.Connectgoogle.firebase.database.v1.RealtimeDatabase.Disconnectgoogle.firebase.database.v1.RealtimeDatabase.Listengoogle.firebase.database.v1.RealtimeDatabase.OnDisconnectCancelgoogle.firebase.database.v1.RealtimeDatabase.Readgoogle.firebase.database.v1.RealtimeDatabase.Unlisten |
DATA_WRITE | google.firebase.database.v1.RealtimeDatabase.OnDisconnectPutgoogle.firebase.database.v1.RealtimeDatabase.OnDisconnectUpdategoogle.firebase.database.v1.RealtimeDatabase.RunOnDisconnectgoogle.firebase.database.v1.RealtimeDatabase.Updategoogle.firebase.database.v1.RealtimeDatabase.Write |
এপিআই ইন্টারফেস অডিট লগ
প্রতিটি পদ্ধতির জন্য কীভাবে এবং কোন অনুমতিগুলো মূল্যায়ন করা হয়, সে সম্পর্কে তথ্যের জন্য Firebase Realtime Database-এর ক্লাউড আইডেন্টিটি অ্যান্ড অ্যাক্সেস ম্যানেজমেন্ট ডকুমেন্টেশন দেখুন।
google.firebase.database.v1.RealtimeDatabase
নিম্নলিখিত অডিট লগগুলি google.firebase.database.v1.RealtimeDatabase এর অন্তর্গত মেথডগুলির সাথে সম্পর্কিত।
Connect
- পদ্ধতি :
google.firebase.database.v1.RealtimeDatabase.Connect - অডিট লগ টাইপ : ডেটা অ্যাক্সেস
- অনুমতিসমূহ :
-
firebasedatabase.data.connect - DATA_READ
-
- পদ্ধতিটি একটি দীর্ঘস্থায়ী বা স্ট্রিমিং অপারেশন : না।
- এই পদ্ধতির জন্য ফিল্টার করুন :
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Connect"
Disconnect
- পদ্ধতি :
google.firebase.database.v1.RealtimeDatabase.Disconnect - অডিট লগ টাইপ : ডেটা অ্যাক্সেস
- অনুমতিসমূহ :
-
firebasedatabase.data.connect - DATA_READ
-
- পদ্ধতিটি একটি দীর্ঘস্থায়ী বা স্ট্রিমিং অপারেশন : না।
- এই পদ্ধতির জন্য ফিল্টার করুন :
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Disconnect"
Listen
- পদ্ধতি :
google.firebase.database.v1.RealtimeDatabase.Listen - অডিট লগ টাইপ : ডেটা অ্যাক্সেস
- অনুমতিসমূহ :
-
firebasedatabase.data.get - DATA_READ
-
- পদ্ধতিটি একটি দীর্ঘস্থায়ী বা স্ট্রিমিং অপারেশন : না।
- এই পদ্ধতির জন্য ফিল্টার করুন :
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Listen"
OnDisconnectCancel
- পদ্ধতি :
google.firebase.database.v1.RealtimeDatabase.OnDisconnectCancel - অডিট লগ টাইপ : ডেটা অ্যাক্সেস
- অনুমতিসমূহ :
-
firebasedatabase.data.cancel - DATA_READ
-
- পদ্ধতিটি একটি দীর্ঘস্থায়ী বা স্ট্রিমিং অপারেশন : না।
- এই পদ্ধতির জন্য ফিল্টার করুন :
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectCancel"
OnDisconnectPut
- পদ্ধতি :
google.firebase.database.v1.RealtimeDatabase.OnDisconnectPut - অডিট লগ টাইপ : ডেটা অ্যাক্সেস
- অনুমতিসমূহ :
-
firebasedatabase.data.update - DATA_WRITE
-
- পদ্ধতিটি একটি দীর্ঘস্থায়ী বা স্ট্রিমিং অপারেশন : না।
- এই পদ্ধতির জন্য ফিল্টার করুন :
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectPut"
OnDisconnectUpdate
- পদ্ধতি :
google.firebase.database.v1.RealtimeDatabase.OnDisconnectUpdate - অডিট লগ টাইপ : ডেটা অ্যাক্সেস
- অনুমতিসমূহ :
-
firebasedatabase.data.update - DATA_WRITE
-
- পদ্ধতিটি একটি দীর্ঘস্থায়ী বা স্ট্রিমিং অপারেশন : না।
- এই পদ্ধতির জন্য ফিল্টার করুন :
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.OnDisconnectUpdate"
Read
- পদ্ধতি :
google.firebase.database.v1.RealtimeDatabase.Read - অডিট লগ টাইপ : ডেটা অ্যাক্সেস
- অনুমতিসমূহ :
-
firebasedatabase.data.get - DATA_READ
-
- পদ্ধতিটি একটি দীর্ঘস্থায়ী বা স্ট্রিমিং অপারেশন : না।
- এই পদ্ধতির জন্য ফিল্টার করুন :
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Read"
RunOnDisconnect
- পদ্ধতি :
google.firebase.database.v1.RealtimeDatabase.RunOnDisconnect - অডিট লগ টাইপ : ডেটা অ্যাক্সেস
- অনুমতিসমূহ :
-
firebasedatabase.data.update - DATA_WRITE
-
- পদ্ধতিটি একটি দীর্ঘস্থায়ী বা স্ট্রিমিং অপারেশন : না।
- এই পদ্ধতির জন্য ফিল্টার করুন :
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.RunOnDisconnect"
Unlisten
- পদ্ধতি :
google.firebase.database.v1.RealtimeDatabase.Unlisten - অডিট লগ টাইপ : ডেটা অ্যাক্সেস
- অনুমতিসমূহ :
-
firebasedatabase.data.cancel - DATA_READ
-
- পদ্ধতিটি একটি দীর্ঘস্থায়ী বা স্ট্রিমিং অপারেশন : না।
- এই পদ্ধতির জন্য ফিল্টার করুন :
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Unlisten"
Update
- পদ্ধতি :
google.firebase.database.v1.RealtimeDatabase.Update - অডিট লগ টাইপ : ডেটা অ্যাক্সেস
- অনুমতিসমূহ :
-
firebasedatabase.data.get - DATA_WRITE -
firebasedatabase.data.update - DATA_WRITE
-
- পদ্ধতিটি একটি দীর্ঘস্থায়ী বা স্ট্রিমিং অপারেশন : না।
- এই পদ্ধতির জন্য ফিল্টার করুন :
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Update"
Write
- পদ্ধতি :
google.firebase.database.v1.RealtimeDatabase.Write - অডিট লগ টাইপ : ডেটা অ্যাক্সেস
- অনুমতিসমূহ :
-
firebasedatabase.data.update - DATA_WRITE
-
- পদ্ধতিটি একটি দীর্ঘস্থায়ী বা স্ট্রিমিং অপারেশন : না।
- এই পদ্ধতির জন্য ফিল্টার করুন :
protoPayload.methodName="google.firebase.database.v1.RealtimeDatabase.Write"
google.firebase.database.v1beta.RealtimeDatabaseService
নিম্নলিখিত অডিট লগগুলি google.firebase.database.v1beta.RealtimeDatabaseService এর অন্তর্গত মেথডগুলির সাথে সম্পর্কিত।
CreateDatabaseInstance
- পদ্ধতি :
google.firebase.database.v1beta.RealtimeDatabaseService.CreateDatabaseInstance - অডিট লগের ধরণ : অ্যাডমিন কার্যকলাপ
- অনুমতিসমূহ :
-
firebasedatabase.instances.create - ADMIN_WRITE
-
- পদ্ধতিটি একটি দীর্ঘস্থায়ী বা স্ট্রিমিং অপারেশন : না।
- এই পদ্ধতির জন্য ফিল্টার করুন :
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.CreateDatabaseInstance"
DeleteDatabaseInstance
- পদ্ধতি :
google.firebase.database.v1beta.RealtimeDatabaseService.DeleteDatabaseInstance - অডিট লগের ধরণ : অ্যাডমিন কার্যকলাপ
- অনুমতিসমূহ :
-
firebasedatabase.instances.delete - ADMIN_WRITE
-
- পদ্ধতিটি একটি দীর্ঘস্থায়ী বা স্ট্রিমিং অপারেশন : না।
- এই পদ্ধতির জন্য ফিল্টার করুন :
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.DeleteDatabaseInstance"
DisableDatabaseInstance
- পদ্ধতি :
google.firebase.database.v1beta.RealtimeDatabaseService.DisableDatabaseInstance - অডিট লগের ধরণ : অ্যাডমিন কার্যকলাপ
- অনুমতিসমূহ :
-
firebasedatabase.instances.disable - ADMIN_WRITE
-
- পদ্ধতিটি একটি দীর্ঘস্থায়ী বা স্ট্রিমিং অপারেশন : না।
- এই পদ্ধতির জন্য ফিল্টার করুন :
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.DisableDatabaseInstance"
GetDatabaseInstance
- পদ্ধতি :
google.firebase.database.v1beta.RealtimeDatabaseService.GetDatabaseInstance - অডিট লগ টাইপ : ডেটা অ্যাক্সেস
- অনুমতিসমূহ :
-
firebasedatabase.instances.get - ADMIN_READ
-
- পদ্ধতিটি একটি দীর্ঘস্থায়ী বা স্ট্রিমিং অপারেশন : না।
- এই পদ্ধতির জন্য ফিল্টার করুন :
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.GetDatabaseInstance"
ListDatabaseInstances
- পদ্ধতি :
google.firebase.database.v1beta.RealtimeDatabaseService.ListDatabaseInstances - অডিট লগ টাইপ : ডেটা অ্যাক্সেস
- অনুমতিসমূহ :
-
firebasedatabase.instances.list - ADMIN_READ
-
- পদ্ধতিটি একটি দীর্ঘস্থায়ী বা স্ট্রিমিং অপারেশন : না।
- এই পদ্ধতির জন্য ফিল্টার করুন :
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.ListDatabaseInstances"
ReenableDatabaseInstance
- পদ্ধতি :
google.firebase.database.v1beta.RealtimeDatabaseService.ReenableDatabaseInstance - অডিট লগের ধরণ : অ্যাডমিন কার্যকলাপ
- অনুমতিসমূহ :
-
firebasedatabase.instances.reenable - ADMIN_WRITE
-
- পদ্ধতিটি একটি দীর্ঘস্থায়ী বা স্ট্রিমিং অপারেশন : না।
- এই পদ্ধতির জন্য ফিল্টার করুন :
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.ReenableDatabaseInstance"
UndeleteDatabaseInstance
- পদ্ধতি :
google.firebase.database.v1beta.RealtimeDatabaseService.UndeleteDatabaseInstance - অডিট লগের ধরণ : অ্যাডমিন কার্যকলাপ
- অনুমতিসমূহ :
-
firebasedatabase.instances.undelete - ADMIN_WRITE
-
- পদ্ধতিটি একটি দীর্ঘস্থায়ী বা স্ট্রিমিং অপারেশন : না।
- এই পদ্ধতির জন্য ফিল্টার করুন :
protoPayload.methodName="google.firebase.database.v1beta.RealtimeDatabaseService.UndeleteDatabaseInstance"
নিরীক্ষা প্রমাণীকরণ তথ্য
অডিট লগ এন্ট্রিতে সেই আইডেন্টিটি সম্পর্কিত তথ্য থাকে , যে লগ করা অপারেশনটি সম্পাদন করেছে। অনুরোধকারীকে শনাক্ত করতে, AuditLog অবজেক্টের মধ্যে নিম্নলিখিত ফিল্ডগুলি দেখুন:
রিয়েলটাইম সংযোগ স্থাপন করা হচ্ছে। Realtime Database
Connectঅপারেশনগুলো অথেনটিকেশন ডেটা লগ করে না, কারণ Realtime Database সংযোগ স্থাপিত হওয়ার পরেই অথেনটিকেশন সম্পন্ন করে। তাই,Connectকাছে কোনো অথেনটিকেশন তথ্য থাকে না।AuthenticationInfoঅবজেক্টটিতেaudit-pending-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com- এইprincipalEmailএকটি প্লেসহোল্ডার থাকে।গুগল অথেন্টিকেশন। Realtime Database অপারেশন, যা স্ট্যান্ডার্ড গুগল অথেন্টিকেশন ব্যবহার করে, যেমন Firebase Admin SDK থেকে আসা ট্র্যাফিক বা একটি স্ট্যান্ডার্ড OAuth টোকেন দিয়ে অথেন্টিকেট করা REST রিকোয়েস্ট, সেগুলোর একটি
AuthenticationInfoঅবজেক্ট থাকে যাতে প্রকৃত ক্রেডেনশিয়াল ইমেলটি থাকে।Firebase Authentication । যে Realtime Database অপারেশনগুলো Firebase Authentication ব্যবহার করে, সেগুলোর একটি
AuthenticationInfoঅবজেক্ট থাকে, যারprincipalEmailভ্যালুটি হলোaudit-third-party-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com। আপনি যদি কাস্টম JWT তৈরি করে আপনার নিজস্ব অথেনটিকেশন সলিউশন প্রয়োগ করেন, তাহলেও একই নিয়ম প্রযোজ্য।- যদি তৃতীয় পক্ষের প্রমাণীকরণের জন্য একটি JSON ওয়েব টোকেন (JWT) ব্যবহার করা হয়ে থাকে, তাহলে
thirdPartyPrincipalফিল্ডটিতে টোকেনটির হেডার এবং পেলোড অন্তর্ভুক্ত থাকে। উদাহরণস্বরূপ, Firebase Authentication এর মাধ্যমে প্রমাণীকৃত অনুরোধগুলির অডিট লগে সেই অনুরোধের Firebase Authentication টোকেনটি অন্তর্ভুক্ত থাকে।
- যদি তৃতীয় পক্ষের প্রমাণীকরণের জন্য একটি JSON ওয়েব টোকেন (JWT) ব্যবহার করা হয়ে থাকে, তাহলে
কোনো প্রমাণীকরণ নেই। যে Realtime Database অপারেশনে কোনো প্রমাণীকরণ ব্যবহার করা হয় না, সেগুলির একটি
AuthenticationInfoঅবজেক্ট থাকে যারprincipalEmailভ্যালু হলোaudit-no-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com। উন্মুক্ত নিরাপত্তা নিয়ম সহ একটি Realtime Database ইনস্ট্যান্স এই ধরনের অনুরোধ মঞ্জুর করতে পারে। আমরা সকল ব্যবহারকারীকে তাদের ডেটাবেস যথাযথভাবে সুরক্ষিত করার পরামর্শ দিই।লিগ্যাসি সিক্রেটস টোকেন। লিগ্যাসি টোকেন ব্যবহার করে Realtime Database অপারেশনগুলিতে একটি
AuthenticationInfoঅবজেক্ট থাকে, যাতেaudit-secret-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.comএর একটি প্লেসহোল্ডারprincipalEmailথাকে। সিক্রেটস-স্বাক্ষরিত JWT-এর জন্য,thirdPartyPrincipalJWT হেডার এবং পেলোড থাকে।
Firebase Security Rules মূল্যায়ন নিরীক্ষা করুন
ক্লাউড অডিট লগ ব্যবহার করে সেইসব রিকোয়েস্ট শনাক্ত করা যায়, যেগুলো Security Rules পরিবর্তনের দ্বারা সম্ভাব্যভাবে প্রভাবিত হতে পারে।
AuthorizationInfo অবজেক্টে, authorization.permission নিম্নলিখিতগুলির মধ্যে একটি হতে পারে:
-
firebasedatabase.data.get:resourceনির্দিষ্ট করা পাথে পড়ার অনুমতি দেওয়া হয়েছে। -
firebasedatabase.data.update:resourceনির্দিষ্ট করা পাথে লেখার অনুমতি দেওয়া হয়েছে। -
firebasedatabase.data.connect:ConnectএবংDisconnectজন্য প্লেসহোল্ডার। একটি Realtime Database ইনস্ট্যান্সে সংযোগ করার জন্য কোনো অনুমোদনের প্রয়োজন নেই। -
firebasedatabase.data.cancel:UnlistenএবংOnDisconnectCancelজন্য ব্যবহৃত হয়। পূর্বে অনুমোদিত কোনো অপারেশন প্রত্যাহার বা বাতিল করার জন্য কোনো অতিরিক্ত অনুমোদনের প্রয়োজন হয় না।
ক্লাউড অডিট লগ এবং Realtime Database প্রোফাইলারের ফলাফলের মধ্যে সম্পর্ক স্থাপন করুন
আপনি Realtime Database প্রোফাইলার এবং Realtime Database অডিট লগিং-এর সমন্বয়ে Realtime Database উপর গভীর পারফরম্যান্স বিশ্লেষণ করতে পারেন। প্রতিটি টুলেরই নিজস্ব সুবিধা রয়েছে।
| ক্লাউড অডিট লগিং | Realtime Database প্রোফাইলার |
|---|---|
|
|
অডিট লগের বিষয়বস্তু নিচে দেখানো প্রোফাইলার মেট্রিকগুলোর সাথে সামঞ্জস্যপূর্ণ।
| অডিট লগিং অপারেশনের নাম | বিশেষ মানRealtimeDatabaseAuditMetadata | প্রোফাইলার অপারেশনের নাম |
|---|---|---|
| সংযোগ করুন | RequestType হলো REALTIME | একযোগে সংযোগ |
| সংযোগ বিচ্ছিন্ন করুন | RequestType হলো REALTIME | একযোগে-সংযোগ বিচ্ছিন্ন |
| পড়ুন | RequestType হলো REALTIME | রিয়েলটাইম-রিড |
| পড়ুন | RequestType হল REST | বিশ্রাম-পড়ুন |
| লিখুন | RequestType হলো REALTIME | রিয়েলটাইম-রাইট |
| লিখুন | RequestType হল REST | বিশ্রাম-লিখন |
| আপডেট | RequestType হলো REALTIME ।PreconditionType পরীক্ষা করুন। | রিয়েলটাইম-আপডেট রিয়েলটাইম-লেনদেন |
| আপডেট | RequestType হলো REST ।PreconditionType পরীক্ষা করুন। | বিশ্রাম-আপডেট বিশ্রাম-লেনদেন |
| শ্রোতা শুনুন | RequestType হলো REALTIME | শ্রোতা-শুনুন |
| শ্রোতা-অশ্রবণ | RequestType হলো REALTIME | শ্রোতা-অশ্রবণ |
| OnDisconnectPut | RequestType হলো REALTIME | অন-ডিসকানেক্ট-পুট |
| সংযোগ বিচ্ছিন্ন আপডেট | RequestType হলো REALTIME | সংযোগ বিচ্ছিন্ন-আপডেট |
| সংযোগ বিচ্ছিন্ন হলে বাতিল করুন | RequestType হলো REALTIME | সংযোগ বিচ্ছিন্ন হলে বাতিল করুন |
| RunOnDisconnect | RequestType হলো REALTIME | সংযোগ বিচ্ছিন্ন হলে চালু হবে |