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"
항목과 샘플 쿼리 인식 방법을 포함한 자세한 내용은 감사 로그 항목 분할을 참조하세요.