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

এই নথিটি ফায়ারবেস রিয়েলটাইম ডেটাবেসের জন্য অডিট লগিং বর্ণনা করে। 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 । আপনি যখন একটি পদ্ধতিতে কল করেন, তখন ফায়ারবেস রিয়েলটাইম ডেটাবেস একটি অডিট লগ তৈরি করে যার বিভাগটি পদ্ধতিটি সম্পাদন করার জন্য প্রয়োজনীয় অনুমতির type বৈশিষ্ট্যের উপর নির্ভর করে। যে পদ্ধতিগুলির জন্য DATA_READ , DATA_WRITE , বা ADMIN_READ এর type সম্পত্তি মান সহ IAM অনুমতির প্রয়োজন হয় সেগুলি ডেটা অ্যাক্সেস অডিট লগ তৈরি করে৷ যে পদ্ধতিগুলির জন্য ADMIN_WRITE এর type সম্পত্তি মান সহ একটি IAM অনুমতি প্রয়োজন সেগুলি প্রশাসনিক কার্যকলাপ নিরীক্ষা লগ তৈরি করে৷

অনুমতির ধরন পদ্ধতি
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 ইন্টারফেস অডিট লগ

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

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"

অডিট প্রমাণীকরণ তথ্য

অডিট লগ এন্ট্রিতে সেই পরিচয় সম্পর্কে তথ্য অন্তর্ভুক্ত থাকে যা লগ করা অপারেশনটি করেছে। একটি অনুরোধ কলার সনাক্ত করতে, অডিটলগ অবজেক্টের মধ্যে নিম্নলিখিত ক্ষেত্রগুলি দেখুন:

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

  • গুগল প্রমাণীকরণ। Realtime Database ক্রিয়াকলাপগুলি যেগুলি স্ট্যান্ডার্ড Google প্রমাণীকরণ ব্যবহার করে, যেমন 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 মান রয়েছে। আপনি যদি কাস্টম JWTs মিন্ট করে আপনার নিজস্ব প্রমাণীকরণ সমাধান বাস্তবায়ন করেন তবে একই কথা সত্য।

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

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

অডিট Firebase Security Rules মূল্যায়ন

ক্লাউড অডিট লগগুলি এমন অনুরোধগুলি সনাক্ত করতে ব্যবহার করা যেতে পারে যা 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 concurrent- disconnect
পড়ুন RequestType হল REALTIME বাস্তব সময় পড়া
পড়ুন RequestType হল REST বিশ্রাম-পড়ুন
লিখুন RequestType হল REALTIME বাস্তব সময় লিখুন
লিখুন RequestType হল REST বিশ্রাম লিখুন
আপডেট RequestType হল REALTIME
PreconditionType চেক করুন।
রিয়েলটাইম-আপডেট
রিয়েলটাইম-লেনদেন
আপডেট RequestType হল REST .
PreconditionType চেক করুন।
বিশ্রাম-আপডেট
বিশ্রাম-লেনদেন
শ্রোতা শুনুন RequestType হল REALTIME শ্রোতা-শ্রোতা
শ্রোতা শুনুন RequestType হল REALTIME শ্রোতা-অশ্রুতি
অনডিসকানেক্টপুট RequestType REALTIME অন-সংযোগ বিচ্ছিন্ন করা
OnDisconnectUpdate RequestType REALTIME অন-সংযোগ-আপডেট
অনডিসকানেক্ট বাতিল করুন RequestType হল REALTIME অন-সংযোগ বিচ্ছিন্ন-বাতিল
RunOnDisconnect RequestType হল REALTIME রান অন-সংযোগ বিচ্ছিন্ন