审核日志未为 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 中的 mysqlpostgres 数据库,当我连接时,这些审核日志会显示在控制台中。

  request: 
   @type: "type.googleapis.com/google.cloud.sql.v1beta4.SqlInstancesGetRequest"    
   instance: "testpostgres" 

但在此之后,如果我在该特定数据库中执行任何操作,如 SELECTINSERTDELETE,则没有审计日志 ( data-access) 为 mysqlpostgres 生成。在 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 语句日志的主要内容,如果未能解决你的问题,请参考以下文章

SQL结构化查询语——之DML语言

未为调试版本生成 Firebase 消息令牌

svcutil.exe 未为 minOccurs=0 生成指定字段

未为部署在 Service Fabric Linux 集群上的 .Net 核心应用生成应用洞察

SQL 报告生成器错误:未为“公共函数日(日期值作为日期)作为整数”的参数“日期值”指定参数

在 IntelliJ Idea 中未为 Kotlin @ConfigurationProperties 类生成 spring-configuration-metadata.json 文件