审计日志不为云生成 DML 语句日志-SQL

Audit Log not generating DML statement logs for Cloud-SQL

我正在尝试在堆栈驱动程序控制台中显示 Cloud-SQL 的审计日志。我已经在 IAM 中为 Cloud-SQL 启用了审计日志。

我连接到 Cloud-SQL 中的 mysqlpostgres 数据库,当我连接这些审计时日志显示在控制台中。

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

但在此之后,如果我在该特定数据库中执行任何操作,如 SELECTINSERTDELETE,没有为 mysqlpostgres 生成审计日志(数据访问)。在 mysql 实例中,我设置了以下数据库标志:

audit_log ON (this is in beta version)

对于 mysql 如果我再添加 1 个标志 **general_log** 我可以得到那些 DML 语句但是它们在不同的日志下 **cloudsql.googleapis.com%2Fmysql-general.log** 并且不属于 audit-logs

与 postgres 类似,这些语句位于不同的日志中:

**cloudsql.googleapis.com%2Fpostgres.log**

我是这个 Cloud-SQL 的新手,所以不知道那里实施的日志记录。为什么在对该 Cloud-SQL 实例中的特定数据库执行任何 DML 时没有生成审计日志,我是否应该为此目的设置任何其他标志?

默认情况下,DML 不会记录在 Cloud SQL 的审核日志中。要在 Logging 中查看 DML 日志,您需要使用 pgAudit on your PostgreSQL。顺便说一下,pgAudit 仅在 PostgreSQL 实例中可用。

启用 pgaudit 的步骤:

  1. 使用 gcloud 命令启用 pgaudit

    gcloud sql instances patch [INSTANCE_NAME] --database-flags \ cloudsql.enable_pgaudit=on,pgaudit.log=all

  2. 在您的 postgres 数据库中创建 pgaudit 扩展

    CREATE EXTENSION pgaudit;

  3. 运行 在你的 postgres 数据库上的一个简单的 select 语句

在Logging中查询DML语句日志:

  1. 打开日志记录 -> 日志资源管理器

  2. 在查询构建器中应用此过滤器:

    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 数据库:

使用上面的过滤器过滤日志记录: