Spanner Omni 会写入审核日志,以记录 Spanner Omni 部署中的管理活动和数据访问。
审核日志可帮助您回答“哪些用户何时在何处执行过哪些操作?”这一问题。使用审核日志可帮助安全、审核和合规性实体监控 Spanner Omni 数据和系统,检查是否存在可能的漏洞或外部数据滥用。
准备工作
使用 TLS 或双向 TLS (mTLS) 加密配置 Spanner Omni 部署。如果您创建的部署未使用 TLS 或 mTLS 加密,则不会生成审核日志。如需了解如何创建使用 TLS 或 mTLS 加密的部署,请参阅以下内容:
审核日志类型
Spanner Omni 支持以下类型的审核日志。
管理员活动审核日志
管理员活动审核日志会记录修改部署配置或元数据的 API 调用。例如,当用户创建数据库时,Spanner Omni 会写入管理员活动审核日志。
对于配置了 TLS 和 mTLS 加密的部署,系统默认会生成管理员活动审核日志。您无法配置、排除或停用这些日志。
如需查看会写入管理员活动审核日志的方法列表,请参阅按权限类型列出的方法。
数据访问审核日志
数据访问审核日志会记录读取部署配置或元数据的 API 调用,以及创建、修改或读取用户数据的 API 调用。例如,当用户描述数据库、运行 SQL 查询或执行数据操纵语言 (DML) 语句时,Spanner Omni 会写入数据访问审核日志。
数据访问审核日志默认处于停用状态,因为它们可能很大。如需记录数据访问事件,请明确启用并配置这些事件。数据访问审核日志可帮助 Google 支持团队排查问题,因此我们建议您启用这些日志。
如需了解如何配置这些日志,请参阅配置数据访问审核日志。如需查看会写入数据访问审核日志的方法列表,请参阅按权限类型列出的方法。
系统事件审核日志
系统事件审核日志会记录系统在没有直接用户操作的情况下修改 Spanner Omni 资源配置的时间。例如,当系统自动优化新恢复的数据库或创建预定备份时,Spanner Omni 会写入系统事件审核日志。
对于配置了 TLS 和 mTLS 加密的部署,系统默认会生成系统事件审核日志。您无法配置、排除或停用这些日志。
如需详细了解生成这些日志的系统事件,请参阅系统事件。
配置数据访问审核日志
如需启用数据访问审核日志,请使用 Spanner Omni CLI 或 API 为部署配置 Identity and Access Management (IAM) 政策。您可以针对特定权限类型启用日志记录,并豁免特定用户,使其免于被记录。
所需权限
如需配置数据访问审核日志,您需要拥有 spanner.instances.setIamPolicy 权限。
如需查看数据访问审核日志配置,您需要拥有 spanner.instances.getIamPolicy 权限。
权限类型
API 方法会检查 IAM 权限,每项权限都具有关联的权限类型。配置数据访问审核日志时,请指定要记录哪些权限类型。权限类型分为以下几类:
数据访问权限类型:
ADMIN_READ:用于记录读取元数据或配置信息的 API 方法。例如,描述数据库。DATA_READ:记录读取用户数据的 API 方法。例如,执行 SQL 查询。DATA_WRITE:记录写入用户数据的 API 方法。例如,执行 DML 语句。
管理员活动权限类型:
ADMIN_WRITE:对于写入元数据或配置信息(例如创建数据库)的 API 方法,系统会检查此权限。这些操作会生成管理员活动审核日志,且无法配置。
如需详细了解权限类型,请参阅 Cloud Audit Logs 文档中的权限类型。
使用 Spanner Omni CLI 进行配置
如需使用 Spanner Omni CLI 配置数据访问审核日志,请创建一个 JSON 政策文件,其中列出要启用的日志类型和任何豁免的成员,然后应用该政策。
创建名为
policy.json的政策文件:{ "auditConfigs": [ { "auditLogConfigs": [ { "logType": "ADMIN_READ", "exemptedMembers": [ "USER_NAME" ] }, { "logType": "DATA_WRITE" }, { "logType": "DATA_READ" } ], "service": "spanner.googleapis.com" } ] }使用
spanner instances set-iam-policy命令应用政策:spanner instances set-iam-policy default policy.json
如需查看当前的数据访问审核日志配置,请运行以下命令:
spanner instances get-iam-policy default
如需查看有关常见配置使用情形的更多示例,请参阅 Cloud Audit Logs 文档中的配置数据访问审核日志。
系统事件
Spanner Omni 会针对 Spanner 的受管版本支持的大部分系统事件生成系统事件审核日志。如需了解详情,请参阅 Spanner 文档中的系统事件。
Spanner Omni 支持 CreateScheduledBackup 和 OptimizeRestoredDatabase 系统事件。不过,Spanner Omni 不支持 AutoscaleInstance 系统事件,因为 Spanner Omni 中没有自动扩缩功能。
审核日志文件和保留期限
Spanner Omni 会将审核日志写入 Spanner Omni 服务器的本地文件系统。
使用以下路径和命名惯例查找审核日志文件:
BASE_DIR/logs/PROCESS/audit.log.BUCKET.TIMESTAMP.PROCESS_ID
BASE_DIR:启动 Spanner Omni 部署时指定的基本目录。对于 Kubernetes 部署,此值默认为/spanner。PROCESS:Spanner Omni 在每个服务器上运行多个进程,例如server、zone_services、zonal_zone_services、zonal_server和base_services。审核日志会写入到生成它们的进程所对应的目录中。BUCKET:管理员活动和系统事件审核日志会写入required存储桶,而数据访问审核日志会写入default存储桶。TIMESTAMP:文件创建时的时间戳。PROCESS_ID:写入审核日志的进程的进程 ID。
当当前文件超过 50 MiB 或服务器进程重启时,Spanner Omni 会创建新的审核日志文件。它还会自动维护从 BASE_DIR/logs/PROCESS/audit.log.BUCKET 到正在写入的审核日志文件的符号链接。
对本地审核日志文件的访问权限由文件系统访问控制列表 (ACL) 控制。有权登录服务器并访问这些文件的任何人都可以查看审核日志。
我们建议您限制对 Spanner Omni 虚拟机的访问权限(例如,通过限制 SSH 访问权限和配置文件系统 ACL),以便只有经过授权的人员才能查看日志。为了实现长期存储、审核和合规性,请使用日志记录代理(例如 Fluentd)收集审核日志并将其导出到外部日志记录系统,例如 AWS CloudWatch、Grafana Loki、Elasticsearch、Datadog、Splunk 或 Cloud Monitoring。
文件保留
Spanner Omni 会针对本地审核日志文件强制执行基于大小和基于期限的保留政策:
大小限制:审核日志文件会一直保留,直到其总磁盘使用量超过 1 GB。如果日志目录使用单独的磁盘,则审核日志文件将分配到该磁盘总空间的 25% 作为配额。
期限限制:审核日志文件最多保留 14 天,前提是未超出大小限制。
当达到任一限制时,Spanner Omni 会先删除最旧的日志文件。如果您需要将审核日志保留 14 天以上,请将其导出到外部日志记录系统。
审核日志条目结构
Spanner Omni 审核日志条目采用 JSON 格式,并使用与 Spanner 相同的结构定义。如需了解详情,请参阅 Cloud Audit Logs 文档中的审核日志条目结构。
日志名称
与多租户托管版 Spanner 不同,Spanner Omni 在专用服务器上以单租户部署运行。由于这些服务器上没有其他租户或项目,因此所有审核日志条目都使用项目标识符 default。
projects/default/logs/cloudaudit.googleapis.com/activity
projects/default/logs/cloudaudit.googleapis.com/data_access
projects/default/logs/cloudaudit.googleapis.com/system_event
调用方身份
审核日志会记录执行所记录操作的用户的身份。
调用者的身份存储在 AuditLog 对象的 AuthenticationInfo 字段中。
在 Spanner Omni 中,调用者的身份是执行 API 调用的已通过身份验证的用户的用户名。如需了解如何创建和管理用户,请参阅身份验证和授权。
调用方的 IP 地址
Spanner Omni 不支持在审核日志中记录调用者的 IP 地址。
方法(按权限类型)
当您调用某个 API 方法时,Spanner Omni 会根据执行该方法所需的权限类型生成审核日志。需要 ADMIN_READ、DATA_READ 或 DATA_WRITE 权限的方法会生成数据访问审核日志,而需要 ADMIN_WRITE 权限的方法会生成管理员活动审核日志。
Spanner Omni 支持大多数 Cloud Spanner API 方法。如需了解 Spanner 和 Spanner Omni 共享的方法的审核日志记录分类,请参阅 Spanner 文档中的按权限类型列出的方法。
Spanner Omni 还引入了可生成审核日志的独特 API 方法。标记为长时间运行的操作 (LRO) 的方法通常会生成两个审核日志条目:一个在操作开始时生成,另一个在操作结束时生成。如需了解详情,请参阅 Cloud Audit Logs 文档中的长时间运行的操作。
| 权限类型 | 方法 |
|---|---|
ADMIN_READ |
google.spanner.omni.v1.OmniAdmin.GetLocationgoogle.spanner.omni.v1.OmniAdmin.ListLocationgoogle.spanner.omni.v1.OmniAdmin.GetLocationDistancegoogle.spanner.omni.v1.OmniAdmin.ListLocationDistancegoogle.spanner.omni.v1.OmniAdmin.GetZonegoogle.spanner.omni.v1.OmniAdmin.ListZonesgoogle.spanner.omni.v1.OmniAdmin.GetServergoogle.spanner.omni.v1.OmniAdmin.ListServersgoogle.spanner.omni.v1.OmniAdmin.GetDeploymentgoogle.spanner.omni.v1.OmniAdmin.ListBackupDescriptorsgoogle.spanner.omni.v1.OmniAdmin.GetExternalStoragegoogle.spanner.omni.v1.OmniAdmin.ListExternalStoragesgoogle.spanner.omni.v1.OmniAdmin.GetIamPolicygoogle.spanner.omni.v1.UsersService.GetUsergoogle.spanner.omni.v1.UsersService.ListUsersgoogle.spanner.omni.v1.UsersService.GetRolegoogle.spanner.omni.v1.UsersService.ListRoles
|
ADMIN_WRITE |
google.spanner.omni.v1.OmniAdmin.CreateLocationgoogle.spanner.omni.v1.OmniAdmin.DeleteLocationgoogle.spanner.omni.v1.OmniAdmin.CreateLocationDistancegoogle.spanner.omni.v1.OmniAdmin.UpdateLocationDistancegoogle.spanner.omni.v1.OmniAdmin.DeleteLocationDistancegoogle.spanner.omni.v1.OmniAdmin.CreateZonegoogle.spanner.omni.v1.OmniAdmin.DeleteZonegoogle.spanner.omni.v1.OmniAdmin.CreateServergoogle.spanner.omni.v1.OmniAdmin.DeleteServergoogle.spanner.omni.v1.OmniAdmin.CreateExternalStoragegoogle.spanner.omni.v1.OmniAdmin.DeleteExternalStoragegoogle.spanner.omni.v1.OmniAdmin.SetIamPolicygoogle.spanner.omni.v1.OmniAdmin.ImportBackup (LRO)google.spanner.omni.v1.UsersService.CreateUsergoogle.spanner.omni.v1.UsersService.DeleteUsergoogle.spanner.omni.v1.UsersService.UpdateUser
|
DATA_READ |
google.spanner.omni.v1.ImportExportService.ExportDatabase
(LRO)
|
DATA_WRITE |
google.spanner.omni.v1.ImportExportService.ImportDatabase
(LRO)
|
不会生成审核日志的方法
与 Spanner 一样,Spanner Omni 也会从审核日志记录中排除相同的方法。排除这些方法的原因是,它们是高容量方法,涉及较高的日志生成和存储费用,审核价值较低,或者其他审核日志或平台日志已提供方法覆盖功能。如需查看这些排除方法的完整列表,请参阅 Spanner 文档中的豁免方法。
此外,由于 google.spanner.omni.v1.LoginService.Login 方法在身份验证和授权检查之前执行,因此不会生成审核日志。
处理用时
审核日志中的“处理时长”字段记录的是 API 的处理时长,例如 SQL 查询的执行时长,而不是写入审核日志的延迟时间。如需了解详情,请参阅 Spanner 文档中的处理时长。
与 Spanner 的托管版本比较
虽然 Spanner Omni 中的审核日志记录与 Spanner 共享核心概念和格式,但在日志的存储、配置和管理方式方面存在几个关键区别。
不同之处
日志目的地:Spanner Omni 会将审核日志直接写入 Spanner Omni 服务器的本地文件系统,而不是将其导出到 Cloud Logging。
配置:在 Spanner 中,您可以使用 Google Cloud 控制台、Google Cloud CLI 或 Identity and Access Management API 在项目级配置数据访问审核日志。在 Spanner Omni 中,您可以使用 Spanner Omni CLI 或 Spanner Omni API 配置数据访问审核日志。
TLS 和 mTLS 加密:Spanner 默认强制执行 TLS 加密,且无法停用。在 Spanner Omni 中,如果您选择在不使用 TLS 或 mTLS 加密的情况下进行部署,则系统不会生成审核日志。
保留:Spanner 审核日志会根据您的 Logging 保留设置保留在 Logging 中。Spanner Omni 会将本地审核日志文件保留最多 14 天,或者直到达到磁盘大小限制为止,并依靠您将日志导出到外部系统以进行长期存储。
相似之处
日志格式:两款产品均以 JSON 格式写入审核日志,遵循标准的 Google Cloud AuditLog 结构。
数据访问配置:这两款产品都允许您按权限类型(
ADMIN_READ、DATA_READ、DATA_WRITE)精细地启用数据访问审核日志,并支持免于记录特定用户。