На этой странице описаны журналы аудита, созданные Firebase как часть журналов аудита Cloud .
Обзор
Службы Firebase ведут журналы аудита, чтобы помочь вам ответить на вопросы: «Кто что сделал, где и когда?». Это журналы облачного аудита, предоставляемые как часть проекта Google Cloud, связанного с вашим проектом Firebase .
Каждый ваш проект Firebase содержит только журналы аудита для ресурсов, которые находятся непосредственно в проекте.
Общий обзор журналов облачного аудита см. в разделе Обзор журналов облачного аудита . Для более глубокого понимания формата журнала аудита см. раздел Общие сведения о журналах аудита .
Доступные журналы аудита
Для базы данных Firebase Realtime доступны следующие типы журналов аудита:
Журналы аудита действий администратора
Включает операции административной записи, которые записывают метаданные или информацию о конфигурации.
Вы не можете отключить журналы аудита действий администратора.
Журналы аудита доступа к данным
Включает операции «административного чтения», которые считывают метаданные или информацию о конфигурации. Также включает операции «чтение данных» и «запись данных», которые считывают или записывают предоставленные пользователем данные.
Чтобы получать журналы аудита доступа к данным, вы должны явно включить их.
Более полные описания типов журналов аудита см. в разделе Типы журналов аудита .
Проверенные операции
Ниже приведены сводные данные о том, какие операции API соответствуют каждому типу журнала аудита в базе данных Firebase Realtime:
Категория журналов аудита | Операции базы данных Firebase в реальном времени |
---|---|
Журналы аудита действий администратора (ADMIN_WRITE) |
|
Журналы аудита доступа к данным (ADMIN_READ) |
|
Журналы аудита доступа к данным (DATA_READ или DATA_WRITE) |
|
Журналы аудита доступа к данным (DATA_READ) |
|
Журналы аудита доступа к данным (DATA_WRITE) |
|
Аудит аутентификационных данных
Записи журнала аудита включают информацию об удостоверении, выполнившем зарегистрированную операцию. Чтобы идентифицировать инициатора запроса, см. следующие поля в объекте 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
, который содержит значение PrincipleEmailprincipalEmail
audit-third-party-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
. То же самое верно, если вы реализуете собственное решение для аутентификации, создавая собственные JWT.- Если для сторонней проверки подлинности использовался веб-токен JSON (JWT), поле
thirdPartyPrincipal
включает заголовок токена и полезные данные. Например, журналы аудита для запросов, аутентифицированных с помощью Firebase Authentication, включают токен Firebase Authentication этого запроса.
- Если для сторонней проверки подлинности использовался веб-токен JSON (JWT), поле
Нет аутентификации. Операции с базой данных реального времени, не использующие аутентификацию, имеют объект
AuthenticationInfo
, который содержит значениеaudit-no-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
principalEmail
Экземпляр базы данных реального времени с открытыми правилами безопасности может разрешать такие запросы. . Мы рекомендуем всем пользователям должным образом защищать свои базы данных.Жетоны устаревших секретов. Операции с базой данных в реальном времени с использованием устаревших токенов имеют объект
AuthenticationInfo
, который содержит замещающийaudit-secret-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com
principalEmail
Для JWT, подписанного секретами,thirdPartyPrincipal
содержит заголовки JWT и полезные данные.
Аудит оценок правил безопасности Firebase
Журналы Cloud Audit можно использовать для идентификации запросов, на которые могут повлиять изменения правил.
В объекте AuthorizationInfo authorization.permission
может быть одним из:
-
firebasedatabase.data.get
: доступ на чтение предоставляется по пути, указанному вresource
. -
firebasedatabase.data.update
: Доступ для записи предоставляется по пути, указанному вresource
. -
firebasedatabase.data.connect
: заполнитель дляConnect
иDisconnect
. Для подключения к экземпляру базы данных реального времени авторизация не требуется. -
firebasedatabase.data.cancel
: используется дляUnlisten
иOnDisconnectCancel
. Отзыв или отмена ранее авторизованной операции не требует дополнительной авторизации.
Сопоставьте журналы Cloud Audit с результатами профилировщика базы данных в реальном времени.
Вы можете выполнить углубленный анализ производительности базы данных реального времени, используя профилировщик базы данных реального времени в сочетании с ведением журнала аудита базы данных реального времени. У каждого инструмента есть свои сильные стороны.
Ведение журнала облачного аудита | Профилировщик базы данных в реальном времени |
---|---|
|
|
Содержимое журнала аудита соответствует метрикам профилировщика, как показано ниже.
Имя операции ведения журнала аудита | Особые значения в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 | на-отключить-поставить |
OnDisconnectUpdate | RequestType в REALTIME | обновление при отключении |
OnDisconnectCancel | RequestType в REALTIME | при отключении отмена |
RunOnDisconnect | RequestType в REALTIME | работа при отключении |
Формат журнала аудита
Записи журнала аудита включают следующие объекты:
Сама запись журнала, которая является объектом типа
LogEntry
. Полезные поля включают следующее:- Имя
logName
содержит идентификатор ресурса и тип журнала аудита. -
resource
содержит цель проверяемой операции. -
timestamp
содержит время проверяемой операции. -
protoPayload
содержит проверенную информацию.
- Имя
Данные журнала аудита, которые представляют собой объект
AuditLog
, хранящийся в полеprotoPayload
записи журнала.Необязательная информация аудита для конкретной службы, которая является объектом для конкретной службы. Для более старых интеграций этот объект хранится в поле
serviceData
объектаAuditLog
; более новые интеграции используют полеmetadata
.
Другие поля в этих объектах и способы их интерпретации см. в статье Общие сведения о журналах аудита .
Дополнительная информация о полях вprotoPayload.metadata
для DATA_READ
и DATA_WRITE
доступна в справочной документации .Имя журнала
Имена ресурсов журналов аудита облака указывают на проект Firebase или другой объект Google Cloud, которому принадлежат журналы аудита, а также на то, содержит ли журнал данные аудита действий администратора, доступа к данным, отказа в политике или системных событий. Например, ниже показаны имена журналов аудита действий администратора на уровне проекта и журналов аудита доступа к данным организации. Переменные обозначают идентификаторы проекта и организации Firebase.
projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity
organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fdata_access
Наименование услуги
В журналах аудита базы данных Firebase Realtime используется имя службы firebasedatabase.googleapis.com
.
Полный список всех имен служб Cloud Logging API и соответствующих типов отслеживаемых ресурсов см. в разделе Сопоставление служб с ресурсами .
Типы ресурсов
Журналы аудита базы данных Firebase Realtime используют тип ресурса audited_resource
для всех журналов аудита.
Список всех отслеживаемых типов ресурсов Cloud Logging и описательную информацию см. в разделе Отслеживаемые типы ресурсов .
Включить ведение журнала аудита
Журналы аудита действий администратора всегда включены; вы не можете отключить их.
Журналы аудита доступа к данным отключены по умолчанию и не записываются, если они явно не включены (исключением являются журналы аудита доступа к данным для BigQuery, которые нельзя отключить).
Журналы аудита доступа к данным для базы данных реального времени переключаются путем проверкиDATA_READ
и/или DATA_WRITE
в консоли GCP. Между включением/отключением журналов в консоли GCP и началом/прекращением доставки журналов может быть задержка до одного часа.Инструкции по включению некоторых или всех журналов аудита доступа к данным см. в разделе Настройка журналов доступа к данным .
Разрешения и роли
Разрешения и роли Cloud IAM определяют вашу возможность доступа к данным журналов аудита в ресурсах Google Cloud.
Принимая решение о том, какие разрешения и роли для ведения журналов применимы к вашему варианту использования, учитывайте следующее:
Роль просмотра журналов (
roles/logging.viewer
) предоставляет вам доступ только для чтения к журналам аудита активности администратора, отказа в политике и системных событий. Если у вас есть только эта роль, вы не можете просматривать журналы аудита доступа к данным, находящиеся в_Default
.Роль просмотра частных журналов
(roles/logging.privateLogViewer
) включает в себя разрешения, содержащиеся вroles/logging.viewer
, а также возможность читать журналы аудита доступа к данным в_Default
.Обратите внимание, что если эти частные журналы хранятся в определенных пользователем корзинах, то любой пользователь, у которого есть разрешения на чтение журналов в этих корзинах, может читать частные журналы. Дополнительные сведения о сегментах журналов см. в разделе Обзор маршрутизации и хранилища .
Дополнительные сведения о разрешениях и ролях Cloud IAM, применимых к данным журналов аудита, см. в разделе Управление доступом .
Просмотр журналов
Чтобы найти и просмотреть журналы аудита, вам необходимо знать идентификатор проекта Firebase, папки или организации, для которой вы хотите просмотреть информацию журнала аудита. Вы можете дополнительно указать другие индексированные поля LogEntry
, такие как resource.type
; подробнее см. в разделе Быстрый поиск записей в журнале .
Ниже приведены имена журналов аудита. они включают переменные для идентификаторов проекта, папки или организации Firebase:
projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fpolicy folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Factivity folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fdata_access folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fsystem_event folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fpolicy organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fdata_access organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fsystem_event organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fpolicy
Вы можете просматривать журналы аудита в Cloud Logging с помощью консоли GCP, инструмента командной строки gcloud
или Logging API.
Приставка
Вы можете использовать обозреватель журналов в консоли GCP, чтобы получить записи журнала аудита для вашего проекта, папки или организации Firebase:
В консоли GCP перейдите на страницу Ведение журнала > Обозреватель журналов .
На странице Logs Explorer выберите существующий проект Firebase, папку или организацию.
На панели построителя запросов выполните следующие действия.
В поле Тип ресурса выберите ресурс Google Cloud, журналы аудита которого вы хотите просмотреть.
В поле Имя журнала выберите тип журнала аудита, который вы хотите просмотреть:
- Для журналов аудита активности администратора выберите активность .
- Для журналов аудита доступа к данным выберите data_access .
- Для журналов аудита системных событий выберите system_event .
- Для журналов аудита отклоненных политик выберите policy .
Если вы не видите эти параметры, значит, в проекте, папке или организации Firebase нет журналов аудита такого типа.
Дополнительные сведения о запросах с помощью обозревателя журналов см. в разделе Создание запросов журнала .
gcloud
Инструмент командной строки gcloud
предоставляет интерфейс командной строки для API ведения журналов в облаке. Укажите действительный PROJECT_ID
, FOLDER_ID
или ORGANIZATION_ID
в каждом из имен журналов.
Чтобы прочитать записи журнала аудита на уровне проекта Firebase, выполните следующую команду:
gcloud logging read "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" --project=PROJECT_ID
Чтобы прочитать записи журнала аудита на уровне папки, выполните следующую команду:
gcloud logging read "logName : folders/FOLDER_ID/logs/cloudaudit.googleapis.com" --folder=FOLDER_ID
Чтобы прочитать записи журнала аудита на уровне организации, выполните следующую команду:
gcloud logging read "logName : organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com" --organization=ORGANIZATION_ID
Дополнительные сведения об использовании инструмента gcloud
см. в разделе Чтение записей журнала .
API
При построении запросов замените переменные допустимыми значениями, замените соответствующие имена или идентификаторы журналов аудита на уровне проекта, папки или организации, как указано в именах журналов аудита. Например, если ваш запрос включает PROJECT_ID , то указанный вами идентификатор проекта должен относиться к текущему выбранному проекту Firebase.
Чтобы использовать Logging API для просмотра записей журнала аудита, выполните следующие действия:
Перейдите к разделу Попробуйте этот API в документации по методу
entries.list
.Поместите следующее в часть тела запроса формы « Попробуйте этот API ». Щелчок по этой предварительно заполненной форме автоматически заполняет тело запроса, но вам необходимо указать действительный
PROJECT_ID
в каждом из имен журналов.{ "resourceNames": [ "projects/PROJECT_ID" ], "pageSize": 5, "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" }
Нажмите «Выполнить» .
Дополнительные сведения о запросах см. в разделе Язык запросов ведения журналов.
Пример записи журнала аудита и способы поиска в нем самой важной информации см. в разделе Образец записи журнала аудита .
Журналы аудита маршрутизации
Вы можете направлять журналы аудита в поддерживаемые места назначения так же, как вы можете направлять другие типы журналов. Вот несколько причин, по которым вы можете захотеть перенаправить журналы аудита:
Чтобы хранить журналы аудита в течение более длительного периода времени или использовать более мощные возможности поиска, вы можете направить копии журналов аудита в Google Cloud Storage, BigQuery или Google Cloud Pub/Sub. Используя Cloud Pub/Sub, вы можете направлять данные к другим приложениям, другим репозиториям и третьим сторонам.
Чтобы управлять журналами аудита во всей организации, вы можете создать агрегированные приемники , которые могут направлять журналы из любого или всех проектов Firebase в организации.
- Если ваши включенные журналы аудита доступа к данным выталкивают ваши проекты Firebase за ваши выделенные журналы, вы можете создать приемники, которые исключают журналы аудита доступа к данным из ведения журнала.
Инструкции по журналам маршрутизации см. в разделе Настройка приемников .
Цены
Журналы аудита действий администратора и журналы аудита системных событий предоставляются бесплатно.
Журналы аудита доступа к данным и журналы аудита отказа в политике являются платными.
Дополнительные сведения о ценах на ведение журнала в облаке см. в разделе Цены на набор операций Google Cloud: ведение журнала в облаке .