Informasi logging audit Firestore

Dokumen ini menjelaskan logging audit untuk Firestore. Layanan Google Cloud membuat log audit yang mencatat aktivitas administratif dan akses dalam resource Google Cloud Anda. Untuk informasi selengkapnya tentang Cloud Audit Logs, lihat referensi berikut:

Catatan

Saat mengonfigurasi logging audit, gunakan nama layanan datastore.googleapis.com untuk mengonfigurasi datastore.googleapis.com dan firestore.googleapis.com.Setelah dikonfigurasi, log untuk Firestore API akan menyertakan nama layanan firestore.googleapis.com.

Untuk melihat waktu yang diperlukan untuk memproses permintaan DATA_READ atau DATA_WRITE, lihat kolom processing_duration dalam objek metadata dari AuditLog. processing_duration menjelaskan waktu yang diperlukan database untuk memproses permintaan. Nilai ini lebih kecil dari latensi pengguna akhir. Secara khusus, ini tidak mencakup overhead jaringan.

Untuk permintaan Listen, processing_duration hanya ada di Log Audit untuk set hasil awal yang ditampilkan. Operasi ini tidak ada di Log Audit berikutnya untuk target Listen yang sama.

Tindakan tulis individual dari operasi impor, penghapusan massal, dan TTL tidak dicatat dalam log audit.

Nama layanan

Log audit Firestore menggunakan nama layanan firestore.googleapis.com. Filter untuk layanan ini:

    protoPayload.serviceName="firestore.googleapis.com"
  

Metode menurut jenis izin

Setiap izin IAM memiliki properti type, yang nilainya adalah enum yang dapat berupa salah satu dari empat nilai: ADMIN_READ, ADMIN_WRITE, DATA_READ, atau DATA_WRITE. Saat Anda memanggil metode, Firestore akan membuat log audit yang kategorinya bergantung pada properti type izin yang diperlukan untuk menjalankan metode. Metode yang memerlukan izin IAM dengan nilai properti type DATA_READ, DATA_WRITE, atau ADMIN_READ akan menghasilkan log audit Akses Data. Metode yang memerlukan izin IAM dengan nilai properti type dari ADMIN_WRITE akan membuat log audit Aktivitas Admin.

Jenis izin Metode
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

Log audit antarmuka API

Untuk mengetahui informasi tentang cara dan izin mana yang dievaluasi untuk setiap metode, lihat dokumentasi Identity and Access Management untuk Firestore.

google.cloud.location.Locations

Log audit berikut dikaitkan dengan metode yang termasuk dalam google.cloud.location.Locations.

GetLocation

  • Metode: google.cloud.location.Locations.GetLocation
  • Jenis log audit: Akses data
  • Izin:
    • datastore.locations.get - ADMIN_READ
  • Metode adalah operasi streaming atau yang berjalan lama: Tidak.
  • Filter untuk metode ini: protoPayload.methodName="google.cloud.location.Locations.GetLocation"

ListLocations

  • Metode: google.cloud.location.Locations.ListLocations
  • Jenis log audit: Akses data
  • Izin:
    • datastore.locations.list - ADMIN_READ
  • Metode adalah operasi streaming atau yang berjalan lama: Tidak.
  • Filter untuk metode ini: protoPayload.methodName="google.cloud.location.Locations.ListLocations"

google.firestore.admin.v1.FirestoreAdmin

Log audit berikut dikaitkan dengan metode yang termasuk dalam google.firestore.admin.v1.FirestoreAdmin.

BulkDeleteDocuments

CreateBackupSchedule

CreateDatabase

CreateIndex

DeleteBackup

DeleteBackupSchedule

DeleteDatabase

DeleteIndex

ExportDocuments

GetBackup

GetBackupSchedule

GetDatabase

GetField

GetIndex

ImportDocuments

ListBackupSchedules

ListBackups

ListDatabases

ListFields

ListIndexes

RestoreDatabase

UpdateBackupSchedule

UpdateDatabase

UpdateField

google.firestore.admin.v1beta1.FirestoreAdmin

Log audit berikut dikaitkan dengan metode yang termasuk dalam google.firestore.admin.v1beta1.FirestoreAdmin.

CreateIndex

DeleteIndex

ExportDocuments

GetIndex

ImportDocuments

ListIndexes

google.firestore.admin.v1beta2.FirestoreAdmin

Log audit berikut dikaitkan dengan metode yang termasuk dalam google.firestore.admin.v1beta2.FirestoreAdmin.

CreateIndex

DeleteIndex

ExportDocuments

GetField

GetIndex

ImportDocuments

ListFields

ListIndexes

UpdateField

google.firestore.v1.Firestore

Log audit berikut dikaitkan dengan metode yang termasuk dalam google.firestore.v1.Firestore.

BatchGetDocuments

BatchWrite

  • Metode: google.firestore.v1.Firestore.BatchWrite
  • Jenis log audit: Akses data
  • Izin:
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.delete - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • Metode adalah operasi streaming atau yang berjalan lama: Tidak.
  • Filter untuk metode ini: protoPayload.methodName="google.firestore.v1.Firestore.BatchWrite"

BeginTransaction

  • Metode: google.firestore.v1.Firestore.BeginTransaction
  • Jenis log audit: Akses data
  • Izin:
    • datastore.databases.get - DATA_READ
  • Metode adalah operasi streaming atau yang berjalan lama: Tidak.
  • Filter untuk metode ini: protoPayload.methodName="google.firestore.v1.Firestore.BeginTransaction"

Commit

  • Metode: google.firestore.v1.Firestore.Commit
  • Jenis log audit: Akses data
  • Izin:
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.delete - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • Metode adalah operasi streaming atau yang berjalan lama: Tidak.
  • Filter untuk metode ini: protoPayload.methodName="google.firestore.v1.Firestore.Commit"

CreateDocument

  • Metode: google.firestore.v1.Firestore.CreateDocument
  • Jenis log audit: Akses data
  • Izin:
    • datastore.entities.allocateIds - DATA_WRITE
    • datastore.entities.create - DATA_WRITE
  • Metode adalah operasi streaming atau yang berjalan lama: Tidak.
  • Filter untuk metode ini: protoPayload.methodName="google.firestore.v1.Firestore.CreateDocument"

DeleteDocument

  • Metode: google.firestore.v1.Firestore.DeleteDocument
  • Jenis log audit: Akses data
  • Izin:
    • datastore.entities.delete - DATA_WRITE
  • Metode adalah operasi streaming atau yang berjalan lama: Tidak.
  • Filter untuk metode ini: protoPayload.methodName="google.firestore.v1.Firestore.DeleteDocument"

GetDocument

  • Metode: google.firestore.v1.Firestore.GetDocument
  • Jenis log audit: Akses data
  • Izin:
    • datastore.entities.get - DATA_READ
  • Metode adalah operasi streaming atau yang berjalan lama: Tidak.
  • Filter untuk metode ini: protoPayload.methodName="google.firestore.v1.Firestore.GetDocument"

ListCollectionIds

  • Metode: google.firestore.v1.Firestore.ListCollectionIds
  • Jenis log audit: Akses data
  • Izin:
    • datastore.entities.list - DATA_READ
  • Metode adalah operasi streaming atau yang berjalan lama: Tidak.
  • Filter untuk metode ini: protoPayload.methodName="google.firestore.v1.Firestore.ListCollectionIds"

ListDocuments

  • Metode: google.firestore.v1.Firestore.ListDocuments
  • Jenis log audit: Akses data
  • Izin:
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • Metode adalah operasi streaming atau yang berjalan lama: Tidak.
  • Filter untuk metode ini: protoPayload.methodName="google.firestore.v1.Firestore.ListDocuments"

Listen

  • Metode: google.firestore.v1.Firestore.Listen
  • Jenis log audit: Akses data
  • Izin:
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • Metode adalah operasi streaming atau yang berjalan lama: Streaming RPC
  • Filter untuk metode ini: protoPayload.methodName="google.firestore.v1.Firestore.Listen"

PartitionQuery

  • Metode: google.firestore.v1.Firestore.PartitionQuery
  • Jenis log audit: Akses data
  • Izin:
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • Metode adalah operasi streaming atau yang berjalan lama: Tidak.
  • Filter untuk metode ini: protoPayload.methodName="google.firestore.v1.Firestore.PartitionQuery"

Rollback

  • Metode: google.firestore.v1.Firestore.Rollback
  • Jenis log audit: Akses data
  • Izin:
    • datastore.databases.get - DATA_READ
  • Metode adalah operasi streaming atau yang berjalan lama: Tidak.
  • Filter untuk metode ini: protoPayload.methodName="google.firestore.v1.Firestore.Rollback"

RunAggregationQuery

RunQuery

  • Metode: google.firestore.v1.Firestore.RunQuery
  • Jenis log audit: Akses data
  • Izin:
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • Metode adalah operasi streaming atau yang berjalan lama: Streaming RPC
  • Filter untuk metode ini: protoPayload.methodName="google.firestore.v1.Firestore.RunQuery"

UpdateDocument

  • Metode: google.firestore.v1.Firestore.UpdateDocument
  • Jenis log audit: Akses data
  • Izin:
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • Metode adalah operasi streaming atau yang berjalan lama: Tidak.
  • Filter untuk metode ini: protoPayload.methodName="google.firestore.v1.Firestore.UpdateDocument"

Write

  • Metode: google.firestore.v1.Firestore.Write
  • Jenis log audit: Akses data
  • Izin:
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • Metode adalah operasi streaming atau yang berjalan lama: Streaming RPC
  • Filter untuk metode ini: protoPayload.methodName="google.firestore.v1.Firestore.Write"

google.firestore.v1beta1.Firestore

Log audit berikut dikaitkan dengan metode yang termasuk dalam google.firestore.v1beta1.Firestore.

BatchGetDocuments

BatchWrite

  • Metode: google.firestore.v1beta1.Firestore.BatchWrite
  • Jenis log audit: Akses data
  • Izin:
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • Metode adalah operasi streaming atau yang berjalan lama: Tidak.
  • Filter untuk metode ini: protoPayload.methodName="google.firestore.v1beta1.Firestore.BatchWrite"

BeginTransaction

Commit

  • Metode: google.firestore.v1beta1.Firestore.Commit
  • Jenis log audit: Akses data
  • Izin:
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • Metode adalah operasi streaming atau yang berjalan lama: Tidak.
  • Filter untuk metode ini: protoPayload.methodName="google.firestore.v1beta1.Firestore.Commit"

CreateDocument

  • Metode: google.firestore.v1beta1.Firestore.CreateDocument
  • Jenis log audit: Akses data
  • Izin:
    • datastore.entities.allocateIds - DATA_WRITE
    • datastore.entities.create - DATA_WRITE
  • Metode adalah operasi streaming atau yang berjalan lama: Tidak.
  • Filter untuk metode ini: protoPayload.methodName="google.firestore.v1beta1.Firestore.CreateDocument"

DeleteDocument

  • Metode: google.firestore.v1beta1.Firestore.DeleteDocument
  • Jenis log audit: Akses data
  • Izin:
    • datastore.entities.delete - DATA_WRITE
  • Metode adalah operasi streaming atau yang berjalan lama: Tidak.
  • Filter untuk metode ini: protoPayload.methodName="google.firestore.v1beta1.Firestore.DeleteDocument"

GetDocument

  • Metode: google.firestore.v1beta1.Firestore.GetDocument
  • Jenis log audit: Akses data
  • Izin:
    • datastore.entities.get - DATA_READ
  • Metode adalah operasi streaming atau yang berjalan lama: Tidak.
  • Filter untuk metode ini: protoPayload.methodName="google.firestore.v1beta1.Firestore.GetDocument"

ListCollectionIds

ListDocuments

  • Metode: google.firestore.v1beta1.Firestore.ListDocuments
  • Jenis log audit: Akses data
  • Izin:
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • Metode adalah operasi streaming atau yang berjalan lama: Tidak.
  • Filter untuk metode ini: protoPayload.methodName="google.firestore.v1beta1.Firestore.ListDocuments"

PartitionQuery

  • Metode: google.firestore.v1beta1.Firestore.PartitionQuery
  • Jenis log audit: Akses data
  • Izin:
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • Metode adalah operasi streaming atau yang berjalan lama: Tidak.
  • Filter untuk metode ini: protoPayload.methodName="google.firestore.v1beta1.Firestore.PartitionQuery"

Rollback

  • Metode: google.firestore.v1beta1.Firestore.Rollback
  • Jenis log audit: Akses data
  • Izin:
    • datastore.databases.get - DATA_READ
  • Metode adalah operasi streaming atau yang berjalan lama: Tidak.
  • Filter untuk metode ini: protoPayload.methodName="google.firestore.v1beta1.Firestore.Rollback"

RunAggregationQuery

RunQuery

UpdateDocument

  • Metode: google.firestore.v1beta1.Firestore.UpdateDocument
  • Jenis log audit: Akses data
  • Izin:
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • Metode adalah operasi streaming atau yang berjalan lama: Tidak.
  • Filter untuk metode ini: protoPayload.methodName="google.firestore.v1beta1.Firestore.UpdateDocument"

google.longrunning.Operations

Log audit berikut dikaitkan dengan metode yang termasuk dalam google.longrunning.Operations.

CancelOperation

DeleteOperation

GetOperation

  • Metode: google.longrunning.Operations.GetOperation
  • Jenis log audit: Akses data
  • Izin:
    • datastore.operations.get - ADMIN_READ
  • Metode adalah operasi streaming atau yang berjalan lama: Tidak.
  • Filter untuk metode ini: protoPayload.methodName="google.longrunning.Operations.GetOperation"

ListOperations

  • Metode: google.longrunning.Operations.ListOperations
  • Jenis log audit: Akses data
  • Izin:
    • datastore.operations.list - ADMIN_READ
  • Metode adalah operasi streaming atau yang berjalan lama: Tidak.
  • Filter untuk metode ini: protoPayload.methodName="google.longrunning.Operations.ListOperations"

Mengidentifikasi pemanggil permintaan

Entri Log Audit menyertakan informasi tentang identitas yang melakukan operasi yang dicatat dalam log. Untuk mengidentifikasi pemanggil permintaan, lihat kolom berikut dalam objek AuditLog:

  • Identitas pemanggil disimpan di kolom AuthenticationInfo. Ini dapat mencakup principalEmail pengguna. Informasi ini terkadang disamarkan.

    Jika Token Web JSON (JWT) digunakan untuk autentikasi pihak ketiga, kolom thirdPartyPrincipal akan menyertakan header dan payload token. Misalnya, log audit untuk permintaan yang diautentikasi dengan Firebase Authentication menyertakan token autentikasi permintaan tersebut.

  • Kolom callerIp dalam objek requestMetadata dari entri AuditLog menyertakan alamat IP pemanggil.