首批通过分布式安全可靠测评,为关键业务系统打造
ALTER SENSITIVE RULE
更新时间:2026-06-15 17:41:11
描述
该语句用来修改敏感数据保护规则。
权限要求
执行 ALTER SENSITIVE RULE 语句,需要当前用户拥有 CREATE SENSITIVE RULE 权限。更多有关 OceanBase 数据库权限的详细介绍,请参见 Oracle 模式下的权限分类。
语法
-- 新增敏感列
ALTER SENSITIVE RULE <rule_name> ADD COLUMN <sensitive_field_list>;
-- 删除敏感列
ALTER SENSITIVE RULE <rule_name> DROP COLUMN <sensitive_field_list>;
-- 启用规则
ALTER SENSITIVE RULE <rule_name> ENABLE;
-- 禁用规则
ALTER SENSITIVE RULE <rule_name> DISABLE;
-- 修改加密算法
ALTER SENSITIVE RULE <rule_name> USING ENCRYPTION [= <encryption_method>];
参数说明
具体参数说明如下:
| 参数 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
| rule_name | 字符 | 敏感规则的名称,在租户内唯一。 | |
| sensitive_field_list | 字符 | 表示要加密的列,格式为 user.table(col1, col2), user2.table2(col3, col4), ...,也即每一个敏感项指明表上的一个或多个列,每个列之间以逗号隔开。各个敏感项之间用逗号隔开,指定敏感规则保护的列,一条规则可以指定多个用户、多张表上的多个列。参数说明:
|
|
| encryption_method | 字符 | 加密方法。默认值为 aes-256,实际指的是 AES-256-ECB 加密算法,取值范围见下文。 |
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) |
修改敏感规则时,需要了解以下注意事项:
- 修改敏感规则后立即生效。
ADD/DROP COLUMN的参数sensitive_field_list和CREATE SENSITIVE RULE语法中该字段一致。DISABLE会临时禁用当前敏感规则,但不会将它删除(规则创建后默认是启用的状态)。
修改敏感规则时,需要遵守以下限制:
ADD COLUMN添加的列不能被任何已存在的规则所保护。DROP COLUMN删除的列必须是指定的规则所保护的列。
示例
示例如下:
-- 向敏感规则 r1 中增加 tbl2(c), db2.tbl3(x);
ALTER SENSITIVE RULE r1 ADD COLUMN tbl2(c), db2.tbl3(x);
-- 从敏感规则 r1 中删除 tbl2(c)
ALTER SENSITIVE RULE r1 DROP COLUMN tbl2(c);
-- 启用敏感规则 r1
ALTER SENSITIVE RULE r1 ENABLE;
-- 禁用敏感规则 r1
ALTER SENSITIVE RULE r1 DISABLE;
-- 修改敏感规则 r1 的加密算法为默认算法
ALTER SENSITIVE RULE r1 USING ENCRYPTION;
-- 修改敏感规则 r1 的加密算法为 sm4-cbc
ALTER SENSITIVE RULE r1 USING ENCRYPTION = 'sm4-cbc';