ফায়ারবেস রিয়েলটাইম ডেটাবেস অডিট লগিং

এই ডকুমেন্টটি ফায়ারবেস রিয়েলটাইম ডেটাবেসের জন্য অডিট লগিং বর্ণনা করে। Google Cloud পরিষেবাগুলি অডিট লগ তৈরি করে যা আপনার Google Cloud রিসোর্সের মধ্যে প্রশাসনিক এবং অ্যাক্সেস কার্যকলাপ রেকর্ড করে। ক্লাউড অডিট লগ সম্পর্কে আরও তথ্যের জন্য, নিম্নলিখিতটি দেখুন:

মন্তব্য

DATA_READ এবং DATA_WRITE অপারেশনের জন্য protoPayload.metadata এর ক্ষেত্র সম্পর্কে অতিরিক্ত তথ্য রেফারেন্স ডকুমেন্টেশনে পাওয়া যাবে।

পরিষেবার নাম

Firebase রিয়েলটাইম ডাটাবেস অডিট লগগুলি firebasedatabase.googleapis.com পরিষেবার নাম ব্যবহার করে। এই পরিষেবার জন্য ফিল্টার করুন:

    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 অনুমতি প্রয়োজন, সেগুলি ডেটা অ্যাক্সেস অডিট লগ তৈরি করে। যেসব পদ্ধতিতে ADMIN_WRITE এর type প্রপার্টি মান সহ IAM অনুমতি প্রয়োজন, সেগুলি অ্যাডমিন অ্যাক্টিভিটি অডিট লগ তৈরি করে।

নিম্নলিখিত তালিকার API পদ্ধতিগুলি যা (LRO) দ্বারা চিহ্নিত করা হয়েছে তা দীর্ঘ-চলমান ক্রিয়াকলাপ (LRO)। এই পদ্ধতিগুলি সাধারণত দুটি অডিট লগ এন্ট্রি তৈরি করে: একটি যখন অপারেশন শুরু হয় এবং অন্যটি যখন এটি শেষ হয়। আরও তথ্যের জন্য দীর্ঘ-চলমান ক্রিয়াকলাপের জন্য অডিট লগ দেখুন।
অনুমতির ধরণ পদ্ধতি
ADMIN_READ google.firebase.database.v1beta.RealtimeDatabaseService.GetDatabaseInstance
google.firebase.database.v1beta.RealtimeDatabaseService.ListDatabaseInstances
ADMIN_WRITE google.firebase.database.v1beta.RealtimeDatabaseService.CreateDatabaseInstance
google.firebase.database.v1beta.RealtimeDatabaseService.DeleteDatabaseInstance
google.firebase.database.v1beta.RealtimeDatabaseService.DisableDatabaseInstance
google.firebase.database.v1beta.RealtimeDatabaseService.ReenableDatabaseInstance
google.firebase.database.v1beta.RealtimeDatabaseService.UndeleteDatabaseInstance
DATA_READ google.firebase.database.v1.RealtimeDatabase.Connect
google.firebase.database.v1.RealtimeDatabase.Disconnect
google.firebase.database.v1.RealtimeDatabase.Listen
google.firebase.database.v1.RealtimeDatabase.OnDisconnectCancel
google.firebase.database.v1.RealtimeDatabase.Read
google.firebase.database.v1.RealtimeDatabase.Unlisten
DATA_WRITE google.firebase.database.v1.RealtimeDatabase.OnDisconnectPut
google.firebase.database.v1.RealtimeDatabase.OnDisconnectUpdate
google.firebase.database.v1.RealtimeDatabase.RunOnDisconnect
google.firebase.database.v1.RealtimeDatabase.Update
google.firebase.database.v1.RealtimeDatabase.Write

API ইন্টারফেস অডিট লগ

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

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 Firebase Authentication ব্যবহার করে এমন Realtime Database অপারেশনগুলিতে একটি AuthenticationInfo অবজেক্ট থাকে যার মধ্যে audit-third-party-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com এর একটি principalEmail মান থাকে। কাস্টম JWT গুলি মিন্ট করে আপনি যদি নিজের প্রমাণীকরণ সমাধান বাস্তবায়ন করেন তবেও একই কথা প্রযোজ্য।

    • যদি কোনও JSON ওয়েব টোকেন (JWT) তৃতীয় পক্ষের প্রমাণীকরণের জন্য ব্যবহার করা হয়, তাহলে thirdPartyPrincipal ক্ষেত্রে টোকেনের হেডার এবং পেলোড অন্তর্ভুক্ত থাকে। উদাহরণস্বরূপ, Firebase Authentication মাধ্যমে প্রমাণীকরণ করা অনুরোধের অডিট লগগুলিতে সেই অনুরোধের Firebase Authentication টোকেন অন্তর্ভুক্ত থাকে।
  • কোনও প্রমাণীকরণ নেই। Realtime Database অপারেশন যা কোনও প্রমাণীকরণ ব্যবহার করে না, তার একটি AuthenticationInfo অবজেক্ট থাকে যার মধ্যে audit-no-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com এর একটি principalEmail মান থাকে। ওপেন সিকিউরিটি নিয়ম সহ একটি Realtime Database ইনস্ট্যান্স এই ধরনের অনুরোধগুলি মঞ্জুর করতে পারে। আমরা সমস্ত ব্যবহারকারীদের তাদের ডেটাবেসগুলি সঠিকভাবে সুরক্ষিত করার পরামর্শ দিচ্ছি।

  • লিগ্যাসি সিক্রেটস টোকেন। লিগ্যাসি টোকেন ব্যবহার করে Realtime Database অপারেশনগুলিতে একটি AuthenticationInfo অবজেক্ট থাকে যার মধ্যে audit-secret-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com এর একটি প্লেসহোল্ডার principalEmail থাকে। সিক্রেটস-সাইন করা JWT-এর জন্য, thirdPartyPrincipal JWT হেডার এবং পেলোড থাকে।

অডিট 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 শ্রোতা-শুনতে না পারা
অনডিসকানেক্টপুট RequestType REALTIME সংযোগ বিচ্ছিন্ন করার সময়
অনডিসকানেক্টআপডেট RequestType REALTIME সংযোগ বিচ্ছিন্ন-আপডেট
অনডিসকানেক্ট বাতিল করুন RequestType REALTIME সংযোগ বিচ্ছিন্ন-বাতিল করুন
রানঅনডিসকানেক্ট RequestType REALTIME রান-অন-ডিসকানেক্ট