---
title: "设置审计规则 - OceanBase 数据库 V4.2.5 | OceanBase 文档中心"
description: 设置审计规则 开启安全审计后，需要设置具体的安全审计规则来对用户的操作进行审计。 功能适用性 该内容仅适用于 OceanBase 数据库企业版，OceanBase 数据库社区版暂不支持审计功能。 设置日志策略 通过配置项 audit_log_strategy 设置审计日志的策略，支持 ASYNCHRONOUS 、 P…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.2.5 LTS

# 设置审计规则

更新时间：2026-07-15 20:42:47

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.2.5/zh-CN/600.manage/500.security-and-permissions/600.security-audit/200.security-audit-of-mysql-mode/300.set-up-audit-rules-of-mysql-mode.md)  

开启安全审计后，需要设置具体的安全审计规则来对用户的操作进行审计。

#### 功能适用性

该内容仅适用于 OceanBase 数据库企业版，OceanBase 数据库社区版暂不支持审计功能。

## 设置日志策略

通过配置项 [audit_log_strategy](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001502060) 设置审计日志的策略，支持 `ASYNCHRONOUS`、`PERFORMANCE`、`SYNCHRONOUS` 三种类型的写日志策略，可以根据需要选择对应的写策略，以实现在性能和日志完整性之间的平衡。

- ASYNCHRONOUS：表示异步写日志，buffer 满时会同步等待，该策略为默认策略。
 - PERFORMANCE：表示异步写日志，buffer 满时丢弃数据。
 - SYNCHRONOUS：表示同步写日志。

例如，设置审计记录写文件策略为异步写日志，buffer 满时会同步等待。

```shell
obclient [test]> ALTER SYSTEM SET audit_log_strategy='ASYNCHRONOUS';

```

当使用异步写日志时，可以通过配置项 [audit_log_buffer_size](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001502038) 控制 buffer 大小。

## 设置日志格式

通过设置配置项 [audit_log_format](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001502035) 选择审计日志的格式，目前只支持 CSV 格式。

```shell
obclient [test]> ALTER SYSTEM SET audit_log_format='CSV';

```

## 设置数据脱敏

通过配置项 [audit_log_query_sql](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001502085) 选择审计记录中的 SQL 语句，取值包含 ALL 和 NONE 两种。

- ALL：记录所有 Query SQL。
 - NONE：不记录 Query SQL。

例如设置审计记录中的 SQL 语句不记录 Query SQL。

```shell
obclient [test]> ALTER SYSTEM SET audit_log_query_sql='NONE';

```

记录 Query SQL 时审计文件对以下语句进行了数据脱敏：

- CMD：对于包含密码、AK/SK 等敏感信息的语句，如创建用户、发起备份恢复、修改配置项，统一记录为 `***`。对于其他类型 CMD 语句，直接记录原始 SQL。
 - 无法判断语句类型：如 Parser 失败，也记录为 `***`。

## 设置输出路径

通过配置项 [audit_log_path](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001502079) 设置审计日志的输出路径，支持本地存储和云存储。如果未指定 `audit_log_path` 的取值，则默认使用当前工作路径 `${WORK_DIR}/audit`。

#### 说明

先开启审计再修改输出路径的情况，修改 `audit_log_path` 后不会立即切换到新目录，需等待当前 `audit.log` 写满并触发轮转（由 `audit_log_rotate_on_size` 控制，参见下文`设置日志归档`）后，新生成的日志才会写入新路径。

- 本地存储场景

  同一个租户中，不同 OBServer 的审计日志会输出到不同目录。同一个集群中，用户可能会将不同租户的输出路径设置为同一个，此时目录结构中会增加一层 `tenant_id`。本地输出目录结构如下图：

  ```shell
  - ${audit_log_path}
  - tenant_id_1
  - ip1:port1
      - audit.log.20231031080646317[.zst]
      - audit.log.20231031084835263[.zst]
      - audit.log
  - ip2:port2
      - audit.log.20231031072457838[.zst]
      - audit.log.20231031093023607[.zst]
      - audit.log.20231031101213751[.zst]
      - audit.log
  - tenant_id_2

  ```

  配置审计日志的输出目录为本地的示例如下。

  ```shell
  obclient [test]> ALTER SYSTEM SET audit_log_path='file:///logs/audit';

  ```
 - 云存储场景

  OceanBase 数据库支持多个 OBServer 输出到同一个 `oss/nfs` 目录的场景。考虑到并发追加写文件的性能以及后续的压缩和加密功能都需要操作本地文件，只有归档后的文件会存到云存储，追加写会写到本地 `audit` 目录下的文件中。下游消费云存储中的审计日志时，部分最新的记录只存在 OBServer 本地，对下游不可见。

  配置审计日志的输出目录为 `OSS` 的示例如下。

  ```shell
  obclient [test]> ALTER SYSTEM SET audit_log_path = 'oss://ob-audit/audit/?host=$OSS_HOST&access_id=$OSS_ACCESS_ID&access_key=$OSS_ACCESS_KEY';

  ```

  其中 `$OSS_HOST`、`$OSS_ACCESS_ID`、`$OSS_ACCESS_KEY` 需要替换为实际的 HOST 地址、访问密钥 ID、访问密钥，访问密钥会加密存储。

## 设置日志归档

审计记录会不断地追加写到 `audit.log` 文件中，通过设置配置项 [audit_log_rotate_on_size](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001502052) 实现自动归档日志，当 `audit.log` 的大小达到指定值时，会自动生成一个新的文件。归档只负责控制单个日志文件的大小，不负责清理文件。

例如，设置审计记录单个文件的大小为 256M。

```shell
obclient [test]> ALTER SYSTEM SET audit_log_rotate_on_size='256M';

```

## 设置日志清理

通过配置项 [audit_log_max_size](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001502007) 和 [audit_log_prune_seconds](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001502057) 控制归档后审计日志的容量以及保存时间，两者可以同时生效。每次归档日志生成新的日志文件时会检查是否需要清理日志，日志总量在每个 OBServer 目录中单独计算。

设置配置项 `audit_log_max_size` 来控制单个 OBServer 上审计日志的最大保存量，默认为 0M，表示不保存审计日志。

例如，设置单个 OBServer 上审计日志的最大保存量为 1G。

```shell
obclient [test]> ALTER SYSTEM SET audit_log_max_size='1G';

```

设置配置项 `audit_log_prune_seconds` 来控制审计日志的最大保存时间，单位为秒且配置时不需要写明单位，默认为 0 表示不保存审计日志。

例如，设置审计日志的最大保存时间 2h。

```shell
obclient [test]> ALTER SYSTEM SET audit_log_prune_seconds=7200;

```

## 设置日志压缩（可选）

通过设置配置项 [audit_log_compression](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001502018) 控制日志压缩的启用。如果开启了压缩，日志归档时会直接生成压缩后的文件，压缩算法仅支持 `ZSTD`，也支持流式压缩，且压缩后的文件使用外部工具 [zstd](https://github.com/facebook/zstd) 直接解压。

#### 说明

仅压缩归档后的文件，`audit.log` 文件是不压缩的。

例如，设置审计日志使用的压缩算法为 `ZSTD`。

```shell
obclient [test]> ALTER SYSTEM SET audit_log_compression='ZSTD';

```

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
