本页面介绍 Cloud SQL 中使用 SQL Server 审核功能的数据库审核。
概览
在 Cloud SQL 中,SQL Server 审核功能包括:
- 创建服务器审核规范
- 跟踪和记录服务器级和数据库级事件
如需详细了解 SQL Server 审核的功能,请参阅 SQL Server 审核(数据库引擎)。
准备工作
在启用数据库审核之前,请查看本部分中的前提条件。
用于审核文件的 Cloud Storage 存储桶
审核文件(审核日志)会上传到 Cloud Storage 存储桶位置。因此,您可能需要创建 Google Cloud 账号所拥有的存储桶。
或者,您也可以使用其他账号拥有的存储桶位置。当您启用审核,如果您拥有必要的权限,您会自动获得 roles/storage.objectAdmin
角色,用于将审核文件上传到给定服务账号的存储桶位置。如果您没有必要的权限,则必须在稍后为服务账号授予这些权限。
启用审核的有效用户
如需启用审核并创建审核规范,必须有默认的 sqlserver
用户。当您创建 Cloud SQL for SQL Server 实例时,系统会为您创建默认 sqlserver
用户。
启用审核
启用审核时,需要指定 Cloud Storage 位置。以下是可选信息:
- 实例上的日志保留期限
- 上传间隔时间(上传频率)
控制台
-
在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。
- 如需打开实例的概览页面,请点击实例名称。
- 点击修改。
- 在自定义实例部分中,点击标志和参数。
- 选中启用 SQL Server 审核旁边的复选框。
- 指定 Cloud Storage 存储桶作为审核文件上传到的目标位置。
- 点击高级选项。
- (可选)指定日志保留的天数(1 到 7 天;默认为 7 天)。
- (可选)指定上传日志(审核文件)的频率,以分钟为单位(1-720 分钟;默认为 10 分钟)。
- 点击保存以应用更改。
gcloud
以下命令可启用审核:
gcloud sql instances patch INSTANCE_NAME --audit-bucket-path=gs://my-bucket --audit-retention-interval=24h --audit-upload-interval=10m
下表总结了此操作的 gcloud
参数:
参数 | 说明 | 允许使用的值 | 默认值 |
--audit-bucket-path |
必需。审核文件上传到的目标位置(作为 Cloud Storage 存储桶)。 | 如果停用审核,则为空,否则为以 gs:// 开头的存储桶路径。 |
空(因为审核默认处于停用状态)。 |
--audit-retention-interval |
可选。磁盘上的审核日志保留天数。 | 1 到 7 天。仅允许使用天数。 | 7 天。 |
--audit-upload-interval |
可选。上传审核日志(审核文件)的频率。 | 1-720 分钟。 | 10 分钟。 |
REST v1
使用 REST API,您可以为实例启用审核。如以下请求原型所示,您可以指定 Cloud Storage 存储桶、审核文件保留天数以及审核文件的上传频率。只有存储桶位置是必需的。如需了解详情,请参阅 SqlServerAuditConfig:
{ "databaseVersion":"database-version", "name":"instance-id", "region":"region", "rootPassword":"password", "settings":{ "tier":"machine-type", "sqlServerAuditConfig":{ "bucket":"gs://mybucket", "retentionInterval":"24h", "uploadInterval":"10m" } } }
REST v1beta4
使用 REST API,您可以为实例启用审核。如以下请求原型所示,您可以指定 Cloud Storage 存储桶、审核文件保留天数以及审核文件的上传频率。只有存储桶位置是必需的。如需了解详情,请参阅 SqlServerAuditConfig:
{ "databaseVersion":"database-version", "name":"instance-id", "region":"region", "rootPassword":"password", "settings":{ "tier":"machine-type", "sqlServerAuditConfig":{ "bucket":"gs://mybucket", "retentionInterval":"24h", "uploadInterval":"10m" } } }
停用审核
本部分包含停用审核的选项。停用审核后,所有审核文件(包括尚未上传的文件)都会从实例中删除。此外,所有服务器审核都会被停用,如果要恢复审核,必须重新启用。上传到 Cloud Storage 存储桶的审核日志可能会保留,具体取决于存储桶的保留设置。
以下是停用审核的选项。
控制台
-
在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。
- 如需打开实例的概览页面,请点击实例名称。
- 点击修改。
- 在自定义实例部分中,点击标志和参数。
- 取消选中启用 SQL Server 审核旁边的复选框。
- 点击保存以应用更改。
gcloud
以下命令(省略了 --audit-bucket-path
参数的值)会停用审核:
gcloud sql instances patch INSTANCE_NAME --audit-bucket-path=
REST v1
以下(省略了 sqlServerAuditConfig
对象的字段)是停用审核的请求原型:
{ "databaseVersion":"database-version", "name":"instance-id", "region":"region", "rootPassword":"password", "settings":{ "tier":"machine-type", "sqlServerAuditConfig":{ } } }
REST v1beta4
以下(省略了 sqlServerAuditConfig
对象的字段)是停用审核的请求原型:
{ "databaseVersion":"database-version", "name":"instance-id", "region":"region", "rootPassword":"password", "settings":{ "tier":"machine-type", "sqlServerAuditConfig":{ } } }
自动上传审核文件
启用审核后,生成的审核文件将自动上传到指定的 Cloud Storage 存储桶。
生成的审核文件也会与实例一起存储,直到配置的保留期限(间隔时间)到期。超过该期限后,审核文件(甚至无法上传的文件)会永久删除。
创建服务器审核
启用审核后,默认的 sqlserver
用户具有创建、修改和删除服务器审核的权限。
使用 CREATE SERVER AUDIT 命令定义新的服务器审核。您还可以使用 SQL Server Management Studio (SSMS) 的界面来创建服务器审核。
系统会为所有服务器审核强制执行以下参数类别:
参数类别 | 允许使用的值 |
审核日志失败时 | 继续或失败 |
审核目标位置 | 文件 |
路径 | /var/opt/mssql/audit
|
文件大小上限 | 2-50 MB |
轮替文件数上限 | 必须为:未配置 |
文件数上限 | 必须为:未配置 |
预留磁盘空间 | 停用 |
读取审核
从实例读取审核
如需从服务器审核创建的审核文件中检索数据,您可以使用以下存储过程:msdb.dbo.gcloudsql_fn_get_audit_file
。msdb.dbo.gcloudsql_fn_get_audit_file
过程接受与 sys.fn_get_audit_file
函数相同的参数。
如需了解如何使用该存储过程,请参阅 sys.fn_get_audit_file
。
以下示例演示了如何使用 msdb.dbo.gcloudsql_fn_get_audit_file
过程检索审核数据:
SELECT event_time, statement FROM msdb.dbo.gcloudsql_fn_get_audit_file('/var/opt/mssql/audit/*', NULL, NULL) WHERE statement LIKE '%INSERT%'
从存储桶读取审核
如需从 Cloud Storage 存储桶读取审核,您可以将文件从存储桶下载到 SQL Server 实例。该 SQL Server 实例可以是:
- Compute Engine Windows 实例
- Compute Engine Linux 实例
- 运行 SQL Server 的其他类型的实例
从存储桶下载的审核文件应转移到该实例可访问的位置,例如其本地磁盘。然后,如需从审核文件返回信息,请使用 serveradmin 固定服务器角色的成员运行 sys.fn_get_audit_file
函数。例如,在 Windows 实例中,如果您将审核文件转移到 D:\Audit
,则可以使用类似如下的命令:
SELECT event_time, statement FROM sys.fn_get_audit_file('D:\Audit\*.*', NULL, NULL) WHERE statement LIKE '%INSERT%'
监控指标
您可以监控作为 Cloud SQL 指标(通过 Metrics Explorer 提供)一部分的审核相关操作:
- database/sqlserver/audits_upload_count.。此指标表示审核文件上传尝试(包括成功和失败的尝试)的总次数。检查此指标可监控上传是否成功。
- database/sqlserver/audits_size.。此指标指示测量时存储在实例上的审核文件使用的磁盘空间量。此指标提供了实例上审核文件的总大小(以字节为单位)。
最佳做法
- 为避免跨区域转移大文件,请考虑以下做法:
- 创建多区域 Cloud Storage 存储桶,或者
- 在实例所在的区域中设置目标 Cloud Storage 存储桶
- 在使用 SQL Server Audit 的功能之前,请考虑启用存储空间自动扩容功能。根据审核文件的总大小和保留期限,审核文件可能需要大量磁盘空间。
- 启用审核后,验证您的实例可以将审核文件上传到 Cloud Storage 存储桶。如果设置审核的请求者缺少将文件上传到 Cloud Storage 存储桶所需的权限,则系统不会自动授予这些权限。
- 设置基于指标的提醒政策,以便在上传尝试失败以及过度使用磁盘时收到通知。
- 为避免过多的审核文件保留时间过长,请为 Cloud Storage 存储桶设置数据保留政策。