Informazioni sull'audit logging di Firestore

Questo documento descrive la registrazione degli audit per Firestore. I servizi Google Cloud generano audit log che registrano le attività amministrative e di accesso all'interno delle risorse Google Cloud. Per ulteriori informazioni sugli audit log di Cloud, consulta quanto segue:

Note

Quando configuri la registrazione degli audit, utilizza il nome del servizio datastore.googleapis.com per configurare sia datastore.googleapis.com che firestore.googleapis.com.Una volta configurati, i log per l'API Firestore includono il nome del servizio firestore.googleapis.com.

Per visualizzare il tempo necessario per elaborare una richiesta DATA_READ o DATA_WRITE, consulta il campo processing_duration all'interno dell'oggetto metadata di un AuditLog. processing_duration descrive il tempo impiegato dal database per elaborare una richiesta. Questo valore è inferiore alla latenza dell'utente finale. In particolare, non include il sovraccarico della rete.

Per le richieste Listen, processing_duration è presente nel log di controllo solo per il set di risultati iniziale restituito. Non è presente nei log di controllo successivi per lo stesso target Listen.

Le singole scritture provenienti dall'importazione, dalle operazioni di eliminazione collettiva e dal TTL non vengono registrate nei log di controllo.

Nome servizio

Gli audit log di Firestore utilizzano il nome del servizio firestore.googleapis.com. Filtra per questo servizio:

    protoPayload.serviceName="firestore.googleapis.com"
  

Metodi per tipo di autorizzazione

Ogni autorizzazione IAM ha una proprietà type, il cui valore è un enum che può essere uno dei quattro valori: ADMIN_READ, ADMIN_WRITE, DATA_READ o DATA_WRITE. Quando chiami un metodo, Firestore genera un log di controllo la cui categoria dipende dalla proprietà type dell'autorizzazione richiesta per eseguire il metodo. I metodi che richiedono un'autorizzazione IAM con il valore della proprietà type corrispondente a DATA_READ, DATA_WRITE o ADMIN_READ generano log di controllo Accesso ai dati. I metodi che richiedono un'autorizzazione IAM con il valore della proprietà type ADMIN_WRITE generano log di controllo per le attività amministrative.

Tipo di autorizzazione Metodi
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.v1beta1.FirestoreAdmin.ListIndexes
google.firestore.admin.v1beta2.FirestoreAdmin.GetField
google.firestore.admin.v1beta2.FirestoreAdmin.GetIndex
google.firestore.admin.v1beta2.FirestoreAdmin.ListFields
google.firestore.admin.v1beta2.FirestoreAdmin.ListIndexes
google.longrunning.Operations.GetOperation
google.longrunning.Operations.ListOperations
ADMIN_WRITE google.firestore.admin.v1.FirestoreAdmin.BulkDeleteDocuments
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.ExportDocuments
google.firestore.admin.v1.FirestoreAdmin.ImportDocuments
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.firestore.admin.v1beta1.FirestoreAdmin.CreateIndex
google.firestore.admin.v1beta1.FirestoreAdmin.DeleteIndex
google.firestore.admin.v1beta1.FirestoreAdmin.ExportDocuments
google.firestore.admin.v1beta1.FirestoreAdmin.ImportDocuments
google.firestore.admin.v1beta2.FirestoreAdmin.CreateIndex
google.firestore.admin.v1beta2.FirestoreAdmin.DeleteIndex
google.firestore.admin.v1beta2.FirestoreAdmin.ExportDocuments
google.firestore.admin.v1beta2.FirestoreAdmin.ImportDocuments
google.firestore.admin.v1beta2.FirestoreAdmin.UpdateField
google.longrunning.Operations.CancelOperation
google.longrunning.Operations.DeleteOperation
DATA_READ google.firestore.v1.Firestore.BatchGetDocuments
google.firestore.v1.Firestore.BeginTransaction
google.firestore.v1.Firestore.GetDocument
google.firestore.v1.Firestore.ListCollectionIds
google.firestore.v1.Firestore.ListDocuments
google.firestore.v1.Firestore.Listen
google.firestore.v1.Firestore.PartitionQuery
google.firestore.v1.Firestore.Rollback
google.firestore.v1.Firestore.RunAggregationQuery
google.firestore.v1.Firestore.RunQuery
google.firestore.v1beta1.Firestore.BatchGetDocuments
google.firestore.v1beta1.Firestore.BeginTransaction
google.firestore.v1beta1.Firestore.GetDocument
google.firestore.v1beta1.Firestore.ListCollectionIds
google.firestore.v1beta1.Firestore.ListDocuments
google.firestore.v1beta1.Firestore.PartitionQuery
google.firestore.v1beta1.Firestore.Rollback
google.firestore.v1beta1.Firestore.RunAggregationQuery
google.firestore.v1beta1.Firestore.RunQuery
DATA_WRITE google.firestore.v1.Firestore.BatchWrite
google.firestore.v1.Firestore.Commit
google.firestore.v1.Firestore.CreateDocument
google.firestore.v1.Firestore.DeleteDocument
google.firestore.v1.Firestore.UpdateDocument
google.firestore.v1.Firestore.Write
google.firestore.v1beta1.Firestore.BatchWrite
google.firestore.v1beta1.Firestore.Commit
google.firestore.v1beta1.Firestore.CreateDocument
google.firestore.v1beta1.Firestore.DeleteDocument
google.firestore.v1beta1.Firestore.UpdateDocument

Audit log dell'interfaccia API

Per informazioni su come e quali autorizzazioni vengono valutate per ogni metodo, consulta la documentazione di Identity and Access Management per Firestore.

google.cloud.location.Locations

I seguenti log di controllo sono associati ai metodi appartenenti a google.cloud.location.Locations.

GetLocation

  • Metodo: google.cloud.location.Locations.GetLocation
  • Tipo di log di controllo: Accesso ai dati
  • Autorizzazioni:
    • datastore.locations.get - ADMIN_READ
  • Il metodo è un'operazione a lunga esecuzione o in streaming: No.
  • Filtra per questo metodo: protoPayload.methodName="google.cloud.location.Locations.GetLocation"

ListLocations

  • Metodo: google.cloud.location.Locations.ListLocations
  • Tipo di log di controllo: Accesso ai dati
  • Autorizzazioni:
    • datastore.locations.list - ADMIN_READ
  • Il metodo è un'operazione a lunga esecuzione o in streaming: No.
  • Filtra per questo metodo: protoPayload.methodName="google.cloud.location.Locations.ListLocations"

google.firestore.admin.v1.FirestoreAdmin

I seguenti log di controllo sono associati ai metodi appartenenti a google.firestore.admin.v1.FirestoreAdmin.

BulkDeleteDocuments

CreateBackupSchedule

CreateDatabase

CreateIndex

DeleteBackup

DeleteBackupSchedule

DeleteDatabase

DeleteIndex

ExportDocuments

GetBackup

GetBackupSchedule

GetDatabase

  • Metodo: google.firestore.admin.v1.FirestoreAdmin.GetDatabase
  • Tipo di log di controllo: Accesso ai dati
  • Autorizzazioni:
    • datastore.databases.getMetadata - ADMIN_READ
  • Il metodo è un'operazione a lunga esecuzione o in streaming: No.
  • Filtra per questo metodo: protoPayload.methodName="google.firestore.admin.v1.FirestoreAdmin.GetDatabase"

GetField

  • Metodo: google.firestore.admin.v1.FirestoreAdmin.GetField
  • Tipo di log di controllo: Accesso ai dati
  • Autorizzazioni:
    • datastore.indexes.get - ADMIN_READ
  • Il metodo è un'operazione a lunga esecuzione o in streaming: No.
  • Filtra per questo metodo: protoPayload.methodName="google.firestore.admin.v1.FirestoreAdmin.GetField"

GetIndex

  • Metodo: google.firestore.admin.v1.FirestoreAdmin.GetIndex
  • Tipo di log di controllo: Accesso ai dati
  • Autorizzazioni:
    • datastore.indexes.get - ADMIN_READ
  • Il metodo è un'operazione a lunga esecuzione o in streaming: No.
  • Filtra per questo metodo: protoPayload.methodName="google.firestore.admin.v1.FirestoreAdmin.GetIndex"

ImportDocuments

ListBackupSchedules

ListBackups

ListDatabases

ListFields

ListIndexes

RestoreDatabase

UpdateBackupSchedule

UpdateDatabase

UpdateField

google.firestore.admin.v1beta1.FirestoreAdmin

I seguenti log di controllo sono associati ai metodi appartenenti a google.firestore.admin.v1beta1.FirestoreAdmin.

CreateIndex

DeleteIndex

ExportDocuments

GetIndex

ImportDocuments

ListIndexes

google.firestore.admin.v1beta2.FirestoreAdmin

I seguenti log di controllo sono associati ai metodi appartenenti a google.firestore.admin.v1beta2.FirestoreAdmin.

CreateIndex

DeleteIndex

ExportDocuments

GetField

GetIndex

ImportDocuments

ListFields

ListIndexes

UpdateField

google.firestore.v1.Firestore

I seguenti log di controllo sono associati ai metodi appartenenti a google.firestore.v1.Firestore.

BatchGetDocuments

BatchWrite

  • Metodo: google.firestore.v1.Firestore.BatchWrite
  • Tipo di log di controllo: Accesso ai dati
  • Autorizzazioni:
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.delete - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • Il metodo è un'operazione a lunga esecuzione o in streaming: No.
  • Filtra per questo metodo: protoPayload.methodName="google.firestore.v1.Firestore.BatchWrite"

BeginTransaction

  • Metodo: google.firestore.v1.Firestore.BeginTransaction
  • Tipo di log di controllo: Accesso ai dati
  • Autorizzazioni:
    • datastore.databases.get - DATA_READ
  • Il metodo è un'operazione a lunga esecuzione o in streaming: No.
  • Filtra per questo metodo: protoPayload.methodName="google.firestore.v1.Firestore.BeginTransaction"

Commit

  • Metodo: google.firestore.v1.Firestore.Commit
  • Tipo di log di controllo: Accesso ai dati
  • Autorizzazioni:
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.delete - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • Il metodo è un'operazione a lunga esecuzione o in streaming: No.
  • Filtra per questo metodo: protoPayload.methodName="google.firestore.v1.Firestore.Commit"

CreateDocument

  • Metodo: google.firestore.v1.Firestore.CreateDocument
  • Tipo di log di controllo: Accesso ai dati
  • Autorizzazioni:
    • datastore.entities.allocateIds - DATA_WRITE
    • datastore.entities.create - DATA_WRITE
  • Il metodo è un'operazione a lunga esecuzione o in streaming: No.
  • Filtra per questo metodo: protoPayload.methodName="google.firestore.v1.Firestore.CreateDocument"

DeleteDocument

  • Metodo: google.firestore.v1.Firestore.DeleteDocument
  • Tipo di log di controllo: Accesso ai dati
  • Autorizzazioni:
    • datastore.entities.delete - DATA_WRITE
  • Il metodo è un'operazione a lunga esecuzione o in streaming: No.
  • Filtra per questo metodo: protoPayload.methodName="google.firestore.v1.Firestore.DeleteDocument"

GetDocument

  • Metodo: google.firestore.v1.Firestore.GetDocument
  • Tipo di log di controllo: Accesso ai dati
  • Autorizzazioni:
    • datastore.entities.get - DATA_READ
  • Il metodo è un'operazione a lunga esecuzione o in streaming: No.
  • Filtra per questo metodo: protoPayload.methodName="google.firestore.v1.Firestore.GetDocument"

ListCollectionIds

  • Metodo: google.firestore.v1.Firestore.ListCollectionIds
  • Tipo di log di controllo: Accesso ai dati
  • Autorizzazioni:
    • datastore.entities.list - DATA_READ
  • Il metodo è un'operazione a lunga esecuzione o in streaming: No.
  • Filtra per questo metodo: protoPayload.methodName="google.firestore.v1.Firestore.ListCollectionIds"

ListDocuments

  • Metodo: google.firestore.v1.Firestore.ListDocuments
  • Tipo di log di controllo: Accesso ai dati
  • Autorizzazioni:
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • Il metodo è un'operazione a lunga esecuzione o in streaming: No.
  • Filtra per questo metodo: protoPayload.methodName="google.firestore.v1.Firestore.ListDocuments"

Listen

  • Metodo: google.firestore.v1.Firestore.Listen
  • Tipo di log di controllo: Accesso ai dati
  • Autorizzazioni:
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • Il metodo è un'operazione a lunga esecuzione o di streaming: RPC di streaming
  • Filtra per questo metodo: protoPayload.methodName="google.firestore.v1.Firestore.Listen"

PartitionQuery

  • Metodo: google.firestore.v1.Firestore.PartitionQuery
  • Tipo di log di controllo: Accesso ai dati
  • Autorizzazioni:
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • Il metodo è un'operazione a lunga esecuzione o in streaming: No.
  • Filtra per questo metodo: protoPayload.methodName="google.firestore.v1.Firestore.PartitionQuery"

Rollback

  • Metodo: google.firestore.v1.Firestore.Rollback
  • Tipo di log di controllo: Accesso ai dati
  • Autorizzazioni:
    • datastore.databases.get - DATA_READ
  • Il metodo è un'operazione a lunga esecuzione o in streaming: No.
  • Filtra per questo metodo: protoPayload.methodName="google.firestore.v1.Firestore.Rollback"

RunAggregationQuery

RunQuery

  • Metodo: google.firestore.v1.Firestore.RunQuery
  • Tipo di log di controllo: Accesso ai dati
  • Autorizzazioni:
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • Il metodo è un'operazione a lunga esecuzione o di streaming: RPC di streaming
  • Filtra per questo metodo: protoPayload.methodName="google.firestore.v1.Firestore.RunQuery"

UpdateDocument

  • Metodo: google.firestore.v1.Firestore.UpdateDocument
  • Tipo di log di controllo: Accesso ai dati
  • Autorizzazioni:
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • Il metodo è un'operazione a lunga esecuzione o in streaming: No.
  • Filtra per questo metodo: protoPayload.methodName="google.firestore.v1.Firestore.UpdateDocument"

Write

  • Metodo: google.firestore.v1.Firestore.Write
  • Tipo di log di controllo: Accesso ai dati
  • Autorizzazioni:
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • Il metodo è un'operazione a lunga esecuzione o di streaming: RPC di streaming
  • Filtra per questo metodo: protoPayload.methodName="google.firestore.v1.Firestore.Write"

google.firestore.v1beta1.Firestore

I seguenti log di controllo sono associati ai metodi appartenenti a google.firestore.v1beta1.Firestore.

BatchGetDocuments

BatchWrite

  • Metodo: google.firestore.v1beta1.Firestore.BatchWrite
  • Tipo di log di controllo: Accesso ai dati
  • Autorizzazioni:
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • Il metodo è un'operazione a lunga esecuzione o in streaming: No.
  • Filtra per questo metodo: protoPayload.methodName="google.firestore.v1beta1.Firestore.BatchWrite"

BeginTransaction

Commit

  • Metodo: google.firestore.v1beta1.Firestore.Commit
  • Tipo di log di controllo: Accesso ai dati
  • Autorizzazioni:
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • Il metodo è un'operazione a lunga esecuzione o in streaming: No.
  • Filtra per questo metodo: protoPayload.methodName="google.firestore.v1beta1.Firestore.Commit"

CreateDocument

  • Metodo: google.firestore.v1beta1.Firestore.CreateDocument
  • Tipo di log di controllo: Accesso ai dati
  • Autorizzazioni:
    • datastore.entities.allocateIds - DATA_WRITE
    • datastore.entities.create - DATA_WRITE
  • Il metodo è un'operazione a lunga esecuzione o in streaming: No.
  • Filtra per questo metodo: protoPayload.methodName="google.firestore.v1beta1.Firestore.CreateDocument"

DeleteDocument

  • Metodo: google.firestore.v1beta1.Firestore.DeleteDocument
  • Tipo di log di controllo: Accesso ai dati
  • Autorizzazioni:
    • datastore.entities.delete - DATA_WRITE
  • Il metodo è un'operazione a lunga esecuzione o in streaming: No.
  • Filtra per questo metodo: protoPayload.methodName="google.firestore.v1beta1.Firestore.DeleteDocument"

GetDocument

  • Metodo: google.firestore.v1beta1.Firestore.GetDocument
  • Tipo di log di controllo: Accesso ai dati
  • Autorizzazioni:
    • datastore.entities.get - DATA_READ
  • Il metodo è un'operazione a lunga esecuzione o in streaming: No.
  • Filtra per questo metodo: protoPayload.methodName="google.firestore.v1beta1.Firestore.GetDocument"

ListCollectionIds

ListDocuments

  • Metodo: google.firestore.v1beta1.Firestore.ListDocuments
  • Tipo di log di controllo: Accesso ai dati
  • Autorizzazioni:
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • Il metodo è un'operazione a lunga esecuzione o in streaming: No.
  • Filtra per questo metodo: protoPayload.methodName="google.firestore.v1beta1.Firestore.ListDocuments"

PartitionQuery

  • Metodo: google.firestore.v1beta1.Firestore.PartitionQuery
  • Tipo di log di controllo: Accesso ai dati
  • Autorizzazioni:
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • Il metodo è un'operazione a lunga esecuzione o in streaming: No.
  • Filtra per questo metodo: protoPayload.methodName="google.firestore.v1beta1.Firestore.PartitionQuery"

Rollback

  • Metodo: google.firestore.v1beta1.Firestore.Rollback
  • Tipo di log di controllo: Accesso ai dati
  • Autorizzazioni:
    • datastore.databases.get - DATA_READ
  • Il metodo è un'operazione a lunga esecuzione o in streaming: No.
  • Filtra per questo metodo: protoPayload.methodName="google.firestore.v1beta1.Firestore.Rollback"

RunAggregationQuery

RunQuery

UpdateDocument

  • Metodo: google.firestore.v1beta1.Firestore.UpdateDocument
  • Tipo di log di controllo: Accesso ai dati
  • Autorizzazioni:
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • Il metodo è un'operazione a lunga esecuzione o in streaming: No.
  • Filtra per questo metodo: protoPayload.methodName="google.firestore.v1beta1.Firestore.UpdateDocument"

google.longrunning.Operations

I seguenti log di controllo sono associati ai metodi appartenenti a google.longrunning.Operations.

CancelOperation

DeleteOperation

GetOperation

  • Metodo: google.longrunning.Operations.GetOperation
  • Tipo di log di controllo: Accesso ai dati
  • Autorizzazioni:
    • datastore.operations.get - ADMIN_READ
  • Il metodo è un'operazione a lunga esecuzione o in streaming: No.
  • Filtra per questo metodo: protoPayload.methodName="google.longrunning.Operations.GetOperation"

ListOperations

  • Metodo: google.longrunning.Operations.ListOperations
  • Tipo di log di controllo: Accesso ai dati
  • Autorizzazioni:
    • datastore.operations.list - ADMIN_READ
  • Il metodo è un'operazione a lunga esecuzione o in streaming: No.
  • Filtra per questo metodo: protoPayload.methodName="google.longrunning.Operations.ListOperations"

Identificare i chiamanti che effettuano richieste

Le voci del log di controllo includono informazioni sull'identità che ha eseguito l'operazione registrata. Per identificare un chiamante della richiesta, consulta i seguenti campi all'interno di un oggetto AuditLog:

  • L'identità del chiamante è memorizzata nel campo AuthenticationInfo. Ciò può includere il principalEmail dell'utente. Queste informazioni sono a volte oscurate.

    Se per l'autenticazione di terze parti è stato utilizzato un token JWT (JSON Web Token), il campo thirdPartyPrincipal include l'intestazione e il payload del token. Ad esempio, i log di controllo per le richieste autenticate con Firebase Authentication includono il token di autenticazione della richiesta.

  • Il campo callerIp all'interno dell'oggetto requestMetadata di una voce AuditLog include l'indirizzo IP dell'utente che ha chiamato.