腾讯云数据库审计服务对接使用完全指南:从开通到API集成
1. 数据库审计服务概述
数据库审计是腾讯云自主研发的一款专业、高效、全面、实时监控数据库安全的审计产品。该服务能够实时记录腾讯云数据库的活动,对数据库操作进行细粒度审计的合规性管理,并对数据库遭受到的风险行为进行告警。无论是云数据库MySQL、TDSQL-C MySQL版、云数据库SQL Server,还是MariaDB、TDSQL Boundless等产品,均可开通数据库审计能力。
从技术实现层面来看,数据库审计基于数据库内核插件实现数据采集。每一条SQL语句的执行都会经过连接、解析、分析、重写、优化、执行、返回、审计、释放的完整过程。开通数据库审计后,每条SQL语句在执行过程中都会被审计——若审计未成功,则SQL语句不会执行成功;若SQL语句执行成功,则一定会被审计。这种基于执行层同步抓取数据的方式,确保了审计数据的完整性与可靠性。
数据库审计的应用场景主要集中在三个方向:第一,助力企业顺利通过等保合规审计,提供等保三级及其他行业合规审计依据;第二,帮助企业记录、分析、追查技术人员误操作等数据库安全相关事件;第三,基于数据库审计数据,提升性能优化、故障定位等场景的效率和精准度。
腾讯云数据库审计支持两种核心模式:云原生模式一键启用,无需安装任何Agent,覆盖云数据库资产;同时也支持Agent模式,可部署于应用端或数据库服务器,覆盖自建数据库。在审计性能方面,产品具备数十万SQL/秒的吞吐量,每小时入库速率达亿级以上。
需要先登录腾讯云控制台,点击:腾讯云控制台,还没有账号,点击:注册后再关联,已有账号点击:登录后再关联
2. 开通审计服务
2.1 支持版本与架构
在开通数据库审计之前,需要确认目标数据库实例的版本与架构是否符合要求。以云数据库MySQL为例,数据库审计目前支持的数据库内核版本为MySQL 5.6 20180122及以上版本、MySQL 5.7 20190429及以上版本、MySQL 8.0 20210330及以上版本。支持的实例架构包括双节点、三节点和云盘版,只读实例同样支持数据库审计。需要注意的是,MySQL 5.5版本的实例、MySQL单节点(云盘)架构的实例、只读分析引擎、双节点经济型的实例暂不支持数据库审计能力。
对于TDSQL-C MySQL版,数据库审计目前支持的兼容版本为MySQL 5.7和8.0。TDSQL Boundless的审计日志默认保存7天。云数据库SQL Server支持的数据库版本为2012、2014、2016、2017、2019、2022 Enterprise版本。
2.2 控制台开通步骤
通过腾讯云控制台开通数据库审计服务的操作步骤如下:
第一步,登录腾讯云控制台,在左侧导航栏选择"数据库审计"(部分产品线中可能显示为"SQL洞察(原数据库审计)")。
第二步,在上方选择目标地域后,进入审计实例页面。单击"审计存储状态"筛选栏,选择"未开启"选项,过滤出所有未开启审计的实例。
第三步,在审计实例列表中找到目标实例,也可以在搜索框中通过实例ID或名称等资源属性进行快速查找。找到目标实例后,在其操作列单击"开通审计服务"。如果需要为多个实例批量开通审计服务,可以在审计实例列表页勾选多个目标实例,单击页面上方的"开通审计服务"即可进入批量设置界面。
第四步,在开通审计服务界面,依次完成以下配置:
审计实例选择:系统默认勾选步骤三中所选择的实例,同时支持在此窗口下修改目标实例,可以切换选择其他实例或进行多选。
审计类型设置:需要选择审计类型为"全审计"或"规则审计",两者的详细区别如下表所示:
全审计模式全面记录对数据库的所有访问及SQL语句执行情况,适合需要完整审计轨迹的场景。规则审计模式则根据自定义的审计规则记录对数据库的访问及SQL语句执行情况,适合只需关注特定操作类型的场景。
当审计类型设置为全审计时,可以从已有的规则模板中选择,也可以新建规则模板。规则模板用于对命中模板中规则内容的审计日志设置风险等级及告警策略,未命中规则内容的审计日志依然会保留。每个实例最多可应用5个规则模板,不同规则模板之间为"或"的关系。
当审计类型设置为规则审计时,同样可以从已有规则模板中选择或新建。与全审计不同的是,规则审计模式下,未命中模板规则内容的审计日志不再保留。
审计服务设置:需要设置审计日志保存时长及高低频存储时长。日志保存时长支持选择7、30、90、180、365、1095、1825天。高频存储代表超高性能存储介质,拥有极佳的查询性能。设定高频存储时长后,指定时长范围内的审计数据会存储在高频存储中,超过高频存储时长的部分数据会自动落冷至低频存储中。不同存储支持的审计能力完全相同,仅性能存在差异。例如,将日志保存时长设置为30天,高频存储时长设置为7天,则低频存储时长默认为23天。
完成以上配置后,阅读并勾选腾讯云服务协议,单击"确定"即可开通审计服务。
3. 审计日志的查看与管理
3.1 查看审计日志
开通审计服务后,可在审计日志页面筛选已开启审计的实例,查看详细的审计日志。在审计日志页面,系统默认选择近1小时的时间范围,也可以快捷选择近3小时、近12小时、近24小时、近7天等预设时间段,同时还支持自定义时间段。系统最多支持展示符合条件的前60000条记录。
审计日志列表提供了丰富的搜索与筛选能力。在SQL命令详情搜索框中,支持多层级的匹配模式:
第一层设置正反向匹配模式,可以选择"包含"或"不包含"。第二层设置关键词之间的逻辑关系,支持"或"和"且"两种模式——"或"表示不同关键词之间取并集关系,"且"表示不同关键词之间取交集关系。第三层设置每个关键词的匹配模式,支持"分词"和"通配"两种模式。
以一条SQL语句"SELECT * FROM test_db1 join test_db2 LIMIT 1;"为例:在"包含(分词)"搜索模式下,可以通过"SELECT"、"select * from"、"*"、完整的SQL语句、"from Test_DB1"等分词关键词进行搜索,但无法通过"SEL"、"sel"、"test"等通配关键词进行搜索。在"包含(通配)"搜索模式下,则可以通过"SEL"、"sel"、"test"、"DB"等通配关键词进行搜索。在"包含(且)"搜索模式下,输入"SELECT"和"test_db"等关键词,可以查询到所有同时包含这两个关键词的SQL命令。在"包含(或)"搜索模式下,输入"test_db1"和"test_db2"等关键词,可以查询到包含其中任意一个关键词的SQL命令。
3.2 下载审计日志
审计日志支持导出为文件进行离线分析。在审计日志页面单击"下载"按钮,可以创建日志文件。在弹窗中可以选择下载文件里包含的日志字段,支持选择全部字段,也支持选择与自定义列表字段联动。如果选择与自定义列表字段联动,则下载的日志文件仅包含自定义列表字段中所展示的字段,且字段顺序与其一致。
单击"文件列表",可进入审计日志文件列表页面,查询已生成或生成中的文件信息和下载地址。复制下载地址即可获取完整的SQL审计日志。
需要注意的是:目前日志文件下载仅提供腾讯云内网地址,需要通过同一地域的腾讯云服务器进行下载。例如,北京区的数据库实例审计日志需要通过北京区的CVM进行下载。日志文件有效期为24小时,请及时下载。每一个数据库实例的日志文件不得超过30个,建议下载后及时删除清理。若状态显示为失败,可能是由于日志量过大导致,请缩短时间窗口后分批下载。
4. 审计规则配置
腾讯云数据安全审计提供三种类型的审计规则:风险监测规则(黑名单)、信任规则(白名单)和过滤规则。
风险监测规则用于检测数据库操作中的异常行为,当出现不符合正常操作模式的行为时触发告警。审计记录命中配置并启用的风险识别规则时,会触发告警。
信任规则适用于对已知安全、可信任的数据库操作进行定义,以便在审计过程中对这些操作进行特殊处理。如果某类数据库操作需要被审计但无需上报告警,可以为此类操作自定义信任规则,帮助提高告警准确率。
过滤规则主要用于筛选出不需要审计的操作,减少无效审计信息,优化审计日志管理。系统不会审计在过滤规则中定义的操作,这有助于提高告警准确率并节省审计日志存储空间。
在审计规则页面,可以从规则视角或资产视角两个维度进行规则的启用和禁用。规则视角页面显示当前所有审计规则,可以根据审计规则为不同的数据资产配置开启或禁用某条规则。资产视角页面显示当前已开启数据安全审计的数据资产,可以根据具体的资产为其设置开启或禁用不同的审计规则。新建规则时,需要依次配置基础信息、规则定义和输出定义。
5. 事后告警配置
数据库审计功能支持事后告警,支持配置高、中、低三个风险等级的事件告警策略。命中策略的审计日志可发送告警通知给绑定的用户。同时,在腾讯云可观测平台中,可以查看告警历史、进行告警策略管理(告警开关)及告警屏蔽。通过配置事后告警,用户可以根据设定的审计规则和风险级别接收风险告警,快速定位问题并查看相关审计日志。
告警配置的基本流程为:为规则模板选择告警策略,支持"不发送告警"和"发送告警"两个选项。如需进一步配置告警规则及告警通知,需要前往腾讯云可观测平台中的告警管理模块进行详细配置。
6. API对接开发
腾讯云数据库审计服务提供了完整的API 3.0接口体系,支持开发者通过编程方式对接和使用审计服务。腾讯云API平台提供了API Explorer在线调试工具,支持在线调用、签名验证、SDK代码生成和快速检索接口等能力。用户可以通过API Inspector查看控制台每一步操作关联的API调用情况,并自动生成各语言版本的API代码。
6.1 开通审计服务API
OpenAuditService接口用于为数据库实例开启数据库审计服务。该接口的请求频率限制为20次/秒。
接口请求域名为dbbrain.tencentcloudapi.com。主要输入参数包括:Product(服务产品类型,支持值包括"dcdb"云数据库Tdsql和"mariadb"云数据库MariaDB)、InstanceId(实例ID)、LogExpireDay(日志保存总时长,只能是7、30、90、180、365、1095、1825天)、HotLogExpireDay(高频日志保存时长,同样只能是上述取值)。输出参数中TaskId为0表示开通审计成功,否则表示开通失败。
以下是使用Python SDK调用OpenAuditService接口开通数据库审计的示例代码:
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.dbbrain.v20210527 import dbbrain_client, models
def open_audit_service(secret_id, secret_key, instance_id, product, log_expire_day, hot_log_expire_day):
cred = credential.Credential(secret_id, secret_key)
httpProfile = HttpProfile()
httpProfile.endpoint = "dbbrain.tencentcloudapi.com"
clientProfile = ClientProfile()
clientProfile.httpProfile = httpProfile
client = dbbrain_client.DbbrainClient(cred, "ap-guangzhou", clientProfile)
req = models.OpenAuditServiceRequest()
req.Product = product
req.NodeRequestType = product
req.InstanceId = instance_id
req.LogExpireDay = log_expire_day
req.HotLogExpireDay = hot_log_expire_day
resp = client.OpenAuditService(req)
return resp.TaskId
# 调用示例
result = open_audit_service(
secret_id="您的SecretId",
secret_key="您的SecretKey",
instance_id="tdsql-njshdu",
product="dcdb",
log_expire_day=30,
hot_log_expire_day=7
)
print(f"开通结果TaskId: {result}")
6.2 创建审计日志文件API
CreateAuditLogFile接口用于创建云数据库实例的审计日志文件,便于将审计日志导出为文件进行离线分析。该接口的请求频率限制同样为20次/秒。接口请求域名为cdb.tencentcloudapi.com。
主要输入参数包括:InstanceId(实例ID)、StartTime(开始时间,建议开始到结束时间区间最大7天)、EndTime(结束时间)、Order(排序方式,支持ASC升序和DESC降序,默认降序)、OrderBy(排序字段,支持timestamp时间戳、affectRows影响行数、execTime执行时间)、LogFilter(过滤条件数组)、ColumnFilter(下载筛选列)。输出参数包括FileName(审计日志文件名称)和RequestId。
以下是使用Python SDK调用CreateAuditLogFile接口创建审计日志文件的示例代码:
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.cdb.v20170320 import cdb_client, models
def create_audit_log_file(secret_id, secret_key, instance_id, start_time, end_time):
cred = credential.Credential(secret_id, secret_key)
httpProfile = HttpProfile()
httpProfile.endpoint = "cdb.tencentcloudapi.com"
clientProfile = ClientProfile()
clientProfile.httpProfile = httpProfile
client = cdb_client.CdbClient(cred, "ap-guangzhou", clientProfile)
req = models.CreateAuditLogFileRequest()
req.InstanceId = instance_id
req.StartTime = start_time
req.EndTime = end_time
req.Order = "DESC"
req.OrderBy = "timestamp"
resp = client.CreateAuditLogFile(req)
return resp.FileName
# 调用示例
file_name = create_audit_log_file(
secret_id="您的SecretId",
secret_key="您的SecretKey",
instance_id="cdb-cdtkp3hr",
start_time="2026-06-01 00:00:00",
end_time="2026-06-07 23:59:59"
)
print(f"审计日志文件名: {file_name}")
6.3 查询审计实例列表API
DescribeAuditInstanceList接口用于获取数据库审计的实例列表。该接口的请求频率限制为100次/秒。通过该接口可以查询已开启或未开启审计的实例列表,便于进行批量管理和监控。
7. 最佳实践
7.1 成本优化
数据库审计按照审计日志存储量进行按量计费,每小时为一个计费周期,不足一小时的按一小时计费。审计日志存储量为秒级上报,与小时单位计算可能存在精度误差,具体以账单为准。
在成本优化方面,建议根据业务需求合理设置日志保存时长和高低频存储时长。对于需要长期保存但查询频率较低的审计日志,可以适当缩短高频存储时长,让数据更快地自动落冷至低频存储。低频存储与高频存储的审计能力完全相同,仅查询性能存在差异。
7.2 审计类型选择
全审计模式适合需要完整审计轨迹以满足等保合规要求的场景。规则审计模式适合只需关注特定高风险操作类型的场景,可以大幅减少审计日志的存储量。在选择审计类型时,建议根据实际的合规要求和业务需求进行权衡。
7.3 规则模板管理
每个实例最多可应用5个规则模板,不同规则模板之间为"或"的关系。建议根据不同的风险等级和操作类型创建多个规则模板,分别配置不同的告警策略。对于全审计模式,规则模板仅用于设置风险等级和告警策略,未命中规则的审计日志依然保留。对于规则审计模式,未命中规则的审计日志不再保留,因此需要谨慎配置规则模板,避免遗漏重要审计数据。
7.4 日志下载策略
审计日志文件仅提供内网下载地址,需要通过同一地域的CVM进行下载。日志文件有效期为24小时,每个实例最多30个文件。建议建立自动化的日志下载与清理机制,定期将审计日志下载到本地或对象存储中进行长期归档,同时及时删除已下载的日志文件以释放配额。如果单次下载失败,可能是由于日志量过大导致,建议缩短时间窗口分批下载。
7.5 安全告警配置
建议为高风险操作配置事后告警,并绑定有效的告警通知渠道。在腾讯云可观测平台中配置告警规则及告警通知。同时,定期审查审计规则的有效性,及时调整风险监测规则和信任规则,确保告警的准确率。
7.6 合规审计
数据库审计是满足等保合规要求的重要手段。等保三级明确要求对数据库操作进行审计。通过配置全审计模式并设置合适的日志保存时长(建议不少于180天),可以满足等保三级及其他行业合规审计依据的要求。
8. 常见问题解答
问1:数据库审计开通后多久可以查看到审计日志?
答:开通审计服务后,审计日志会实时生成。通常几分钟后即可在审计日志页面查看到最新的审计记录。如果长时间无法查看到日志,请检查实例是否产生了实际的数据库操作,以及审计类型设置是否正确。
问2:全审计和规则审计应该如何选择?
答:全审计记录所有SQL操作,适合需要完整审计轨迹以满足等保合规要求的场景。规则审计只记录命中规则的SQL操作,适合只需关注特定高风险操作的场景。如果合规要求严格或需要完整的行为追溯能力,建议选择全审计;如果主要关注高风险操作且希望控制存储成本,可以选择规则审计。
问3:审计日志可以保存多久?
答:审计日志保存时长支持选择7、30、90、180、365、1095、1825天。同时支持设置高频存储时长,超过高频存储时长的数据会自动落冷至低频存储。建议根据合规要求(如等保三级建议不少于180天)和成本预算合理设置保存时长。
问4:为什么下载审计日志时提示失败?
答:下载失败通常有以下几种原因:日志量过大导致超时,建议缩短时间窗口分批下载;日志文件数量已达上限(每个实例最多30个),请删除已下载或过期的旧文件后再试;下载地址为内网地址,需要通过同一地域的CVM进行下载。
问5:如何通过API获取审计日志?
答:可以通过CreateAuditLogFile接口创建审计日志文件,然后通过返回的文件名和内网下载地址获取完整的SQL审计日志。建议配合DescribeAuditLogFiles接口查询已生成的日志文件列表。
问6:数据库审计是否支持自建数据库?
答:支持。腾讯云T-Sec数据安全审计产品支持通过Agent模式部署于应用端或数据库服务器,实现对自建数据库的全量操作审计。同时,产品还支持对友商云和IDC中的数据库进行统一审计。





