इस दस्तावेज़ में Firebase रीयल टाइम डेटाबेस के लिए ऑडिट लॉगिंग के बारे में बताया गया है. Google Cloud सेवाएं ऐसे ऑडिट लॉग जनरेट करें जो आपके Google Cloud संसाधनों में एडमिन और गतिविधियों को ऐक्सेस करते हैं. क्लाउड ऑडिट लॉग के बारे में ज़्यादा जानकारी के लिए, यह जानकारी देखें:
- ऑडिट लॉग के टाइप
- ऑडिट लॉग एंट्री का स्ट्रक्चर
- ऑडिट लॉग को स्टोर और रूटिंग करना
- Cloud Logging की कीमत की खास जानकारी
- डेटा ऐक्सेस के ऑडिट लॉग चालू करना
नोट
DATA_READ
और DATA_WRITE
ऑपरेशन के लिए protoPayload.metadata
में फ़ील्ड के बारे में ज़्यादा जानकारी पहचान दस्तावेज़ में उपलब्ध है.
सेवा का नाम
Firebase रीयल टाइम डेटाबेस के ऑडिट लॉग, firebasedatabase.googleapis.com
सेवा के नाम का इस्तेमाल करते हैं.
इस सेवा के लिए फ़िल्टर करें:
protoPayload.serviceName="firebasedatabase.googleapis.com"
अनुमति के टाइप के हिसाब से तरीके
हर आईएएम अनुमति की एक type
प्रॉपर्टी होती है, जिसकी वैल्यू एक enum होती है
जो इन चार वैल्यू में से कोई एक हो सकती है: ADMIN_READ
, ADMIN_WRITE
,
DATA_READ
या DATA_WRITE
. किसी मेथड को कॉल करने पर,
Firebase रीयल टाइम डेटाबेस एक ऑडिट लॉग जनरेट करता है. इसकी कैटगरी,
मेथड को लागू करने के लिए ज़रूरी अनुमति की type
प्रॉपर्टी पर निर्भर करती है.
ऐसे तरीके जिनके लिए type
प्रॉपर्टी वैल्यू के साथ IAM अनुमति की ज़रूरत होती है
of DATA_READ
, DATA_WRITE
, या ADMIN_READ
की आय
डेटा ऐक्सेस ऑडिट लॉग.
जिन तरीकों के लिए ADMIN_WRITE
की type
प्रॉपर्टी वैल्यू के साथ आईएएम की अनुमति की ज़रूरत होती है वे एडमिन गतिविधि के ऑडिट लॉग जनरेट करते हैं.
अनुमति किस तरह की है | तरीके |
---|---|
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_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
ऑब्जेक्ट में प्लेसहोल्डरprincipalEmail
हैaudit-pending-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
.Google की पुष्टि. Realtime Database कार्रवाइयां जो मानक Google का इस्तेमाल करती हैं पुष्टि करने की सुविधा, जैसे कि Firebase Admin SDK से आने वाला ट्रैफ़िक या REST के अनुरोध स्टैंडर्ड OAuth टोकन से पुष्टि की गई हो, इसमें एक
AuthenticationInfo
ऑब्जेक्ट है, जिसमें असल क्रेडेंशियल हैं ईमेल.Firebase Authentication. Firebase Authentication का इस्तेमाल करने वाली Realtime Database कार्रवाइयों में एक
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
ऑब्जेक्ट होता है, जिसमें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 के आकलन को ऑडिट करें
क्लाउड ऑडिट लॉग का इस्तेमाल, उन अनुरोधों की पहचान करने के लिए किया जा सकता है जो 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 ऑडिट लॉगिंग. हर टूल की अपनी-अपनी खूबियां हैं.
Cloud Audit Logging | Realtime Database प्रोफ़ाइलर |
---|---|
|
|
ऑडिट लॉग का कॉन्टेंट, प्रोफ़ाइलर मेट्रिक के हिसाब से होता है. जैसा कि नीचे दिखाया गया है.
ऑडिट लॉगिंग ऑपरेशन का नाम | RealtimeDatabaseAuditMetadata में विशेष मान |
प्रोफ़ाइलर की कार्रवाई का नाम |
---|---|---|
कनेक्ट करें | RequestType REALTIME है |
एक ही समय पर कनेक्ट करने की सुविधा |
डिसकनेक्ट करें | RequestType REALTIME है |
एक साथ कई डिवाइसों को डिसकनेक्ट करना |
पढ़ें | RequestType REALTIME है |
realtime-read |
पढ़ें | RequestType REST है |
rest-read |
लिखें | RequestType REALTIME है |
realtime-write |
लिखें | RequestType REST है |
rest-write |
अपडेट करें | RequestType REALTIME है.
सही का निशान लगाएं PreconditionType . |
realtime-update realtime-transaction |
अपडेट करें | RequestType REST है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है PreconditionType देखें. |
बाकी-अपडेट बाकी लेन-देन |
ListenerListen | RequestType REALTIME है |
लिसनर-लिसन |
लिसनर अनलिस्टन | RequestType REALTIME है |
listener-unlisten |
OnDisconnectPut | RequestType REALTIME है |
ऑन-डिसकनेक्ट-पुट |
OnDisconnectUpdate | RequestType REALTIME है |
on-disconnect-update |
ऑनडिसकनेक्ट रद्द करें | RequestType REALTIME है |
on-disconnect-cancel |
RunOnDisconnect | RequestType REALTIME है |
run-on-disconnect |