Eventarc 트리거는 특정 이벤트나 이벤트 집합에 관심이 있음을 선언하므로 특정 이벤트를 캡처하고 여기에서 조치를 취할 수 있습니다.
type=google.cloud.audit.log.v1.written이 포함된 Eventarc 트리거는 트리거 필터 기준과 일치하는 감사 로그가 생성되면 요청을 대상에 보냅니다. 감사 로그 항목의 다음 값이 일치합니다.
- serviceName: 감사 로그를 작성한 서비스입니다.
- methodName: 감사되는 작업입니다.
- resourceName: 감사되는 리소스입니다.
감사 로그를 제공하는 Google Cloud 서비스 목록은 감사 로그를 생성하는Google Cloud 서비스를 참조하세요. google.cloud.audit.log.v1.written 이벤트 유형에 적용되는 이벤트 필터 값을 검색할 수도 있습니다.
이벤트 필터 식별
트리거를 만드는 데 필요한 정확한 이벤트 필터를 파악하려면 캡처할 이벤트를 생성한 후 해당하는 Cloud 감사 로그 항목을 확인합니다. 로그 항목의 데이터는 여러 항목에 걸쳐 분할 및 분산될 수 있습니다.
- 서비스에 대한 데이터 액세스 감사 로그 유형을 사용 설정했는지 확인합니다. - 감사가 기본적으로 사용 설정된 서비스는 나열되어 있지 않습니다. - 감사 로그 페이지의 기본 표에서 Google Cloud서비스를 선택합니다. 
- 로그 유형 탭에서 관리자 읽기, 데이터 읽기, 데이터 쓰기 체크박스를 선택한 다음 저장을 클릭합니다. 
 
- 이벤트 필터를 만들 작업을 수행하고 감사 로그 항목을 생성합니다. 예를 들어 Cloud Storage 버킷에 파일을 저장합니다. 
- Google Cloud 콘솔에서 로그 탐색기로 이동합니다. 
- 쿼리 빌더 창에서 쿼리를 빌드 및 실행하여 로그 항목을 필터링하고 결과를 가져옵니다. 예를 들면 다음과 같습니다. - resource.type="gcs_bucket" resource.labels.bucket_name="eventarc-bucket"- 로그를 검색해 미세 조정하는 쿼리를 빌드하는 방법에 대한 자세한 내용은 Logging 쿼리 언어를 사용하여 쿼리 빌드를 참조하세요. 
- 하나의 로그 항목에 대한 전체 세부정보를 보려면 항목 시작 부분에 있는 펼치기 화살표(▸)를 클릭하세요. - 감사 로그 항목과 다른 로그 항목의 차이점은 - protoPayload필드입니다. 다음 예시에서는 로그 항목의 일부분이 생략되었고 일부 필드는 강조표시되어 있습니다.- { protoPayload:{ @type:"type.googleapis.com/google.cloud.audit.AuditLog", status:{}, authenticationInfo:{}, requestMetadata:{}, serviceName:"storage.googleapis.com", methodName:"storage.objects.create", authorizationInfo:[], resourceName:"projects/_/buckets/eventarc-bucket/objects/random.txt", resourceLocation:{} }, insertId:"il9evleafpdk", resource:{ type:"gcs_bucket", labels:{ project_id:"cloud-run-test", location:"us-central1", bucket_name:"eventarc-bucket" } }, timestamp:"2021-03-05T15:55:20.754688805Z", severity:"INFO", logName:"projects/cloud-run-test/logs/cloudaudit.googleapis.com%2Fdata_access", receiveTimestamp:"2021-03-05T15:55:20.884984611Z" } - 다음 정보를 사용하여 이 감사 로그 항목의 콘텐츠를 확인할 수 있습니다. - protoPayload.@type필드는- type.googleapis.com/google.cloud.audit.AuditLog입니다.
- logName필드는- cloudaudit.googleapis.com도메인을 포함합니다.
 
- protoPayload.serviceName필드는 감사 로그를 작성한 서비스입니다.
- protoPayload.methodName필드는 감사되는 작업입니다.
- protoPayload.resourceName필드는 감사되는 리소스입니다.
 - 감사 로그 항목에서 정보를 찾는 방법에 대한 자세한 내용은 감사 로그 이해를 참조하세요. 
이벤트 필터 값 검색
gcloud eventarc audit-logs-provider 명령어를 사용하여 google.cloud.audit.log.v1.written 이벤트 유형의 제공업체 serviceName 및 methodName 값을 살펴보고 나열할 수 있습니다.
서비스 이름을 나열하려면 다음 명령어를 실행합니다.
gcloud eventarc audit-logs-provider service-names list
그러면 google.cloud.audit.log.v1.written 이벤트 유형의 모든 serviceName 속성 값이 반환됩니다.
특정 서비스의 메서드 이름을 나열하려면 다음 명령어를 실행합니다.
gcloud eventarc audit-logs-provider method-names list \ --service-name=SERVICE_NAME
SERVICE_NAME을 serviceName 값(예: bigquery.googleapis.com)으로 바꿉니다.
Eventarc 트리거 예시
다음 예시에서는 Workflows 대상에 cal-workflows-trigger라는 트리거를 만듭니다. 트리거는 bigquery.googleapis.com에서 작성한 감사 로그와 google.cloud.bigquery.v2.JobService.InsertJob로 식별된 작업을 필터링합니다.
gcloud eventarc triggers create cal-workflows-trigger \ --location=us-central1 \ --destination-workflow=my-workflow \ --destination-workflow-location=europe-west4 \ --event-filters="type=google.cloud.audit.log.v1.written" \ --event-filters="serviceName=bigquery.googleapis.com" \ --event-filters="methodName=google.cloud.bigquery.v2.JobService.InsertJob" \ --service-account=${TRIGGER_SA}@${PROJECT_ID}.iam.gserviceaccount.com
다음 예시에서는 Cloud Run 대상에 cal-run-trigger라는 트리거를 만듭니다. 트리거는 workflows.googleapis.com에서 작성한 감사 로그와 google.cloud.workflows.v1.Workflows.GetWorkflow로 식별된 작업을 필터링합니다.
gcloud eventarc triggers create cal-run-trigger \ --location=us-central1 \ --destination-run-service=helloworld-events \ --destination-run-region=us-central1 \ --event-filters="type=google.cloud.audit.log.v1.written" \ --event-filters="serviceName=workflows.googleapis.com" \ --event-filters="methodName=google.cloud.workflows.v1.Workflows.GetWorkflow" \ --event-filters="resourceName=projects/_/locations/us-central1/workflows/test-workflow" \ --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com
과도하게 큰 감사 로그 항목
Cloud Logging은 사용량 한도보다 큰 감사 로그 항목을 분할하고 원래 감사 로그 항목에 포함된 데이터를 여러 분할 항목에 배포합니다. 로그 항목에 split 필드가 포함된 경우 더 큰 원본 로그 항목을 분할한 결과입니다. split 필드는 관련 분할 항목을 식별하는 데 필요한 정보가 포함된 LogSplit 객체입니다.
각 분할 항목에는 Cloud 감사 로그 이벤트를 필터링하는 데 도움이 되는 동일한 serviceName, methodName, resourceName 값이 포함된 protoPayload가 있습니다. Eventarc 트리거는 각 분할 항목의 이벤트를 전달합니다.
여러 로그 항목으로 분할된 감사 로그 항목이 있으면 LogEntry의 모든 필드를 필터링할 수 있습니다. 예를 들어 일련의 분할 로그 항목에 첫 번째 항목이 필요하면 split.index=0을 사용하여 첫 번째 항목의 위치를 표시해서 다음 gcloud CLI 명령어를 실행하면 됩니다.
gcloud logging read "split.index=0"
항목과 샘플 쿼리 인식 방법을 포함한 자세한 내용은 감사 로그 항목 분할을 참조하세요.