首批通过分布式安全可靠测评,为关键业务系统打造
CREATE SENSITIVE RULE
更新时间:2026-05-31 18:10:42
描述
该语句用来创建敏感数据保护规则。
权限要求
执行 CREATE SENSITIVE RULE 语句,需要当前用户拥有 CREATE SENSITIVE RULE 权限。更多有关 OceanBase 数据库权限的详细介绍,请参见 Oracle 模式下的权限分类。
语法
CREATE SENSITIVE RULE <rule_name>
ON <sensitive_field_list>
USING ENCRYPTION [ = <encryption_method>];
参数说明
具体参数说明如下:
| 参数 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
| rule_name | 字符 | 加密规则的名称,在租户内唯一。 | |
| sensitive_field_list | 字符 | 表示要加密的列,格式为 user.table(col1, col2), user2.table2(col3, col4), ...,也即每一个敏感项指明表上的一个或多个列,每个列之间以逗号隔开。各个敏感项之间用逗号隔开,指定敏感规则保护的列,一条规则可以指定多个用户、多张表上的多个列。参数说明:
|
|
| encryption_method | 字符 | USING ENCRYPTION 可以不接参数,表示使用默认加密算法,默认是 aes-256,实际指的是 AES-256-ECB 加密算法,也可以写成 USING ENCRYPTION = DEFAULT,含义相同。 |
encryption_method 允许的取值如下:
| 取值(在 SQL 语法中使用) | 实际使用的加密算法 | 密钥长度 | 模式 | 说明 |
|---|---|---|---|---|
| aes-256 | AES-256-ECB | 256 位 | ECB | 默认算法 |
| aes-128 | AES-128-ECB | 128 位 | ECB | |
| aes-192 | AES-192-ECB | 192 位 | ECB | |
| aes-128-gcm | AES-128-GCM | 128 位 | GCM | 高安全级别,提供认证加密(AEAD) |
| aes-192-gcm | AES-192-GCM | 192 位 | GCM | 高安全级别,提供认证加密(AEAD) |
| aes-256-gcm | AES-256-GCM | 256 位 | GCM | 高安全级别,提供认证加密(AEAD) |
| sm4-cbc | SM4-CBC | CBC | 高安全级别 | |
| sm4-GCM | SM4-GCM | GCM | 高安全级别,提供认证加密(AEAD) |
创建敏感规则时,需要了解以下注意事项:
- 规则创建后立即生效。
- 规则名称是租户级全局唯一的,但是仅针对敏感规则全局唯一,而不是对象级全局唯一。也即,可以同时存在一个名为
R1的表和一个名为R1的敏感规则,但不能同时存在两个名为R1的敏感规则。 - 在 Oracle 模式下,规则名称默认以大写形式存储。如果需要区分大小写,可以使用双引号括起名称标识符。被双引号包裹的规则名称会严格区分大小写,例如
R1与"r1"会被视为两个不同的规则,两者可以同时存在。 - 敏感规则的数据保护力度只有列级,没有表级或数据库级。即不允许创建全表或全数据库上的数据保护规则。如果需要对表上的所有列做加密,需要显式写出所有的列名。
- 一条规则可以指定保护一个或多个列。允许跨库跨表。
创建敏感规则时,需要遵守以下限制:
- 只能对用户表(包括视图)上的列施加数据保护规则。不能对系统表上的列施加数据保护规则。
- 一个列只能被一条规则所保护。
示例
示例如下:
-- 创建敏感规则 r1, 保护 tbl1(a), tbl2(b, c), user2.tbl3(e,f);
-- 使用默认加密算法 AES-256-ECB
CREATE SENSITIVE RULE r1 ON tbl1(a), tbl2(b, c), user2.tbl3(e,f)
USING ENCRYPTION;
-- 创建敏感规则 r2, 保护 tbl4(x, y), tbl5(z);
-- 使用 sm4-cbc 加密算法
CREATE SENSITIVE RULE r2 ON tbl4(x, y), tbl5(z)
USING ENCRYPTION = 'sm4-cbc';