Firebase रीयल टाइम डेटाबेस के ऑडिट लॉगिंग

इस दस्तावेज़ में Firebase रीयल टाइम डेटाबेस के लिए ऑडिट लॉगिंग के बारे में बताया गया है. इसमें यह भी बताया गया है कि किन तरीकों का इस्तेमाल किया जा सकता है ऑडिट लॉग जनरेट करना, हर तरीके से बनने वाले ऑडिट लॉग के बारे में जानकारी, और इनमें से किसी भी तरीके से ऑडिट लॉग नहीं बनाए जाते. Google Cloud ऑडिट लॉग, जो आपके Google खाते में एडमिन और ऐक्सेस गतिविधियों को रिकॉर्ड करते हैं, Google Cloud के संसाधन. ज़्यादा जानकारी के लिए, यह देखें Cloud ऑडिट लॉग की खास जानकारी.

नोट

DATA_READ और DATA_WRITEऑपरेशन के लिए protoPayload.metadata में फ़ील्ड के बारे में ज़्यादा जानकारी पहचान दस्तावेज़ में उपलब्ध है.

सेवा का नाम

Firebase रीयल टाइम डेटाबेस के ऑडिट लॉग, firebasedatabase.googleapis.com सेवा के नाम का इस्तेमाल करते हैं.

अनुमति के टाइप के हिसाब से तरीके

DATA_READ, DATA_WRITE, और इनकी जांच करने के तरीके ADMIN_READ अनुमतियां इस कैटगरी में लॉग जनरेट करती हैं डेटा ऐक्सेस ऑडिट लॉग. ADMIN_WRITE अनुमतियों की जांच करने वाले तरीकों से लॉग जनरेट होते हैं के तौर पर कैटगरी में बांटा गया एडमिन की गतिविधि के ऑडिट लॉग.

अनुमति किस तरह की है तरीके
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

हर एपीआई इंटरफ़ेस के लिए ऑडिट लॉग

हर तरीके के लिए, अनुमतियों का आकलन कैसे और किस तरह किया जाता है, इस बारे में जानने के लिए, Firebase रीयल टाइम डेटाबेस के लिए, Cloud Identity और ऐक्सेस मैनेजमेंट दस्तावेज़ देखें.

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_READ
    • 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.get - DATA_READ
    • firebasedatabase.data.get - DATA_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"

ऑडिट की पुष्टि करने की जानकारी

ऑडिट लॉग की एंट्री में जानकारी शामिल होती है लॉग की गई कार्रवाई को पूरा करने वाली पहचान के बारे में. अनुरोध की पहचान करने के लिए कॉलर के लिए, ऑडिटLog ऑब्जेक्ट में ये फ़ील्ड देखें:

  • रीयल टाइम कनेक्शन बनाना. रीयलटाइम डेटाबेस Connect ऑपरेशन से ये होते हैं प्रमाणीकरण डेटा लॉग नहीं करता क्योंकि रीयलटाइम डेटाबेस कनेक्शन स्थापित. इसलिए, Connect में पुष्टि करने से जुड़ी कोई जानकारी नहीं है. AuthenticationInfo ऑब्जेक्ट में प्लेसहोल्डर principalEmail है audit-pending-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com.

  • Google की पुष्टि. Google के स्टैंडर्ड वर्शन का इस्तेमाल करने वाले रीयल टाइम डेटाबेस ऑपरेशन पुष्टि करना, जैसे कि Firebase एडमिन SDK टूल से मिला ट्रैफ़िक या REST के अनुरोध मानक OAuth टोकन से पुष्टि की गई हो, इसमें ऐसा AuthenticationInfo ऑब्जेक्ट है जिसमें असल क्रेडेंशियल मौजूद हैं ईमेल.

  • Firebase से पुष्टि करना. Firebase से पुष्टि करने की सुविधा का इस्तेमाल करने वाले रीयल टाइम डेटाबेस ऑपरेशन में एक AuthenticationInfo ऑब्जेक्ट है, जिसमेंprincipalEmail audit-third-party-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com. अगर आप मिंट करके अपने पुष्टि करने वाले समाधान लागू करते हैं, तो भी ऐसा ही होगा कस्टम JWTs.

    • अगर तीसरे पक्ष की पुष्टि करने के लिए किसी JSON वेब टोकन (JWT) का इस्तेमाल किया गया था, तो thirdPartyPrincipal फ़ील्ड में टोकन का हेडर और पेलोड शामिल होता है. इसके लिए उदाहरण के लिए, Firebase से पुष्टि करने की सुविधा की मदद से पुष्टि किए गए अनुरोधों के लिए ऑडिट लॉग उस अनुरोध का Firebase प्रमाणीकरण टोकन शामिल करें.
  • कोई पुष्टि नहीं. ऐसी रीयलटाइम डेटाबेस ऑपरेशन जो किसी का इस्तेमाल नहीं करतीं पुष्टि करने के लिए एक AuthenticationInfo ऑब्जेक्ट है, जिसमें principalEmail का मान audit-no-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com खुले सुरक्षा नियमों वाला रीयल टाइम डेटाबेस इंस्टेंस, इस तरह के अनुरोध दे सकता है. बुध सभी उपयोगकर्ताओं को अपना डेटाबेस सही तरीके से सुरक्षित रखने की सलाह दी जाती है.

  • लेगसी सीक्रेट टोकन. लेगसी टोकन का इस्तेमाल करने वाले रीयल टाइम डेटाबेस ऑपरेशन इसमें AuthenticationInfo ऑब्जेक्ट है, जिसमें प्लेसहोल्डर है में से principalEmail audit-secret-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com. सीक्रेट साइन किए गए JWT के लिए, thirdPartyPrincipal में JWT हेडर होते हैं और पेलोड.

Firebase के सुरक्षा नियमों के आकलन ऑडिट करें

क्लाउड ऑडिट लॉग का इस्तेमाल, उन अनुरोधों की पहचान करने के लिए किया जा सकता है जो नियमों में हुए बदलावों का असर पड़ा है.

AuthorizationInfo ऑब्जेक्ट में, authorization.permission इनमें से कोई एक हो सकता है:

  • firebasedatabase.data.get: यहां दिए गए पाथ पर पढ़ने का ऐक्सेस दिया गया है resource.
  • firebasedatabase.data.update: इसमें बताए गए पाथ पर दिया गया ऐक्सेस लिखें resource.
  • firebasedatabase.data.connect: Connect और Disconnect के लिए प्लेसहोल्डर. रीयलटाइम डेटाबेस इंस्टेंस से कनेक्ट करने के लिए अनुमति लेने की ज़रूरत नहीं है.
  • firebasedatabase.data.cancel: Unlisten और OnDisconnectCancel के लिए इस्तेमाल किया जाता है. पहले से अनुमति वाली कार्रवाई को रद्द या रद्द करने के लिए, अनुमति.

क्लाउड ऑडिट लॉग को रीयल टाइम डेटाबेस प्रोफ़ाइलर के नतीजों से जोड़ें

रीयलटाइम डेटाबेस की परफ़ॉर्मेंस का बारीकी से विश्लेषण करने के लिए, रीयल टाइम डेटाबेस प्रोफ़ाइलर के साथ रीयलटाइम डेटाबेस के ऑडिट लॉगिंग. हर टूल की अपनी-अपनी खूबियां हैं.

Cloud Audit Logging रीयलटाइम डेटाबेस प्रोफ़ाइलर
  • ऑडिट में डेटाबेस का ऐक्सेस
  • यह सभी अनुरोधों को लगातार कैप्चर करता है
  • रेट्रोस्पेक्टिव क्वेरी की अनुमति देता है
  • इसमें पुष्टि करने वाले टोकन की पूरी जानकारी शामिल है
  • यह इस्तेमाल का खर्च बढ़ाता है
  • इसका इस्तेमाल परफ़ॉर्मेंस का विश्लेषण करने के लिए किया जाता है
  • यह हॉटस्पॉट की पहचान करने और परफ़ॉर्मेंस को बेहतर बनाने के लिए मददगार टूल उपलब्ध कराता है ऑप्टिमाइज़ेशन
  • लिसनर-ब्रॉडकास्ट, को मेज़र किया जा सकता है जो डेटा के संभावित वॉल्यूम की वजह से, ऑडिट लॉग में उपलब्ध नहीं है
  • कम स्टोरेज और रीयल टाइम. इस वजह से, यह लाइव लोड टेस्टिंग के लिए बेहतर है. लेखा परीक्षण लॉग एंट्री दिखने में कुछ मिनट लग सकते हैं.

ऑडिट लॉग का कॉन्टेंट, प्रोफ़ाइलर मेट्रिक के हिसाब से होता है. जैसा कि नीचे दिखाया गया है.

ऑडिट लॉगिंग कार्रवाई का नाम
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 है रन-ऑन-डिसकनेक्ट