TiDB Cloud Dedicated 数据库审计日志 (公测中)
TiDB Cloud 提供了审计日志功能,用于记录数据库的用户访问活动,例如执行的 SQL 语句。
为了评估组织的用户访问策略和其他信息安全措施的有效性,定期分析数据库审计日志是一项安全最佳实践。
审计日志功能默认关闭。要对集群进行审计,必须先启用审计日志功能,然后指定审计过滤规则。
前提条件
你正在使用 TiDB Cloud Dedicated 集群。
你在组织中拥有
Organization Owner或Project Owner角色。否则,你无法在 TiDB Cloud 控制台中看到与数据库审计相关的选项。更多信息请参见 用户角色。
启用审计日志
TiDB Cloud 支持将 TiDB Cloud Dedicated 集群的审计日志写入你的云存储服务。在启用数据库审计日志之前,请在集群所在的云服务商上配置你的云存储服务。
在 AWS 上启用审计日志
要在 AWS 上启用审计日志,请按照以下步骤操作:
步骤 1. 创建 Amazon S3 存储桶
在你组织拥有的 AWS 账号中指定一个 Amazon S3 存储桶,作为 TiDB Cloud 写入审计日志的目标位置。
更多信息请参见 AWS 用户指南中的 创建存储桶。
步骤 2. 配置 Amazon S3 访问权限
获取你要为其启用审计日志的 TiDB 集群的 TiDB Cloud Account ID 和 External ID。
在 TiDB Cloud 控制台,进入 My TiDB 页面。
提示:
如果你属于多个组织,请先使用左上角的下拉框切换到目标组织。
点击目标 TiDB Cloud Dedicated 集群的名称进入概览页面,然后在左侧导航栏点击 Settings > DB Audit Logging。
在 DB Audit Logging 页面,点击右上角的 Enable。
在 Database Audit Log Storage Configuration 对话框中,找到 AWS IAM Policy Settings 部分,记录下 TiDB Cloud Account ID 和 TiDB Cloud External ID,以备后用。
在 AWS 管理控制台 中,进入 IAM > Access Management > Policies,检查是否已有具备
s3:PutObject写入权限的 IAM 策略。如果有,记录该策略以备后用。
如果没有,进入 IAM > Access Management > Policies > Create Policy,并根据以下策略模板定义 IAM 策略。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:PutObject", "Resource": "<Your S3 bucket ARN>/*" } ] }其中,
<Your S3 bucket ARN>是你 S3 存储桶的 Amazon 资源名称(ARN),即审计日志文件将被写入的存储桶。你可以在 S3 存储桶的 Properties 标签页的 Bucket Overview 区域获取 ARN 值。在"Resource"字段中,需要在 ARN 后加上/*。例如,如果 ARN 是arn:aws:s3:::tidb-cloud-test,则"Resource"字段的值应为"arn:aws:s3:::tidb-cloud-test/*"。
进入 IAM > Access Management > Roles,检查是否已存在信任实体为你之前记录的 TiDB Cloud Account ID 和 External ID 的角色。
- 如果有,记录该角色以备后用。
- 如果没有,点击 Create role,选择 Another AWS account 作为信任实体类型,在 Account ID 字段输入 TiDB Cloud Account ID。然后,选择 Require External ID 选项,并在 External ID 字段输入 TiDB Cloud External ID。
在 IAM > Access Management > Roles,点击上一步的角色名称进入 Summary 页面,然后按以下步骤操作:
- 在 Permissions 标签页,检查该角色是否已附加具备
s3:PutObject写入权限的策略。如果没有,选择 Attach Policies,搜索所需策略,然后点击 Attach Policy。 - 返回 Summary 页面,复制 Role ARN 的值到剪贴板。
- 在 Permissions 标签页,检查该角色是否已附加具备
步骤 3. 启用审计日志
在 TiDB Cloud 控制台,返回你获取 TiDB Cloud Account ID 和 External ID 的 Database Audit Log Storage Configuration 对话框,然后按以下步骤操作:
- 在 Bucket URI 字段,输入你 S3 存储桶的 URI,即审计日志文件将被写入的位置。
- 在 Bucket Region 下拉列表中,选择存储桶所在的 AWS 区域。
- 在 Role ARN 字段,填写你在 步骤 2. 配置 Amazon S3 访问权限 中复制的 Role ARN。
- 点击 Test Connection and Next,验证 TiDB Cloud 是否可以访问并写入该存储桶。如果连接成功,对话框将进入数据库审计日志设置的下一步。
在 Google Cloud 上启用审计日志
要在 Google Cloud 上启用审计日志,请按照以下步骤操作:
步骤 1. 创建 GCS 存储桶
在你组织拥有的 Google Cloud 账号中指定一个 Google Cloud Storage (GCS) 存储桶,作为 TiDB Cloud 写入审计日志的目标位置。
更多信息请参见 Google Cloud Storage 文档中的 创建存储桶。
步骤 2. 配置 GCS 访问权限
获取你要为其启用审计日志的 TiDB 集群的 Google Cloud Service Account ID。
在 TiDB Cloud 控制台,进入 My TiDB 页面。
提示:
如果你属于多个组织,请先使用左上角的下拉框切换到目标组织。
点击目标 TiDB Cloud Dedicated 集群的名称进入概览页面,然后在左侧导航栏点击 Settings > DB Audit Logging。
在 DB Audit Logging 页面,点击右上角的 Enable。
在 Database Audit Log Storage Configuration 对话框中,找到 Google Cloud Service Account ID 部分,记录下 Service Account ID,以备后用。
在 Google Cloud 控制台 中,进入 IAM & Admin > Roles,检查是否存在具备以下存储桶中对象写入权限的角色。
- storage.objects.create
- storage.objects.delete
如果有,记录该角色以备后用。如果没有,进入 IAM & Admin > Roles > CREATE ROLE,为 TiDB 集群定义一个角色。
进入 Cloud Storage > Browser,选择你希望 TiDB Cloud 访问的 GCS 存储桶,然后点击 SHOW INFO PANEL。
信息面板将显示。
在面板中,点击 ADD PRINCIPAL。
将弹出添加主体的对话框。
在对话框中,按以下步骤操作:
- 在 New Principals 字段,粘贴 TiDB 集群的 Google Cloud Service Account ID。
- 在 Role 下拉列表中,选择目标 TiDB 集群的角色。
- 点击 SAVE。
步骤 3. 启用审计日志
在 TiDB Cloud 控制台,返回你获取 Google Cloud Service Account ID 的 Database Audit Log Storage Configuration 对话框,然后按以下步骤操作:
- 在 Bucket URI 字段,输入你的完整 GCS 存储桶名称。
- 在 Bucket Region 字段,选择存储桶所在的 GCS 区域。
- 点击 Test Connection and Next,验证 TiDB Cloud 是否可以访问并写入该存储桶。如果连接成功,对话框将进入数据库审计日志设置的下一步。
在 Azure 上启用审计日志
要在 Azure 上启用审计日志,请按照以下步骤操作:
步骤 1. 创建 Azure 存储账户
在你组织的 Azure 订阅下创建一个 Azure 存储账户,作为 TiDB Cloud 写入数据库审计日志的目标位置。
更多信息请参见 Azure 文档中的 创建 Azure 存储账户。
步骤 2. 配置 Azure Blob Storage 访问权限
在 Azure 门户 中,创建用于存储数据库审计日志的容器。
在 Azure 门户左侧导航栏点击 Storage Accounts,然后点击用于存储数据库审计日志的存储账户。
提示:
如果左侧导航栏被隐藏,可点击左上角菜单按钮切换其显示状态。
在所选存储账户的导航栏中,点击 Data storage > Containers,然后点击 + Container 打开 New container 面板。
在 New container 面板中,为新容器输入名称,设置匿名访问级别(推荐级别为 Private,即不允许匿名访问),然后点击 Create。几秒钟后,新容器会被创建并显示在容器列表中。
获取目标容器的 URL。
- 在容器列表中,选中目标容器,点击容器的 ...,然后选择 Container properties。
- 在显示的属性页面,复制 URL 的值以备后用,然后返回容器列表。
为目标容器生成 SAS token。
在容器列表中,选中目标容器,点击容器的 ...,然后选择 Generate SAS。
在显示的 Generate SAS 面板中,Signing method 选择 Account key。
在 Permissions 下拉列表中,选择 Read、Write 和 Create,以允许写入审计日志文件。
在 Start 和 Expiry 字段,指定 SAS token 的有效期。
Allowed protocols 选择 HTTPS only,以确保安全访问。
点击 Generate SAS token and URL,然后复制显示的 Blob SAS token 以备后用。
步骤 3. 启用审计日志
在 TiDB Cloud 控制台,进入 My TiDB 页面。
提示:
如果你属于多个组织,请先使用左上角的下拉框切换到目标组织。
点击目标 TiDB Cloud Dedicated 集群的名称进入概览页面,然后在左侧导航栏点击 Settings > DB Audit Logging。
在 DB Audit Logging 页面,点击右上角的 Enable。
在 Database Audit Log Storage Configuration 对话框中,填写你在 步骤 2. 配置 Azure Blob 访问权限 获取的 blob URL 和 SAS token:
- 在 Blob URL 字段,输入存储审计日志的容器 URL。
- 在 SAS Token 字段,输入访问该容器的 SAS token。
点击 Test Connection and Next,验证 TiDB Cloud 是否可以访问并写入该容器。如果连接成功,对话框将进入数据库审计日志设置的下一步。
配置数据库审计日志设置
为云服务提供商配置存储后,完成数据库审计日志设置步骤:
设置日志文件轮转策略。
你可以基于文件大小或时间间隔轮转审计日志文件。当任一条件满足时,TiDB Cloud 会生成新的审计日志文件。
配置日志脱敏。
默认启用日志脱敏。启用后,SQL 文本中的敏感信息会在审计日志中被替换为
?。点击 Save and Enable 以应用设置并启用审计日志。
指定审计过滤规则
启用审计日志后,必须指定审计过滤规则,以控制捕获和写入哪些用户访问事件到审计日志。如果未指定过滤规则,TiDB Cloud 不会记录任何日志。
要为集群指定审计过滤规则,请按以下步骤操作:
在 DB Audit Logging 页面,点击 Audit Filters 区域的 Add Filter Rule,添加一条审计过滤规则。
在 Add Filter Rule 对话框中,配置以下项:
- Filter Name:输入过滤规则的名称。
- SQL User:以
<user>@<host>格式输入 SQL 用户。用户名和主机名可以使用%匹配任意值,或使用_匹配任意单个字符。@符号和<host>为可选项。 - Filter Events:选择要记录的事件。支持的过滤事件,参见审计过滤事件。
点击 Confirm 添加过滤规则。
查看审计日志
默认情况下,TiDB Cloud 会将数据库审计日志文件存储在你的存储服务中,因此你需要从存储服务中访问审计日志。
TiDB Cloud 审计日志为可读的文本文件,完整文件路径中包含集群 ID、节点 ID 和日志创建日期。
例如:13796619446086334065/tidb-0/tidb-audit-2022-04-21T18-16-29.529.log。在此示例中,13796619446086334065 表示集群 ID,tidb-0 表示节点 ID。
禁用审计日志
如果你不再需要对集群进行审计,请按以下步骤操作:
- 在 TiDB Cloud 控制台中进入 My TiDB 页面,然后点击目标 TiDB Cloud Dedicated 集群的名称。
- 在左侧导航栏中,点击 Settings > DB Audit Logging。
- 在 Database Audit Logging 区域中,点击 Settings 旁边的 ...,然后点击 Disable。
审计过滤事件
下表展示了数据库审计日志中的所有事件类:
审计日志字段
对于审计日志中的每条数据库事件记录,TiDB Cloud 提供以下字段:
常规信息
所有类的审计日志都包含以下信息:
SQL 语句信息
当事件类为 QUERY 或 QUERY 的子类时,审计日志包含以下信息:
连接信息
当事件类为 CONNECTION 或 CONNECTION 的子类时,审计日志包含以下信息:
审计操作信息
当事件类为 AUDIT 或 AUDIT 的子类时,审计日志包含以下信息:
审计日志限制
TiDB Cloud Dedicated 不保证审计日志按时间顺序写入,这意味着你可能需要检查所有日志文件才能找到最新事件。要按时间顺序对日志进行排序,可以使用审计日志中的 TIME 字段。
旧版数据库审计日志参考
如果你当前仍依赖旧版审计日志插件,请参阅数据库审计日志(旧版)。