Eventarc 触发器声明您对某个事件或一组事件感兴趣,以便您捕获特定事件并对其执行操作。当创建与触发器的过滤条件匹配的审核日志时,type=google.cloud.audit.log.v1.written
的 Eventarc 触发器会向目标发送请求。系统会对审核日志条目中的以下值进行匹配:
serviceName
:写入审核日志的服务methodName
:正在审核的操作resourceName
:正在审核的资源
如需查看可提供审核日志的 Google Cloud 服务的列表,请参阅具有审核日志的 Google Cloud 服务。您还可以检索适用于 google.cloud.audit.log.v1.written
事件类型的事件过滤条件值。
确定事件过滤条件
如需确定创建触发器所需的确切事件过滤条件,请生成要捕获的事件,然后查看其对应的 Cloud Audit Logs 条目。请注意,一个日志条目中的数据可能会拆分并分布到多个条目中。
确保您已为服务启用数据访问审核日志类型。
请注意,其中未列出任何默认启用审核的服务。
在审核日志页面的主表格中,选择一个 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
对象,其中包含识别相关拆分条目所需的信息。
每个拆分条目都有一个 protoPayload
,其中包含相同的 serviceName
、methodName
和 resourceName
值,以帮助过滤 Cloud Audit Logs 事件。Eventarc 触发器会为每个拆分条目传送一个事件。
当您将一个审核日志条目拆分成多个日志条目后,可以过滤 LogEntry
中的任何字段。例如,如果您需要一系列拆分日志条目中的第一个条目,则可以运行以下 gcloud CLI 命令,并使用 split.index=0
指示第一个条目的位置:
gcloud logging read "split.index=0"
如需了解详情(包括如何识别条目和示例查询),请参阅拆分审核日志条目。