Как отслеживать базы данных с помощью Cloud Monitoring

В этом документе описывается ведение журналов аудита для Cloud Firestore. Сервисы Google Cloud создают журналы аудита, в которых регистрируются действия по администрированию и доступу в рамках ресурсов Google Cloud.

Дополнительную информацию о журналах аудита Google Cloud можно найти в следующих статьях:

Примечания

При настройке ведения журнала аудита используйте название сервиса datastore.googleapis.com, чтобы настроить как datastore.googleapis.com, так и firestore.googleapis.com. Once configured, logs for the Cloud Firestore API include the service namefirestore.googleapis.com`.

Чтобы узнать, сколько времени заняла обработка запроса DATA_READ или DATA_WRITE, посмотрите поле processing_duration в объекте metadata в AuditLog. Поле processing_duration содержит информацию о времени, которое потребовалось базе данных на обработку запроса. Это меньше, чем задержка для конечного пользователя. В частности, в него не входят сетевые издержки.

Название сервиса

В журналах аудита Cloud Firestore используется название сервиса firestore.googleapis.com. Фильтр для этого сервиса:

protoPayload.serviceName="firestore.googleapis.com"

Методы по типу разрешения

У каждого разрешения IAM есть свойство type, значение которого представляет собой перечисление, которое может быть одним из четырех значений: ADMIN_READ, ADMIN_WRITE, DATA_READ или DATA_WRITE. При вызове метода Cloud Firestore создает журнал аудита, категория которого зависит от свойства type разрешения, необходимого для выполнения метода.

Методы, для которых требуется разрешение IAM со значением свойства type, равным DATA_READ, DATA_WRITE или ADMIN_READ, создают журналы аудита доступа к данным.

Методы, для которых требуется разрешение IAM со значением свойства type, равным ADMIN_WRITE, генерируют журналы аудита действий администратора.

Тип разрешения Методы
ADMIN_READ google.cloud.location.Locations.GetLocation
google.cloud.location.Locations.ListLocations
google.firestore.admin.v1.FirestoreAdmin.GetBackup
google.firestore.admin.v1.FirestoreAdmin.GetBackupSchedule
google.firestore.admin.v1.FirestoreAdmin.GetDatabase
google.firestore.admin.v1.FirestoreAdmin.GetField
google.firestore.admin.v1.FirestoreAdmin.GetIndex
google.firestore.admin.v1.FirestoreAdmin.ListBackupSchedules
google.firestore.admin.v1.FirestoreAdmin.ListBackups
google.firestore.admin.v1.FirestoreAdmin.ListDatabases
google.firestore.admin.v1.FirestoreAdmin.ListFields
google.firestore.admin.v1.FirestoreAdmin.ListIndexes
google.firestore.admin.v1beta1.FirestoreAdmin.GetIndex
google.firestore.admin.v1.MongoDBCompatible.ListIndexes
google.firestore.admin.v1.MongoDBCompatible.ListDatabases
ADMIN_WRITE google.firestore.admin.v1.FirestoreAdmin.CreateBackupSchedule
google.firestore.admin.v1.FirestoreAdmin.CreateDatabase
google.firestore.admin.v1.FirestoreAdmin.CreateIndex
google.firestore.admin.v1.FirestoreAdmin.DeleteBackup
google.firestore.admin.v1.FirestoreAdmin.DeleteBackupSchedule
google.firestore.admin.v1.FirestoreAdmin.DeleteDatabase
google.firestore.admin.v1.FirestoreAdmin.DeleteIndex
google.firestore.admin.v1.FirestoreAdmin.RestoreDatabase
google.firestore.admin.v1.FirestoreAdmin.UpdateBackupSchedule
google.firestore.admin.v1.FirestoreAdmin.UpdateDatabase
google.firestore.admin.v1.FirestoreAdmin.UpdateField
google.longrunning.Operations.CancelOperation
google.longrunning.Operations.DeleteOperation
DATA_READ google.firestore.v1.MongoDBCompatible.Find
google.firestore.v1.MongoDBCompatible.Aggregate
google.firestore.v1.MongoDBCompatible.GetMore
google.firestore.v1.MongoDBCompatible.ListCollections
google.firestore.v1.MongoDBCompatible.Count
google.firestore.v1.MongoDBCompatible.Distinct
google.firestore.v1.MongoDBCompatible.CommitTransaction
google.firestore.v1.MongoDBCompatible.AbortTransaction
google.firestore.v1.MongoDBCompatible.EndSessions
google.firestore.v1.MongoDBCompatible.KillCursors
DATA_WRITE google.firestore.v1.MongoDBCompatible.Insert
google.firestore.v1.MongoDBCompatible.Update
google.firestore.v1.MongoDBCompatible.Delete
google.firestore.v1.MongoDBCompatible.FindAndModify
google.firestore.v1.MongoDBCompatible.CreateCollection

Определите, кто отправляет запросы

Записи в журнале аудита содержат информацию о пользователе, который выполнил зарегистрированную операцию. Чтобы определить, кто отправил запрос, посмотрите следующие поля в объекте AuditLog:

  • Идентификатор вызывающего абонента хранится в поле AuthenticationInfo. Это может быть principalEmail пользователя. Эта информация иногда редактируется.

  • Поле callerIp в объекте requestMetadata записи AuditLog содержит IP-адрес вызывающего абонента.