本页面介绍了 Cloud Audit Logs 中由 Compute Engine 创建的审核日志。
概览
Google Cloud 服务会写入审核日志,便于您了解在您的 Google Cloud 资源中“谁在何时何地执行了什么操作”。
Google Cloud 项目只包含直接属于 Google Cloud 项目的资源的审核日志。其他 Google Cloud 资源(例如文件夹、组织和结算账号)包含实体本身的审核日志。
如需大致了解 Cloud Audit Logs,请参阅 Cloud Audit Logs 概览。如需深入了解审核日志格式,请参阅了解审核日志。
可用的审核日志
Compute Engine 提供以下类型的审核日志:
-
管理员活动审核日志
包括写入元数据或配置信息的“管理员写入”操作。
您无法停用管理员活动审核日志。
-
数据访问审核日志
包括读取元数据或配置信息的“管理员读取”操作。 此外,还包括读取或写入用户提供的数据的“数据读取”和“数据写入”操作。
如需接收数据访问审核日志,您必须明确启用这些日志。
-
系统事件审核日志
标识修改资源配置的自动 Google Cloud 操作。
您无法停用系统事件审核日志。
如需查看审核日志类型的完整说明,请参阅审核日志类型。
审核的操作
下表汇总了与 Compute Engine 中的每种审核日志类型相对应的 API 操作:
审核日志类别 | 子类型 | Compute Engine 操作 | 示例 |
---|---|---|---|
管理员活动审核日志 | 不适用 |
|
|
数据访问审核日志1 | ADMIN_READ |
|
|
DATA_READ |
获取串行端口控制台的内容 | compute.instance.getSerialPortOutput |
|
系统事件审核日志 | 不适用 |
|
|
1数据访问审核日志:与其他服务的审核日志不同,Compute Engine 只有 ADMIN_READ
数据访问日志,一般不提供 DATA_READ
和 DATA_WRITE
日志。这是因为 DATA_READ
和 DATA_WRITE
日志仅用于 Cloud Storage、Spanner 和 Cloud SQL 等存储和管理用户数据的服务,这对 Compute Engine 而言不适用。这条规则有一个例外:instance.getSerialPortOutput
会生成 DATA_READ
日志,因为该方法直接从虚拟机实例读取数据。
2串行端口连接/断开连接:如需详细了解串行控制台审核日志,请参阅查看串行控制台审核日志。
审核日志中的数据隐去
审核日志会记录已执行的 API 操作的请求和响应数据。但在以下情况下,不会提供请求或响应信息,即这些信息会被遮盖:
- 对于
instance.setMetadata
和project.setCommonInstanceMetadata
API 请求,请求正文的元数据部分会被遮盖,以避免记录元数据中发送的敏感信息。 - 请求中的敏感字段会被遮盖,例如 SSL 证书的私钥和客户提供的磁盘加密密钥。
- 对于 get 和 list 响应,响应正文会被遮盖,以避免记录私密信息。
审核日志格式
审核日志条目包含以下对象:
日志条目本身,即类型为
LogEntry
的对象。以下是一些实用的字段:logName
包含资源 ID 和审核日志类型。resource
包含所审核操作的目标。timeStamp
包含所审核操作的时间。protoPayload
包含审核的信息。
审核日志记录数据,即保存在日志条目的
protoPayload
字段中的AuditLog
对象。(可选)服务专属的审核信息,即服务专属对象。对于早期集成,此对象保存在
AuditLog
对象的serviceData
字段中;之后的集成使用metadata
字段。
如需了解上述对象中的其他字段以及如何解读这些字段,请参阅了解审核日志。
日志名称
Cloud Audit Logs 日志名称包含资源标识符,指明了审核日志所属的 Google Cloud 项目或其他 Google Cloud 实体,以及日志是包含管理员活动、数据访问、政策拒绝还是系统事件审核日志记录数据。
以下是审核日志名称,包括资源标识符的变量:
projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fpolicy folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Factivity folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fdata_access folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fsystem_event folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fpolicy billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Factivity billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fdata_access billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fpolicy organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fdata_access organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fsystem_event organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fpolicy
服务名称
Compute Engine 审核日志使用以下服务名称:
compute.googleapis.com
ssh-serialport.googleapis.com
oslogin.googleapis.com
如需查看所有 Cloud Logging API 服务名称及其相应受监控的资源类型的列表,请参阅服务与资源的映射。
资源类型
Compute Engine 审核日志使用以下资源类型:
资源类型类别 | 说明 | 示例 |
---|---|---|
API 资源 | 此资源会记录 API 操作。 | api |
已审核的资源 | 此资源会记录 Google Cloud 操作。已审核的资源类型主要用于未归入其他类别的新操作。 | audited_resource |
自动扩缩器 | 此资源会在日志中记录自动扩缩器操作。 | autoscaler |
Deployment 资源 | 此资源会记录部署操作。 | deployment |
Cloud Deployment Manager 资源 (deployment_manager_* ) |
此资源会记录 Cloud Deployment Manager 操作。
|
|
Compute Engine 资源 (gce_* ) |
此资源会记录 Compute Engine 操作。
|
|
网络安全资源 | 此资源会记录网络安全政策操作。 | network_security_policy |
Cloud VPN 资源 (vpn_* ) |
此资源会记录 Cloud VPN 操作。 |
|
如需查看所有 Cloud Logging 受监控资源类型和说明信息的完整列表,请参阅受监控的资源类型。
调用方身份
调用方的 IP 地址保存在 AuditLog
对象的 RequestMetadata.caller_ip
字段中。Logging 可能会隐去某些调用方身份和 IP 地址。
如需了解在审核日志中隐去的信息,请参阅审核日志中的调用方身份。
启用审核日志记录
系统在任何情况下都会启用系统事件审核日志,无法停用。
系统在任何情况下都会启用管理员活动审核日志,无法停用。
数据访问审核日志默认处于停用状态,除非明确启用,否则无法向其中写入数据(BigQuery 数据访问审核日志是一个例外,无法停用)。
如需了解如何启用部分或全部数据访问审核日志,请参阅启用数据访问审核日志。
权限和角色
IAM 权限和角色决定了您能否访问 Google Cloud 资源中的审核日志数据。
在决定哪些特定于 Logging 的权限和角色适用于您的使用场景时,请考虑以下因素:
Logs Viewer 角色 (
roles/logging.viewer
) 为您提供对管理员活动、政策拒绝和系统事件审核日志的只读权限。如果您只具有此角色,则无法查看_Default
存储桶中的数据访问审核日志。Private Logs Viewer 角色 (
(roles/logging.privateLogViewer
) 包含roles/logging.viewer
具有的权限,以及读取_Default
存储桶中的数据访问审核日志的权限。请注意,如果这些私密日志存储在用户定义的存储桶中,有权读取这些存储桶中的日志的任何用户都可以读取这些私密日志。如需详细了解日志存储桶,请参阅路由和存储概览。
如需详细了解适用于审核日志数据的 IAM 权限和角色,请参阅使用 IAM 进行访问权限控制。
查看日志
您可以查询所有审核日志,也可以按其审核日志名称来查询日志。审核日志名称包含您要查看其审核日志记录信息的 Google Cloud 项目、文件夹、结算账号或组织的资源标识符。您的查询可以指定已编入索引的 LogEntry
字段,如果您使用支持 SQL 查询的 Log Analytics 页面,则您可以以图表形式查看查询结果。
如需详细了解如何查询日志,请参阅以下页面:
您可以使用 Google Cloud 控制台、Google Cloud CLI 或 Logging API 查看 Cloud Logging 中的审核日志。控制台
在 Google Cloud 控制台中,您可以使用 Logs Explorer 来检索 Google Cloud 项目、文件夹或组织的审核日志条目:
-
在 Google Cloud 控制台的导航面板中,选择 Logging,然后选择 Logs Explorer:
选择现有的 Google Cloud 项目、文件夹或组织。
如需显示所有审核日志,请在查询编辑器字段中输入以下任一查询,然后点击运行查询:
logName:"cloudaudit.googleapis.com"
protoPayload."@type"="type.googleapis.com/google.cloud.audit.AuditLog"
如需显示特定资源和审核日志类型的审核日志,请在查询构建器窗格中执行以下操作:
在资源类型中,选择要查看其审核日志的 Google Cloud 资源。
在日志名称中,选择要查看的审核日志类型:
- 对于管理员活动审核日志,选择 activity。
- 对于数据访问审核日志,选择 data_access。
- 对于系统事件审核日志,选择 system_event。
- 对于政策拒绝审核日志,选择 policy。
点击运行查询。
如果您没有看到这些选项,则表示 Google Cloud 项目、文件夹或组织中没有该类型的任何审核日志。
如果您在尝试从 Logs Explorer 中查看日志时遇到问题,请参阅问题排查信息。
如需详细了解如何使用 Logs Explorer 进行查询,请参阅在 Logs Explorer 中构建查询。 如需了解如何使用 Duet AI 在 Logs Explorer 中汇总日志条目,请参阅在 Duet AI 协助下汇总日志条目。
gcloud
Google Cloud CLI 为 Logging API 提供了命令行界面。在每个日志名称中提供有效的资源标识符。例如,如果您的查询包含 PROJECT_ID,则您提供的项目标识符必须引用当前选择的 Google Cloud 项目。
如需读取 Google Cloud 项目级层审核日志条目,请运行以下命令:
gcloud logging read "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" \ --project=PROJECT_ID
如需读取文件夹级审核日志条目,请运行以下命令:
gcloud logging read "logName : folders/FOLDER_ID/logs/cloudaudit.googleapis.com" \ --folder=FOLDER_ID
如需读取组织级审核日志条目,请运行以下命令:
gcloud logging read "logName : organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com" \ --organization=ORGANIZATION_ID
如需读取 Cloud Billing 账号级层审核日志条目,请运行以下命令:
gcloud logging read "logName : billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com" \ --billing-account=BILLING_ACCOUNT_ID
在命令中添加 --freshness
标志可读取超过 1 天的日志。
如需详细了解如何使用 gcloud CLI,请参阅 gcloud logging read
。
API
构建查询时,请在每个日志名称中提供有效的资源标识符。例如,如果您的查询包含 PROJECT_ID,则您提供的项目标识符必须引用当前选择的 Google Cloud 项目。
例如,要使用 Logging API 查看项目级的审核日志条目,请执行以下操作:
转到
entries.list
方法文档中的试用此 API 部分。将以下内容添加到试用此 API 表单的请求正文部分。点击此预填充的表单后,系统会自动填充请求正文,但您需要在每个日志名称中提供一个有效的 PROJECT_ID。
{ "resourceNames": [ "projects/PROJECT_ID" ], "pageSize": 5, "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" }
点击执行。
查询示例
如需查找 Compute Engine 的审核日志,请在日志浏览器中使用以下查询:
查询名称 | 表达式 |
---|---|
主机错误 | resource.type="gce_instance" protoPayload.serviceName="compute.googleapis.com" (protoPayload.methodName:"compute.instances.hostError" OR operation.producer:"compute.instances.hostError") log_id("cloudaudit.googleapis.com/system_event") resource.labels.instance_id="INSTANCE_ID" severity="INFO" |
宿主机维护 | resource.type="gce_instance" protoPayload.serviceName="compute.googleapis.com" (protoPayload.methodName:"OnHostMaintenance" OR operation.producer:"OnHostMaintenance") log_id("cloudaudit.googleapis.com/system_event") resource.labels.instance_id="INSTANCE_ID" severity=INFO |
主机已迁移 | resource.type="gce_instance" protoPayload.serviceName="compute.googleapis.com" (protoPayload.methodName:"compute.instances.migrateOnHostMaintenance" OR operation.producer:"compute.instances.migrateOnHostMaintenance") log_id("cloudaudit.googleapis.com/system_event") resource.labels.instance_id="INSTANCE_ID" severity=INFO |
实例被终止或被抢占 | resource.type="gce_instance" protoPayload.methodName=~"compute.instances.(guestTerminate|preempted)" log_id("cloudaudit.googleapis.com/activity") resource.labels.instance_id="INSTANCE_ID" |
实例被客机操作系统终止 | resource.type="gce_instance" protoPayload.serviceName="compute.googleapis.com" (protoPayload.methodName:"compute.instances.guestTerminate" OR operation.producer:"compute.instances.guestTerminate") log_id("cloudaudit.googleapis.com/system_event") resource.labels.instance_id="INSTANCE_ID" severity=INFO |
实例在主机维护时被终止 | resource.type="gce_instance" protoPayload.serviceName="compute.googleapis.com" (protoPayload.methodName:"compute.instances.terminateOnHostMaintenance" OR operation.producer:"compute.instances.terminateOnHostMaintenance") log_id("cloudaudit.googleapis.com/system_event") resource.labels.instance_id="INSTANCE_ID" severity=INFO |
已创建实例 | resource.type="gce_instance" protoPayload.methodName:"compute.instances.insert" log_id("cloudaudit.googleapis.com/activity") protoPayload.request.name="INSTANCE_NAME" |
已删除实例名称 | resource.type="gce_instance" protoPayload.methodName:"compute.instances.delete" log_id("cloudaudit.googleapis.com/activity") protoPayload.resourceName:"INSTANCE_NAME" |
已删除实例 ID | resource.type="gce_instance" protoPayload.methodName:"compute.instances.delete" log_id("cloudaudit.googleapis.com/activity") resource.labels.instance_id="INSTANCE_ID" |
已重启实例 | resource.type="gce_instance" protoPayload.methodName=~ "compute.instances.(stop|reset|automaticRestart| guestTerminate|instanceManagerHaltForRestart)" (log_id("cloudaudit.googleapis.com/activity") OR log_id("cloudaudit.googleapis.com/system_event")) resource.labels.instance_id="INSTANCE_ID" |
已创建永久性磁盘 | resource.type="gce_disk" protoPayload.methodName:"compute.disks.insert" log_id("cloudaudit.googleapis.com/activity") protoPayload.request.name="PD_NAME" |
已删除永久性磁盘 | resource.type="gce_disk" protoPayload.methodName:"compute.disks.delete" log_id("cloudaudit.googleapis.com/activity") protoPayload.resourceName="PD_NAME" |
在单租户节点中添加的节点 | resource.type="gce_node_group" log_id("cloudaudit.googleapis.com/activity") protoPayload.methodName=~("compute.nodeGroups.addNodes" OR "compute.nodeGroups.insert") resource.labels.node_group_id="NODE_GROUP_ID" |
单租户节点中的自动扩缩事件 | resource.type="gce_node_group" log_id("cloudaudit.googleapis.com/system_event") protoPayload.methodName=~("compute.nodeGroups.deleteNodes" OR "compute.nodeGroups.addNodes") resource.labels.node_group_id="NODE_GROUP_ID" |
已手动截取快照 | resource.type="gce_disk" log_id("cloudaudit.googleapis.com/activity") protoPayload.methodName:"compute.disks.createSnapshot" protoPayload.request.sourceDisk:"PD_NAME" protoPayload.request.name="SNAPSHOT_NAME" |
已截取计划快照 | resource.type="gce_disk" log_id("cloudaudit.googleapis.com/system_event") protoPayload.methodName="ScheduledSnapshots" protoPayload.response.operationType="createSnapshot" protoPayload.response.targetLink="PD_NAME" |
已手动删除快照 | resource.type="gce_snapshot" log_id("cloudaudit.googleapis.com/activity") protoPayload.methodName:"compute.snapshots.delete" protoPayload.resourceName:"SNAPSHOT_NAME" |
已创建快照时间表 | resource.type="gce_resource_policy" log_id("cloudaudit.googleapis.com/activity") protoPayload.methodName:"compute.resourcePolicies.insert" protoPayload.request.name="SCHEDULE_NAME" |
已删除快照时间表 | resource.type="gce_resource_policy" log_id("cloudaudit.googleapis.com/activity") protoPayload.methodName:"compute.resourcePolicies.delete" protoPayload.request.name="SCHEDULE_NAME" |
已附加快照时间表 | resource.type="gce_disk" log_id("cloudaudit.googleapis.com/activity") protoPayload.methodName:"compute.disks.addResourcePolicies" protoPayload.request.resourcePolicys:"SCHEDULE_NAME" protoPayload.resourceName:"PD_NAME" |
已分离快照时间表 | resource.type="gce_disk" log_id("cloudaudit.googleapis.com/activity") protoPayload.methodName:"compute.disks.removeResourcePolicies" protoPayload.request.resourcePolicys:"SCHEDULE_NAME" protoPayload.resourceName:"PD_NAME" |
已在实例组中移除或添加实例 | resource.type="gce_instance_group" protoPayload.methodName:"compute.instanceGroups.*" log_id("cloudaudit.googleapis.com/activity") resource.labels.instance_group_name="INSTANCE_GROUP_NAME" |
已为代管式实例组设置或更新实例模板 | resource.type="gce_instance_group_manager" log_id("cloudaudit.googleapis.com/activity") protoPayload.methodName="v1.compute.instanceGroupManagers.setInstanceTemplate" resource.labels.instance_group_manager_name="INSTANCE_GROUP_NAME" |
代管式实例组自动扩缩器缩容和扩容 | resource.type="autoscaler" resource.labels.project_id="PROJECT" resource.labels.autoscaler_name="AUTOSCALER_NAME" |
已删除防火墙规则 | resource.type="gce_firewall_rule" AND log_id("cloudaudit.googleapis.com/activity") AND protoPayload.methodName:"firewalls.delete" |
如需使用示例查询,请执行以下操作:
将变量替换为您自己的项目信息,然后使用剪贴板图标 content_copy 复制表达式。
-
在 Google Cloud 控制台的导航面板中,选择 Logging,然后选择 Logs Explorer:
启用显示查询以打开查询编辑器字段,然后将表达式粘贴到查询编辑器字段中:
点击运行查询。查询结果窗格中会列出与您的查询匹配的日志。
路由审核日志
您可以将审核日志路由到受支持的目标位置,方式与路由其他类型的日志相同。以下是您可能需要路由审核日志的一些原因:
如需长时间保留审核日志或使用更强大的搜索功能,您可以将审核日志的副本路由到 Cloud Storage、BigQuery 或 Pub/Sub。您可以使用 Pub/Sub 将内容路由到其他应用、其他代码库和第三方工具。
如需管理整个组织范围内与您相关的审核日志,您可以创建一个汇总接收器,以便从组织中的任意或所有 Google Cloud 项目路由日志。
- 如果启用的数据访问审核日志会导致 Google Cloud 项目超出日志配额,您可以创建接收器,以从 Logging 中排除数据访问审核日志。
如需了解如何路由日志,请参阅将日志路由到支持的目的地。
价格
如需详细了解价格,请参阅 Cloud Logging 价格摘要。