Ведение журнала аудита для хостинга приложений Firebase

На этой странице описаны журналы аудита, создаваемые Firebase в рамках Cloud Audit Logs .

Обзор

Сервисы Firebase записывают журналы аудита, которые помогут вам ответить на вопросы: «Кто что сделал, где и когда?». Это облачные журналы аудита, предоставляемые в рамках проекта Google Cloud подключенного к вашему проекту Firebase .

В каждом из ваших проектов Firebase содержатся только журналы аудита для ресурсов, которые находятся непосредственно внутри проекта.

Общий обзор журналов аудита в облаке см. в разделе «Обзор журналов аудита в облаке ». Для более подробного понимания формата журналов аудита см. раздел «Понимание журналов аудита» .

Доступные журналы аудита

Для Firebase App Hosting доступны следующие типы журналов аудита:

  • Журналы аудита активности администратора

    Включает операции "административной записи", которые записывают метаданные или информацию о конфигурации.

    Отключить журналы аудита активности администратора невозможно.

  • Журналы аудита доступа к данным

    Включает операции «чтение администратором», которые считывают метаданные или информацию о конфигурации. Также включает операции «чтение данных» и «запись данных», которые считывают или записывают предоставленные пользователем данные.

    Для получения журналов аудита доступа к данным необходимо явно включить эту функцию.

Более подробное описание типов журналов аудита см. в разделе «Типы журналов аудита» .

Проверенные операции

Ниже приведено краткое описание того, какие операции API соответствуют каждому типу журнала аудита в Firebase App Hosting:

Тип разрешения Методы
ADMIN_READ google.firebase.apphosting.v1alpha.AppHosting.GetBackend
google.firebase.apphosting.v1alpha.AppHosting.GetBuild
google.firebase.apphosting.v1alpha.AppHosting.GetRollout
google.firebase.apphosting.v1alpha.AppHosting.GetTraffic
google.firebase.apphosting.v1alpha.AppHosting.ListBackends
google.firebase.apphosting.v1alpha.AppHosting.ListBuilds
google.firebase.apphosting.v1alpha.AppHosting.ListDomains
google.firebase.apphosting.v1alpha.AppHosting.ListRollouts
google.firebase.apphosting.v1beta.AppHosting.GetBackend
google.firebase.apphosting.v1beta.AppHosting.GetBuild
google.firebase.apphosting.v1beta.AppHosting.GetDomain
google.firebase.apphosting.v1beta.AppHosting.GetTraffic
google.firebase.apphosting.v1beta.AppHosting.ListBackends
google.firebase.apphosting.v1beta.AppHosting.ListBuilds
google.firebase.apphosting.v1beta.AppHosting.ListDomains
google.firebase.apphosting.v1beta.AppHosting.ListRollouts
ADMIN_WRITE google.firebase.apphosting.v1alpha.AppHosting.CreateBackend
google.firebase.apphosting.v1alpha.AppHosting.CreateBuild
google.firebase.apphosting.v1alpha.AppHosting.CreateDomain
google.firebase.apphosting.v1alpha.AppHosting.CreateRollout
google.firebase.apphosting.v1alpha.AppHosting.DeleteBackend
google.firebase.apphosting.v1alpha.AppHosting.DeleteBuild
google.firebase.apphosting.v1alpha.AppHosting.DeleteDomain
google.firebase.apphosting.v1alpha.AppHosting.UpdateBuild
google.firebase.apphosting.v1alpha.AppHosting.UpdateTraffic
google.firebase.apphosting.v1beta.AppHosting.CreateBackend
google.firebase.apphosting.v1beta.AppHosting.CreateBuild
google.firebase.apphosting.v1beta.AppHosting.CreateDomain
google.firebase.apphosting.v1beta.AppHosting.CreateRollout
google.firebase.apphosting.v1beta.AppHosting.DeleteBackend
google.firebase.apphosting.v1beta.AppHosting.DeleteBuild
google.firebase.apphosting.v1beta.AppHosting.DeleteDomain
google.firebase.apphosting.v1beta.AppHosting.UpdateBackend
google.firebase.apphosting.v1beta.AppHosting.UpdateDomain
google.firebase.apphosting.v1beta.AppHosting.UpdateTraffic

формат журнала аудита

В записи журнала аудита включены следующие объекты:

  • Сама запись в журнале представляет собой объект типа LogEntry . Полезные поля включают следующее:

    • logName содержит идентификатор ресурса и тип журнала аудита.
    • Данный resource содержит информацию о цели проверяемой операции.
    • timestamp содержит время проведения проверяемой операции.
    • В protoPayload содержится проверенная информация.
  • Данные аудита, представляющие собой объект AuditLog , хранящийся в поле protoPayload записи журнала.

  • Дополнительная информация для аудита, специфичная для конкретной службы, представляет собой объект, специфичный для данной службы. В более старых интеграциях этот объект хранится в поле serviceData объекта AuditLog ; в более новых интеграциях используется поле metadata .

Для получения информации о других полях этих объектов и способах их интерпретации см. раздел «Понимание журналов аудита» .

Имя журнала

Названия ресурсов Cloud Audit Logs указывают на проект Firebase или другую сущность Google Cloud , которой принадлежат журналы аудита, а также на то, содержит ли журнал данные аудита об активности администратора, доступе к данным, отказе в применении политики или системных событиях. Например, ниже показаны названия журналов аудита активности администратора на уровне проекта и журналов аудита доступа к данным организации. Переменные обозначают идентификаторы проекта Firebase и организации.

projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity
organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fdata_access

Название услуги

В журналах аудита Firebase App Hosting используется имя службы firebaseapphosting.googleapis.com .

Полный список всех названий служб Cloud Logging API и соответствующих им типов отслеживаемых ресурсов см. в разделе «Сопоставление служб с ресурсами» .

Типы ресурсов

В журналах аудита Firebase App Hosting используется тип ресурса audited_resource для всех записей аудита.

Список всех типов ресурсов, отслеживаемых Cloud Logging, и их описательную информацию см. в разделе «Типы отслеживаемых ресурсов» .

Включить ведение журнала аудита

Журналы аудита действий администратора всегда включены; отключить их нельзя.

Журналы аудита доступа к данным по умолчанию отключены и не записываются, если их явно не включить (исключение составляют журналы аудита доступа к данным для BigQuery, которые нельзя отключить).

Инструкции по включению некоторых или всех журналов аудита доступа к данным см. в разделе «Настройка журналов доступа к данным» .

Права доступа и роли

Разрешения и роли 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 можно с помощью консоли Google Cloud, инструмента командной строки gcloud или API Logging.

Консоль

С помощью инструмента «Обозреватель журналов» в консоли Google Cloud вы можете получить доступ к записям аудита для вашего проекта, папки или организации Firebase:

  1. В консоли Google Cloud перейдите на страницу «Ведение журналов» > «Проводник журналов» .

    Перейдите на страницу «Проводник журналов».

  2. На странице «Проводник журналов» выберите существующий проект Firebase, папку или организацию.

  3. В панели построителя запросов выполните следующие действия:

    • В поле «Тип ресурса» выберите ресурс Google Cloud , журналы аудита которого вы хотите просмотреть.

    • В поле «Имя журнала» выберите тип журнала аудита, который вы хотите просмотреть:

      • Для просмотра журналов аудита действий администратора выберите пункт «Действия» .
      • Для просмотра журналов аудита доступа к данным выберите data_access .
      • Для просмотра журналов аудита системных событий выберите system_event .
      • Для просмотра журналов аудита отказов в применении политики выберите раздел «Политика» .

    Если вы не видите эти параметры, значит, в проекте, папке или организации Firebase отсутствуют журналы аудита такого типа.

    Для получения более подробной информации о выполнении запросов с помощью Logs Explorer см. раздел «Создание запросов к журналам» .

gcloud

Инструмент командной строки gcloud предоставляет интерфейс командной строки для доступа к API Cloud Logging. В каждом из имен файлов журналов укажите действительный 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.

Чтобы использовать API логирования для просмотра записей журнала аудита, выполните следующие действия:

  1. Перейдите в раздел «Попробуйте этот API» в документации к методу entries.list .

  2. Вставьте следующий текст в раздел « Тело запроса» формы «Попробуйте этот API» . Нажатие на эту предварительно заполненную форму автоматически заполнит тело запроса, но вам необходимо указать действительный PROJECT_ID в каждом из имен журналов.

    {
      "resourceNames": [
        "projects/PROJECT_ID"
      ],
      "pageSize": 5,
      "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com"
    }
  3. Нажмите «Выполнить» .

Для получения более подробной информации о запросах см. раздел «Ведение журнала запросов» .

Пример записи в журнале аудита и информация о том, как найти в ней наиболее важные сведения, приведены в разделе «Пример записи в журнале аудита» .

Журналы аудита маршрутов

Вы можете направлять журналы аудита в поддерживаемые места назначения так же, как и другие типы журналов. Вот несколько причин, по которым вам может понадобиться направлять журналы аудита:

  • Для более длительного хранения журналов аудита или использования более мощных возможностей поиска вы можете направлять копии журналов аудита в Google Cloud Storage, BigQuery или Google Cloud Pub/Sub. Используя Cloud Pub/Sub, вы можете направлять запросы в другие приложения, другие хранилища и третьим сторонам.

  • Для управления журналами аудита во всей организации можно создать агрегированные приемники , которые будут направлять журналы из любого или всех проектов Firebase в организации.

  • Если включенные журналы аудита доступа к данным превышают лимит логов для ваших проектов Firebase, вы можете создать обработчики событий, которые исключат журналы аудита доступа к данным из процесса логирования.

Инструкции по маршрутизации журналов см. в разделе «Настройка приемников» .

Цены

Журналы аудита административной активности и журналы аудита системных событий предоставляются бесплатно.

Ведение журналов аудита доступа к данным и журналов аудита отказов в предоставлении политик является платным.

Для получения дополнительной информации о ценах на Cloud Logging см. раздел «Цены на пакет операционных услуг Google Cloud: Cloud Logging» .