审核日志未为 Cloud-SQL 生成 DML 语句日志
Posted
技术标签:
【中文标题】审核日志未为 Cloud-SQL 生成 DML 语句日志【英文标题】:Audit Log not generating DML statement logs for Cloud-SQL 【发布时间】:2021-07-11 16:58:41 【问题描述】:我正在尝试在堆栈驱动程序控制台中显示 Cloud-SQL 的审核日志。我已经在 IAM 中为 Cloud-SQL 启用了审计日志。
我连接到 Cloud-SQL 中的 mysql 或 postgres 数据库,当我连接时,这些审核日志会显示在控制台中。
request:
@type: "type.googleapis.com/google.cloud.sql.v1beta4.SqlInstancesGetRequest"
instance: "testpostgres"
但在此之后,如果我在该特定数据库中执行任何操作,如 SELECT 或 INSERT 或 DELETE,则没有审计日志 ( data-access) 为 mysql 和 postgres 生成。在 mysql 实例中,我设置了以下数据库标志:
audit_log ON (this is in beta version)
对于 mysql,如果我再添加 1 个标志 **general_log**
我能够获得这些 DML 语句,但它们属于不同的日志 **cloudsql.googleapis.com%2Fmysql-general.log**
并且不属于 审计-日志
类似地,对于 postgres,这些语句位于不同的日志下:
**cloudsql.googleapis.com%2Fpostgres.log**
我是这个 Cloud-SQL 的新手,所以不知道那里实现的日志记录。为什么在对该 Cloud-SQL 实例中的特定数据库执行任何 DML 时不生成审核日志,我应该为此设置任何其他标志吗?
【问题讨论】:
【参考方案1】:默认情况下,DML 不会记录在 Cloud SQL 上的审核日志中。要在 Logging 中查看 DML 日志,您需要使用 pgAudit on your PostgreSQL。顺便说一句,pgAudit 仅在 PostgreSQL 实例中可用。
启用 pgaudit 的步骤:
使用 gcloud 命令启用 pgaudit
gcloud sql instances patch [INSTANCE_NAME] --database-flags \ cloudsql.enable_pgaudit=on,pgaudit.log=all
在您的 postgres 数据库中创建 pgaudit 扩展
CREATE EXTENSION pgaudit;
在你的 postgres 数据库上运行一个简单的 select 语句
在 Logging 中查询 DML 语句日志:
打开日志记录 -> 日志资源管理器
在查询构建器中应用此过滤器:
resource.type="cloudsql_database" logName="projects/<your-project-name>/logs/cloudaudit.googleapis.com%2Fdata_access" protoPayload.request.@type="type.googleapis.com/google.cloud.sql.audit.v1.PgAuditEntry"
我使用quickstart for PostgresSQL 进行测试。
查询postgre数据库:
使用上面的过滤器过滤日志:
【讨论】:
太好了,我们可以在同一个审核日志中显示持续时间吗,因为我要再添加 1 个标志 log_statement_min_duration,2)您的答案如上所述,适用于 postgres,是否有任何类似的功能可用mysql还是mssql? @user1403505 1.) 是的,您可以添加另一个标志,如果标志返回特定信息,则应显示在日志中。 2.) mysql 没有由 google 管理的类似功能。我建议您发布另一个特定于 mysql 的问题,这样社区可能会回答您的问题。 日志标志给出了持续时间,但我希望它显示在上面显示的相同审计日志中。它目前仅显示在 postgres 日志中。谢谢 pgaudit 日志工作正常,但它没有在日志中提供 IAM 用户的身份? Authentication Info 对象没有显示在这里?如何得到那个对象?谢谢 @user1403505 IAM 相关信息不包含在 pgaudit 字段中。 pgaudit 的唯一可用字段列在here。最好发布一个关于此的新问题,以便社区可以分享他们的见解。以上是关于审核日志未为 Cloud-SQL 生成 DML 语句日志的主要内容,如果未能解决你的问题,请参考以下文章
svcutil.exe 未为 minOccurs=0 生成指定字段
未为部署在 Service Fabric Linux 集群上的 .Net 核心应用生成应用洞察
SQL 报告生成器错误:未为“公共函数日(日期值作为日期)作为整数”的参数“日期值”指定参数
在 IntelliJ Idea 中未为 Kotlin @ConfigurationProperties 类生成 spring-configuration-metadata.json 文件