Datastore audit logging

This document describes audit logging for Datastore. Google Cloud services generate audit logs that record administrative and access activities within your Google Cloud resources. For more information about Cloud Audit Logs, see the following:

Notes

When configuring audit logging, the service name datastore.googleapis.com configures logs for both datastore.googleapis.com and firestore.googleapis.com API calls.

To view the time it took to process a DATA_READ or DATA_WRITE request, see the processing_duration field within the metadata object of an AuditLog. processing_duration describes the time the database took to actually process a request. This is smaller than the end-user latency. In particular, it does not include network overhead.

Service name

Datastore audit logs use the service name datastore.googleapis.com. Filter for this service:

    protoPayload.serviceName="datastore.googleapis.com"
  

Methods by permission type

Each IAM permission has a type property, whose value is an enum that can be one of four values: ADMIN_READ, ADMIN_WRITE, DATA_READ, or DATA_WRITE. When you call a method, Datastore generates an audit log whose category is dependent on the type property of the permission required to perform the method. Methods that require an IAM permission with the type property value of DATA_READ, DATA_WRITE, or ADMIN_READ generate Data Access audit logs. Methods that require an IAM permission with the type property value of ADMIN_WRITE generate Admin Activity audit logs.

Permission type Methods
ADMIN_READ google.datastore.admin.v1.DatastoreAdmin.GetIndex
google.datastore.admin.v1.DatastoreAdmin.ListIndexes
google.longrunning.Operations.GetOperation
google.longrunning.Operations.ListOperations
ADMIN_WRITE google.datastore.admin.v1.DatastoreAdmin.CreateIndex
google.datastore.admin.v1.DatastoreAdmin.DeleteIndex
google.datastore.admin.v1.DatastoreAdmin.ExportEntities
google.datastore.admin.v1.DatastoreAdmin.ImportEntities
google.datastore.admin.v1beta1.DatastoreAdmin.ExportEntities
google.datastore.admin.v1beta1.DatastoreAdmin.ImportEntities
google.longrunning.Operations.CancelOperation
google.longrunning.Operations.DeleteOperation
DATA_READ google.datastore.v1.Datastore.BeginTransaction
google.datastore.v1.Datastore.Lookup
google.datastore.v1.Datastore.Rollback
google.datastore.v1.Datastore.RunAggregationQuery
google.datastore.v1.Datastore.RunQuery
google.datastore.v1beta3.Datastore.BeginTransaction
google.datastore.v1beta3.Datastore.Lookup
google.datastore.v1beta3.Datastore.Rollback
google.datastore.v1beta3.Datastore.RunAggregationQuery
google.datastore.v1beta3.Datastore.RunQuery
DATA_WRITE google.datastore.v1.Datastore.AllocateIds
google.datastore.v1.Datastore.Commit
google.datastore.v1.Datastore.ReserveIds
google.datastore.v1beta3.Datastore.AllocateIds
google.datastore.v1beta3.Datastore.Commit
google.datastore.v1beta3.Datastore.ReserveIds

API interface audit logs

For information about how and which permissions are evaluated for each method, see the Identity and Access Management documentation for Datastore.

google.datastore.admin.v1.DatastoreAdmin

The following audit logs are associated with methods belonging to google.datastore.admin.v1.DatastoreAdmin.

CreateIndex

DeleteIndex

ExportEntities

GetIndex

ImportEntities

ListIndexes

google.datastore.admin.v1beta1.DatastoreAdmin

The following audit logs are associated with methods belonging to google.datastore.admin.v1beta1.DatastoreAdmin.

ExportEntities

ImportEntities

google.datastore.v1.Datastore

The following audit logs are associated with methods belonging to google.datastore.v1.Datastore.

AllocateIds

  • Method: google.datastore.v1.Datastore.AllocateIds
  • Audit log type: Data access
  • Permissions:
    • datastore.entities.allocateIds - DATA_WRITE
  • Method is a long-running or streaming operation: No.
  • Filter for this method: protoPayload.methodName="google.datastore.v1.Datastore.AllocateIds"

BeginTransaction

  • Method: google.datastore.v1.Datastore.BeginTransaction
  • Audit log type: Data access
  • Permissions:
    • datastore.databases.get - DATA_READ
  • Method is a long-running or streaming operation: No.
  • Filter for this method: protoPayload.methodName="google.datastore.v1.Datastore.BeginTransaction"

Commit

  • Method: google.datastore.v1.Datastore.Commit
  • Audit log type: Data access
  • Permissions:
    • datastore.databases.get - DATA_READ
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.delete - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • Method is a long-running or streaming operation: No.
  • Filter for this method: protoPayload.methodName="google.datastore.v1.Datastore.Commit"

Lookup

  • Method: google.datastore.v1.Datastore.Lookup
  • Audit log type: Data access
  • Permissions:
    • datastore.entities.get - DATA_READ
  • Method is a long-running or streaming operation: No.
  • Filter for this method: protoPayload.methodName="google.datastore.v1.Datastore.Lookup"

ReserveIds

  • Method: google.datastore.v1.Datastore.ReserveIds
  • Audit log type: Data access
  • Permissions:
    • datastore.entities.allocateIds - DATA_WRITE
  • Method is a long-running or streaming operation: No.
  • Filter for this method: protoPayload.methodName="google.datastore.v1.Datastore.ReserveIds"

Rollback

  • Method: google.datastore.v1.Datastore.Rollback
  • Audit log type: Data access
  • Permissions:
    • datastore.databases.get - DATA_READ
  • Method is a long-running or streaming operation: No.
  • Filter for this method: protoPayload.methodName="google.datastore.v1.Datastore.Rollback"

RunAggregationQuery

  • Method: google.datastore.v1.Datastore.RunAggregationQuery
  • Audit log type: Data access
  • Permissions:
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • Method is a long-running or streaming operation: No.
  • Filter for this method: protoPayload.methodName="google.datastore.v1.Datastore.RunAggregationQuery"

RunQuery

  • Method: google.datastore.v1.Datastore.RunQuery
  • Audit log type: Data access
  • Permissions:
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • Method is a long-running or streaming operation: No.
  • Filter for this method: protoPayload.methodName="google.datastore.v1.Datastore.RunQuery"

google.datastore.v1beta3.Datastore

The following audit logs are associated with methods belonging to google.datastore.v1beta3.Datastore.

AllocateIds

  • Method: google.datastore.v1beta3.Datastore.AllocateIds
  • Audit log type: Data access
  • Permissions:
    • datastore.databases.get - DATA_READ
    • datastore.entities.allocateIds - DATA_WRITE
  • Method is a long-running or streaming operation: No.
  • Filter for this method: protoPayload.methodName="google.datastore.v1beta3.Datastore.AllocateIds"

BeginTransaction

  • Method: google.datastore.v1beta3.Datastore.BeginTransaction
  • Audit log type: Data access
  • Permissions:
    • datastore.databases.get - DATA_READ
  • Method is a long-running or streaming operation: No.
  • Filter for this method: protoPayload.methodName="google.datastore.v1beta3.Datastore.BeginTransaction"

Commit

  • Method: google.datastore.v1beta3.Datastore.Commit
  • Audit log type: Data access
  • Permissions:
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.delete - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • Method is a long-running or streaming operation: No.
  • Filter for this method: protoPayload.methodName="google.datastore.v1beta3.Datastore.Commit"

Lookup

  • Method: google.datastore.v1beta3.Datastore.Lookup
  • Audit log type: Data access
  • Permissions:
    • datastore.entities.get - DATA_READ
  • Method is a long-running or streaming operation: No.
  • Filter for this method: protoPayload.methodName="google.datastore.v1beta3.Datastore.Lookup"

ReserveIds

  • Method: google.datastore.v1beta3.Datastore.ReserveIds
  • Audit log type: Data access
  • Permissions:
    • datastore.databases.get - DATA_READ
    • datastore.entities.allocateIds - DATA_WRITE
  • Method is a long-running or streaming operation: No.
  • Filter for this method: protoPayload.methodName="google.datastore.v1beta3.Datastore.ReserveIds"

Rollback

  • Method: google.datastore.v1beta3.Datastore.Rollback
  • Audit log type: Data access
  • Permissions:
    • datastore.databases.get - DATA_READ
  • Method is a long-running or streaming operation: No.
  • Filter for this method: protoPayload.methodName="google.datastore.v1beta3.Datastore.Rollback"

RunAggregationQuery

  • Method: google.datastore.v1beta3.Datastore.RunAggregationQuery
  • Audit log type: Data access
  • Permissions:
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • Method is a long-running or streaming operation: No.
  • Filter for this method: protoPayload.methodName="google.datastore.v1beta3.Datastore.RunAggregationQuery"

RunQuery

  • Method: google.datastore.v1beta3.Datastore.RunQuery
  • Audit log type: Data access
  • Permissions:
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • Method is a long-running or streaming operation: No.
  • Filter for this method: protoPayload.methodName="google.datastore.v1beta3.Datastore.RunQuery"

google.longrunning.Operations

The following audit logs are associated with methods belonging to google.longrunning.Operations.

CancelOperation

DeleteOperation

GetOperation

  • Method: google.longrunning.Operations.GetOperation
  • Audit log type: Data access
  • Permissions:
    • datastore.operations.get - ADMIN_READ
  • Method is a long-running or streaming operation: No.
  • Filter for this method: protoPayload.methodName="google.longrunning.Operations.GetOperation"

ListOperations

  • Method: google.longrunning.Operations.ListOperations
  • Audit log type: Data access
  • Permissions:
    • datastore.operations.list - ADMIN_READ
  • Method is a long-running or streaming operation: No.
  • Filter for this method: protoPayload.methodName="google.longrunning.Operations.ListOperations"

Methods that don't produce audit logs

A method might not produce audit logs for one or more of the following reasons:

  • It is a high volume method involving signifcant log generation and storage costs.
  • It has low auditing value.
  • Another audit or platform log already provides method coverage.

The following methods don't produce audit logs:

  • google.longrunning.Operations.WaitOperation