Firestore 감사 로깅 정보

이 문서에서는 Firestore의 감사 로깅을 설명합니다. Google Cloud 서비스는 Google Cloud 리소스 내의 관리 및 액세스 활동을 기록하는 감사 로그를 생성합니다. Cloud 감사 로그에 대한 자세한 내용은 다음을 참조하세요.

참고

감사 로깅을 구성할 때 서비스 이름 datastore.googleapis.com을 사용하여 datastore.googleapis.comfirestore.googleapis.com를 모두 구성합니다.구성되면 Firestore API의 로그에 서비스 이름 firestore.googleapis.com가 포함됩니다.

DATA_READ 또는 DATA_WRITE 요청을 처리하는 데 걸린 시간을 보려면 AuditLogmetadata 객체 내 processing_duration 필드를 참고하세요. processing_duration은 데이터베이스가 요청을 처리하는 데 걸린 시간을 설명합니다. 이 값은 최종 사용자 지연 시간보다 작습니다. 특히 네트워크 오버헤드를 포함하지 않습니다.

Listen 요청의 경우 processing_duration는 반환된 초기 결과 집합의 감사 로그에만 있습니다. 동일한 Listen 대상에 대한 후속 감사 로그에는 없습니다.

가져오기, 일괄 삭제 작업, TTL의 개별 쓰기는 감사 로그에 기록되지 않습니다.

서비스 이름

Firestore 감사 로그는 firestore.googleapis.com이라는 서비스 이름을 사용합니다. 이 서비스에 대한 필터:

    protoPayload.serviceName="firestore.googleapis.com"
  

권한 유형별 메서드

각 IAM 권한에는 type 속성이 포함되며 그 값은 네 가지 값(ADMIN_READ, ADMIN_WRITE, DATA_READ, DATA_WRITE) 중 하나일 수 있는 열거형입니다. 메서드를 호출하면 Firestore에서 메서드를 수행하는 데 필요한 권한의 type 속성에 따라 카테고리가 달라지는 감사 로그를 생성합니다. DATA_READ, DATA_WRITE, ADMIN_READtype 속성 값을 가진 IAM 권한이 필요한 메서드는 데이터 액세스 감사 로그를 생성합니다. type 속성 값이 ADMIN_WRITE인 IAM 권한이 필요한 메서드는 관리자 활동 감사 로그를 생성합니다.

권한 유형 메서드
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

API 인터페이스 감사 로그

메서드별 평가 방법과 평가 대상 권한에 대한 자세한 내용은 Firestore의 Identity and Access Management 문서를 참고하세요.

google.cloud.location.Locations

다음 감사 로그는 google.cloud.location.Locations에 속하는 메서드와 연결되어 있습니다.

GetLocation

  • 메서드: google.cloud.location.Locations.GetLocation
  • 감사 로그 유형: 데이터 액세스
  • 권한:
    • datastore.locations.get - ADMIN_READ
  • 메서드가 장기 실행 또는 스트리밍 작업인지 여부: 아니요.
  • 이 메서드에 대한 필터:: protoPayload.methodName="google.cloud.location.Locations.GetLocation"

ListLocations

  • 메서드: google.cloud.location.Locations.ListLocations
  • 감사 로그 유형: 데이터 액세스
  • 권한:
    • datastore.locations.list - ADMIN_READ
  • 메서드가 장기 실행 또는 스트리밍 작업인지 여부: 아니요.
  • 이 메서드에 대한 필터:: protoPayload.methodName="google.cloud.location.Locations.ListLocations"

google.firestore.admin.v1.FirestoreAdmin

다음 감사 로그는 google.firestore.admin.v1.FirestoreAdmin에 속하는 메서드와 연결되어 있습니다.

BulkDeleteDocuments

CreateBackupSchedule

CreateDatabase

CreateIndex

DeleteBackup

DeleteBackupSchedule

DeleteDatabase

DeleteIndex

  • 메서드: google.firestore.admin.v1.FirestoreAdmin.DeleteIndex
  • 감사 로그 유형: 관리자 활동
  • 권한:
    • datastore.indexes.delete - ADMIN_WRITE
  • 메서드가 장기 실행 또는 스트리밍 작업인지 여부: 아니요.
  • 이 메서드에 대한 필터:: protoPayload.methodName="google.firestore.admin.v1.FirestoreAdmin.DeleteIndex"

ExportDocuments

GetBackup

GetBackupSchedule

GetDatabase

GetField

GetIndex

ImportDocuments

ListBackupSchedules

ListBackups

ListDatabases

ListFields

ListIndexes

RestoreDatabase

UpdateBackupSchedule

UpdateDatabase

UpdateField

google.firestore.admin.v1beta1.FirestoreAdmin

다음 감사 로그는 google.firestore.admin.v1beta1.FirestoreAdmin에 속하는 메서드와 연결되어 있습니다.

CreateIndex

DeleteIndex

ExportDocuments

GetIndex

ImportDocuments

ListIndexes

google.firestore.admin.v1beta2.FirestoreAdmin

다음 감사 로그는 google.firestore.admin.v1beta2.FirestoreAdmin에 속하는 메서드와 연결되어 있습니다.

CreateIndex

DeleteIndex

ExportDocuments

GetField

GetIndex

ImportDocuments

ListFields

ListIndexes

UpdateField

google.firestore.v1.Firestore

다음 감사 로그는 google.firestore.v1.Firestore에 속하는 메서드와 연결되어 있습니다.

BatchGetDocuments

BatchWrite

  • 메서드: google.firestore.v1.Firestore.BatchWrite
  • 감사 로그 유형: 데이터 액세스
  • 권한:
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.delete - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • 메서드가 장기 실행 또는 스트리밍 작업인지 여부: 아니요.
  • 이 메서드에 대한 필터:: protoPayload.methodName="google.firestore.v1.Firestore.BatchWrite"

BeginTransaction

  • 메서드: google.firestore.v1.Firestore.BeginTransaction
  • 감사 로그 유형: 데이터 액세스
  • 권한:
    • datastore.databases.get - DATA_READ
  • 메서드가 장기 실행 또는 스트리밍 작업인지 여부: 아니요.
  • 이 메서드에 대한 필터:: protoPayload.methodName="google.firestore.v1.Firestore.BeginTransaction"

Commit

  • 메서드: google.firestore.v1.Firestore.Commit
  • 감사 로그 유형: 데이터 액세스
  • 권한:
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.delete - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • 메서드가 장기 실행 또는 스트리밍 작업인지 여부: 아니요.
  • 이 메서드에 대한 필터:: protoPayload.methodName="google.firestore.v1.Firestore.Commit"

CreateDocument

  • 메서드: google.firestore.v1.Firestore.CreateDocument
  • 감사 로그 유형: 데이터 액세스
  • 권한:
    • datastore.entities.allocateIds - DATA_WRITE
    • datastore.entities.create - DATA_WRITE
  • 메서드가 장기 실행 또는 스트리밍 작업인지 여부: 아니요.
  • 이 메서드에 대한 필터:: protoPayload.methodName="google.firestore.v1.Firestore.CreateDocument"

DeleteDocument

  • 메서드: google.firestore.v1.Firestore.DeleteDocument
  • 감사 로그 유형: 데이터 액세스
  • 권한:
    • datastore.entities.delete - DATA_WRITE
  • 메서드가 장기 실행 또는 스트리밍 작업인지 여부: 아니요.
  • 이 메서드에 대한 필터:: protoPayload.methodName="google.firestore.v1.Firestore.DeleteDocument"

GetDocument

  • 메서드: google.firestore.v1.Firestore.GetDocument
  • 감사 로그 유형: 데이터 액세스
  • 권한:
    • datastore.entities.get - DATA_READ
  • 메서드가 장기 실행 또는 스트리밍 작업인지 여부: 아니요.
  • 이 메서드에 대한 필터:: protoPayload.methodName="google.firestore.v1.Firestore.GetDocument"

ListCollectionIds

  • 메서드: google.firestore.v1.Firestore.ListCollectionIds
  • 감사 로그 유형: 데이터 액세스
  • 권한:
    • datastore.entities.list - DATA_READ
  • 메서드가 장기 실행 또는 스트리밍 작업인지 여부: 아니요.
  • 이 메서드에 대한 필터:: protoPayload.methodName="google.firestore.v1.Firestore.ListCollectionIds"

ListDocuments

  • 메서드: google.firestore.v1.Firestore.ListDocuments
  • 감사 로그 유형: 데이터 액세스
  • 권한:
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • 메서드가 장기 실행 또는 스트리밍 작업인지 여부: 아니요.
  • 이 메서드에 대한 필터:: protoPayload.methodName="google.firestore.v1.Firestore.ListDocuments"

Listen

PartitionQuery

  • 메서드: google.firestore.v1.Firestore.PartitionQuery
  • 감사 로그 유형: 데이터 액세스
  • 권한:
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • 메서드가 장기 실행 또는 스트리밍 작업인지 여부: 아니요.
  • 이 메서드에 대한 필터:: protoPayload.methodName="google.firestore.v1.Firestore.PartitionQuery"

Rollback

  • 메서드: google.firestore.v1.Firestore.Rollback
  • 감사 로그 유형: 데이터 액세스
  • 권한:
    • datastore.databases.get - DATA_READ
  • 메서드가 장기 실행 또는 스트리밍 작업인지 여부: 아니요.
  • 이 메서드에 대한 필터:: protoPayload.methodName="google.firestore.v1.Firestore.Rollback"

RunAggregationQuery

RunQuery

UpdateDocument

  • 메서드: google.firestore.v1.Firestore.UpdateDocument
  • 감사 로그 유형: 데이터 액세스
  • 권한:
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • 메서드가 장기 실행 또는 스트리밍 작업인지 여부: 아니요.
  • 이 메서드에 대한 필터:: protoPayload.methodName="google.firestore.v1.Firestore.UpdateDocument"

Write

  • 메서드: google.firestore.v1.Firestore.Write
  • 감사 로그 유형: 데이터 액세스
  • 권한:
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • 메서드가 장기 실행 또는 스트리밍 작업인지 여부: 스트리밍 RPC
  • 이 메서드에 대한 필터:: protoPayload.methodName="google.firestore.v1.Firestore.Write"

google.firestore.v1beta1.Firestore

다음 감사 로그는 google.firestore.v1beta1.Firestore에 속하는 메서드와 연결되어 있습니다.

BatchGetDocuments

BatchWrite

  • 메서드: google.firestore.v1beta1.Firestore.BatchWrite
  • 감사 로그 유형: 데이터 액세스
  • 권한:
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • 메서드가 장기 실행 또는 스트리밍 작업인지 여부: 아니요.
  • 이 메서드에 대한 필터:: protoPayload.methodName="google.firestore.v1beta1.Firestore.BatchWrite"

BeginTransaction

Commit

  • 메서드: google.firestore.v1beta1.Firestore.Commit
  • 감사 로그 유형: 데이터 액세스
  • 권한:
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • 메서드가 장기 실행 또는 스트리밍 작업인지 여부: 아니요.
  • 이 메서드에 대한 필터:: protoPayload.methodName="google.firestore.v1beta1.Firestore.Commit"

CreateDocument

  • 메서드: google.firestore.v1beta1.Firestore.CreateDocument
  • 감사 로그 유형: 데이터 액세스
  • 권한:
    • datastore.entities.allocateIds - DATA_WRITE
    • datastore.entities.create - DATA_WRITE
  • 메서드가 장기 실행 또는 스트리밍 작업인지 여부: 아니요.
  • 이 메서드에 대한 필터:: protoPayload.methodName="google.firestore.v1beta1.Firestore.CreateDocument"

DeleteDocument

GetDocument

  • 메서드: google.firestore.v1beta1.Firestore.GetDocument
  • 감사 로그 유형: 데이터 액세스
  • 권한:
    • datastore.entities.get - DATA_READ
  • 메서드가 장기 실행 또는 스트리밍 작업인지 여부: 아니요.
  • 이 메서드에 대한 필터:: protoPayload.methodName="google.firestore.v1beta1.Firestore.GetDocument"

ListCollectionIds

ListDocuments

  • 메서드: google.firestore.v1beta1.Firestore.ListDocuments
  • 감사 로그 유형: 데이터 액세스
  • 권한:
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • 메서드가 장기 실행 또는 스트리밍 작업인지 여부: 아니요.
  • 이 메서드에 대한 필터:: protoPayload.methodName="google.firestore.v1beta1.Firestore.ListDocuments"

PartitionQuery

  • 메서드: google.firestore.v1beta1.Firestore.PartitionQuery
  • 감사 로그 유형: 데이터 액세스
  • 권한:
    • datastore.entities.get - DATA_READ
    • datastore.entities.list - DATA_READ
  • 메서드가 장기 실행 또는 스트리밍 작업인지 여부: 아니요.
  • 이 메서드에 대한 필터:: protoPayload.methodName="google.firestore.v1beta1.Firestore.PartitionQuery"

Rollback

  • 메서드: google.firestore.v1beta1.Firestore.Rollback
  • 감사 로그 유형: 데이터 액세스
  • 권한:
    • datastore.databases.get - DATA_READ
  • 메서드가 장기 실행 또는 스트리밍 작업인지 여부: 아니요.
  • 이 메서드에 대한 필터:: protoPayload.methodName="google.firestore.v1beta1.Firestore.Rollback"

RunAggregationQuery

RunQuery

UpdateDocument

  • 메서드: google.firestore.v1beta1.Firestore.UpdateDocument
  • 감사 로그 유형: 데이터 액세스
  • 권한:
    • datastore.entities.create - DATA_WRITE
    • datastore.entities.update - DATA_WRITE
  • 메서드가 장기 실행 또는 스트리밍 작업인지 여부: 아니요.
  • 이 메서드에 대한 필터:: protoPayload.methodName="google.firestore.v1beta1.Firestore.UpdateDocument"

google.longrunning.Operations

다음 감사 로그는 google.longrunning.Operations에 속하는 메서드와 연결되어 있습니다.

CancelOperation

  • 메서드: google.longrunning.Operations.CancelOperation
  • 감사 로그 유형: 관리자 활동
  • 권한:
    • datastore.operations.cancel - ADMIN_WRITE
  • 메서드가 장기 실행 또는 스트리밍 작업인지 여부: 아니요.
  • 이 메서드에 대한 필터:: protoPayload.methodName="google.longrunning.Operations.CancelOperation"

DeleteOperation

  • 메서드: google.longrunning.Operations.DeleteOperation
  • 감사 로그 유형: 관리자 활동
  • 권한:
    • datastore.operations.delete - ADMIN_WRITE
  • 메서드가 장기 실행 또는 스트리밍 작업인지 여부: 아니요.
  • 이 메서드에 대한 필터:: protoPayload.methodName="google.longrunning.Operations.DeleteOperation"

GetOperation

  • 메서드: google.longrunning.Operations.GetOperation
  • 감사 로그 유형: 데이터 액세스
  • 권한:
    • datastore.operations.get - ADMIN_READ
  • 메서드가 장기 실행 또는 스트리밍 작업인지 여부: 아니요.
  • 이 메서드에 대한 필터:: protoPayload.methodName="google.longrunning.Operations.GetOperation"

ListOperations

  • 메서드: google.longrunning.Operations.ListOperations
  • 감사 로그 유형: 데이터 액세스
  • 권한:
    • datastore.operations.list - ADMIN_READ
  • 메서드가 장기 실행 또는 스트리밍 작업인지 여부: 아니요.
  • 이 메서드에 대한 필터:: protoPayload.methodName="google.longrunning.Operations.ListOperations"

요청 호출자 식별

감사 로그 항목에는 로깅 작업을 수행한 ID에 대한 정보가 포함됩니다. 요청 호출자를 식별하려면 AuditLog 객체 내에서 다음 필드를 참조하세요.

  • 호출자 ID는 AuthenticationInfo 필드에 보관됩니다. 여기에는 사용자의 principalEmail이 포함될 수 있습니다. 이 정보는 가끔 수정됩니다.

    JSON 웹 토큰(JWT)이 타사 인증에 사용된 경우 thirdPartyPrincipal 필드에는 토큰의 헤더와 페이로드가 포함됩니다. 예를 들어 Firebase 인증으로 인증된 요청의 감사 로그에는 해당 요청의 인증 토큰이 포함됩니다.

  • AuditLog 항목의 requestMetadata 객체 내에 있는 callerIp 필드에는 호출자의 IP 주소가 포함됩니다.