В этом документе описывается ведение журнала аудита для базы данных Firebase Realtime, в том числе, какие методы генерируют журналы аудита, подробные сведения о журналах аудита, которые создает каждый метод, и какие методы не создают журналы аудита, если таковые имеются. Google Cloud создает журналы аудита, в которых фиксируются действия по администрированию и доступу к вашим ресурсам Google Cloud. Дополнительную информацию см. в разделе Обзор журналов облачного аудита .
Примечания
Дополнительная информация о полях в protoPayload.metadata
для операций DATA_READ
и DATA_WRITE
доступна в справочной документации .
Наименование услуги
Журналы аудита базы данных Firebase Realtime используют имя службы 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 |
Журналы аудита для каждого интерфейса API
Информацию о том, как и какие разрешения оцениваются для каждого метода, см. в документации Cloud Identity and Access Management для базы данных Firebase Realtime.
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"
Аудит аутентификационной информации
Записи журнала аудита включают информацию о личности, выполнившей зарегистрированную операцию. Чтобы идентифицировать вызывающую сторону запроса, просмотрите следующие поля в объекте AuditLog:
Установление соединений в реальном времени. Операции
Connect
к базе данных реального времени не регистрируют данные аутентификации, поскольку база данных реального времени проверяет подлинность после установления соединения. ПоэтомуConnect
не имеет информации для аутентификации. ОбъектAuthenticationInfo
содержит заполнительprincipalEmail
audit-pending-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
.Google-аутентификация. Операции с базой данных в реальном времени, использующие стандартную аутентификацию Google, такие как трафик из Firebase Admin SDK или запросы REST , аутентифицированные с помощью стандартного токена OAuth , имеют объект
AuthenticationInfo
, который содержит фактическое электронное письмо с учетными данными.Аутентификация Firebase. Операции с базой данных реального времени, использующие аутентификацию Firebase, имеют объект
AuthenticationInfo
, который содержит значениеprincipalEmail
audit-third-party-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
. То же самое верно, если вы реализуете собственное решение для аутентификации, создавая собственные JWT.- Если для сторонней проверки подлинности использовался веб-токен JSON (JWT), поле
thirdPartyPrincipal
включает заголовок и полезные данные токена. Например, журналы аудита для запросов, аутентифицированных с помощью Firebase Authentication, включают в себя токен Firebase Authentication этого запроса.
- Если для сторонней проверки подлинности использовался веб-токен JSON (JWT), поле
Никакой аутентификации. Операции с базой данных реального времени, не использующие аутентификацию, имеют объект
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
. Отзыв или отмена ранее авторизованной операции не требует дополнительной авторизации.
Сопоставление журналов облачного аудита с результатами профилировщика базы данных в реальном времени.
Вы можете выполнить углубленный анализ производительности базы данных реального времени, используя профилировщик базы данных реального времени в сочетании с ведением журнала аудита базы данных реального времени. У каждого инструмента есть свои сильные стороны.
Ведение журнала облачного аудита | Профилировщик базы данных в реальном времени |
---|---|
|
|
Содержимое журнала аудита соответствует показателям профилировщика, как показано ниже.
Название операции ведения журнала аудита | Особые ценности в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 | на-отключить-поставить |
OnDisconnectUpdate | RequestType — REALTIME | обновление при отключении |
При отключении Отмена | RequestType — REALTIME | при отключении-отмене |
RunOnDisconnect | RequestType — REALTIME | запуск при отключении |