---
title: "列加密权限管理 - OceanBase 数据库 V4.6.0 | OceanBase 文档中心"
description: 列加密权限管理 在配置好列加密规则后，合理的权限管理是确保数据安全的关键环节。本文档将详细介绍 OceanBase 列加密功能的权限体系和管理语法，帮助你建立完善的权限控制机制，确保敏感数据只对授权用户可见。 准备工作 在创建列加密规则前，需要配置密钥获取方式，获取主密钥： -- 设置透明表空间加密的方式，取值参见 …
---
切换语言

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

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

# 列加密权限管理

更新时间：2026-06-22 08:13:55

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.6.0/zh-CN/600.manage/500.security-and-permissions/500.data-encryption/500.column-encryption/300.column-encryption-of-oracle-mode/300.column-encryption-permissions-of-oracle-mode.md)  

在配置好列加密规则后，合理的权限管理是确保数据安全的关键环节。本文档将详细介绍 OceanBase 列加密功能的权限体系和管理语法，帮助你建立完善的权限控制机制，确保敏感数据只对授权用户可见。

## 准备工作

在创建列加密规则前，需要配置密钥获取方式，获取主密钥：

```sql
-- 设置透明表空间加密的方式，取值参见 tde_method（如 internal、obcloud、ocp 等）
ALTER SYSTEM SET tde_method = '<encryption_method>';
-- 创建 Keystore
ADMINISTER KEY MANAGEMENT CREATE KEYSTORE keystore_name IDENTIFIED BY oceanbase_password;
-- 开启 Keystore
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY oceanbase_password;
-- 设置主密钥，首次执行需要等待 20 秒使主密钥生效
ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY oceanbase_password;

```

`tde_method` 参数具体说明请参见 [tde_method](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005685459)。

## 权限类型

列加密功能采用基于规则的权限类型，通过数据保护规则控制用户对敏感列的访问权限。OceanBase 在 Oracle 权限体系中新增了专门的权限类型来支持列加密功能，包含系统权限和敏感规则级权限。

### 系统权限

| 权限名称 | 说明 | 默认拥有者 | 升级处理 | 权限限制 | 功能范围 | 包含关系 |
| --- | --- | --- | --- | --- | --- | --- |
| CREATE SENSITIVE RULE | 允许用户创建和删除敏感规则。 | SYS 用户。 | 系统升级时自动赋予。 | SYS 用户权限不能被 `REVOKE`。 | 可使用 `CREATE/DROP SENSITIVE RULE` 语法。 | 包含在 `ALL PRIVILEGES` 中。 |
| PLAINACCESS | 允许用户访问所有明文数据，不受数据保护规则影响。 | SYS 用户。 | 系统升级时自动赋予。 | SYS 用户权限不能被 `REVOKE`。 | 可访问所有明文数据，不受任何数据保护规则影响。 | **不包含**在 `ALL PRIVILEGES` 中。 |

### 规则级权限

| 权限名称 | 说明 | 权限范围 | 自动授权 |
| --- | --- | --- | --- |
| PLAINACCESS | 允许用户访问特定规则所关联列的明文数据。 | 拥有某条规则上的 `PLAINACCESS` 权限的用户可以访问这条规则所关联的列的明文数据。 | 创建规则的用户**不会**自动拥有这条规则的 `PLAINACCESS` 权限。 |

## 权限管理

### 授予权限语法及示例

    授予系统权限   授予规则级权限

语法如下：

```sql
-- 授予用户/角色创建敏感规则的权限. 该权限只有系统级
GRANT CREATE SENSITIVE RULE TO <user_or_role_list>;

-- 授予用户/角色系统级的明文访问权限
GRANT PLAINACCESS ANY SENSITIVE RULE TO  <user_or_role_list>;

```

参数说明如下：

| 参数 | 说明 | 示例 |
| --- | --- | --- |
| `user_or_role_list` | 用户或角色列表，多个用户用逗号分隔 | `u1, u2, r1` |

示例如下：

```sql
-- 授予用户 u1 系统级的创建敏感规则的权限
GRANT CREATE SENSITIVE RULE TO u1;

-- 可以一次性对多个用户/角色授予权限
-- 授予用户 u2 和角色 r1 创建敏感规则的权限
GRANT CREATE SENSITIVE RULE TO u2, r1;

```

语法如下：

```sql
-- 规则级赋权。注意需要使用 SENSITIVE RULE 关键字
GRANT PLAINACCESS ON SENSITIVE RULE <rule_name> TO <user_or_role_list>;

```

参数说明如下：

| 参数 | 说明 | 示例 |
| --- | --- | --- |
| `rule_name` | 敏感规则的名称 | `'salary_encryption'`, `'credit_card_rule'` |
| `user_or_role_list` | 用户或角色列表，多个用户用逗号分隔 | `u1, u2, r1` |

示例如下：

```sql
-- 授予 u1 系统级的明文访问权限（同理可以对多个用户/角色同时授予权限）
GRANT PLAINACCESS ANY SENSITIVE RULE TO u1;

-- 授予 u1 对于规则 r1 的明文访问权限
-- 同理可以对多个用户/角色同时授予权限（但一次只能授予一个规则上的权限）
GRANT PLAINACCESS ON SENSITIVE RULE r1 TO u1;

```

注意，不支持更细粒度（表、列级）的 `PLAINACCESS` 权限的赋权。使用如下形式的语法会报错：

```sql
-- 错误示例
GRANT PLAINACCESS ON <database>.<table> (<col_list>) TO <user_or_role_list>;

```

### 撤销权限语法及示例

    撤销系统权限   撤销规则级权限

语法如下：

```sql
-- 撤回用户/角色创建敏感规则的权限. 该权限只有系统级
REVOKE CREATE SENSITIVE RULE FROM <user_or_role_list>;

-- 撤回用户/角色系统级的明文访问权限
REVOKE PLAINACCESS ANY SENSITIVE RULE FROM <user_or_role_list>;

```

参数说明如下：

示例如下：

```sql
-- 撤权
REVOKE CREATE SENSITIVE RULE FROM u1;

-- 可以一次性对多个用户/角色撤回权限
-- 撤回用户 u2 和角色 r1 创建敏感规则的权限
REVOKE CREATE SENSITIVE RULE FROM u2, r1;

```

语法如下：

```sql
-- 规则级撤权。注意需要使用 SENSITIVE RULE 关键字
REVOKE PLAINACCESS ON SENSITIVE RULE <rule_name> FROM <user_or_role_list>;

```

参数说明：

示例如下：

```sql
-- 撤回 u1 系统级的明文访问权限（同理可以对多个用户/角色同时撤回权限）
REVOKE PLAINACCESS ANY SENSITIVE RULE FROM u1;

-- 撤回 u1 对于规则 r1 的明文访问权限
-- 同理可以对多个用户/角色同时撤回权限（但一次只能撤回一个规则上的权限）
REVOKE PLAINACCESS ON SENSITIVE RULE r1 FROM u1;

```

注意，不支持更细粒度（表、列级）的 `PLAINACCESS` 权限的撤权。使用如下形式的语法会报错：

```sql
-- 错误示例
REVOKE PLAINACCESS ON <database>.<table> (<col_list>) FROM <user_or_role_list>;

```

### 查看权限

    查看敏感规则   查看权限信息

支持查看当前租户下的所有敏感数据保护规则，或查看指定表、指定用户关联的所有敏感规则。支持使用 `LIKE` 子句过滤规则名。

语法如下：

```sql
SHOW SENSITIVE RULES opt_show_condition
| SHOW SENSITIVE RULES from_or_in relation_factor from_or_in USER user_factor opt_show_condition
| SHOW SENSITIVE RULES from_or_in USER user_factor opt_show_condition;

```

参数说明：

| 参数 | 说明 | 示例 |
| --- | --- | --- |
| `opt_show_condition` | 可选的显示条件，如 `LIKE` 子句 | `LIKE '%rule1%'` |
| `from_or_in` | 可选的从子句 | `FROM` 或 `IN` |
| `relation_factor` | 表名 | `tb1`, `employees` |
| `user_factor` | 用户名 | `u1`, `u2` |

示例如下：

```sql
-- 查看当前租户下所有的 sensitive rules
SHOW SENSITIVE RULES;

-- 查看 tb1 关联的所有数据保护规则
SHOW SENSITIVE RULES FROM tb1;

-- 查看 u1.tb1 关联的所有数据保护规则
SHOW SENSITIVE RULES FROM tb1 FROM u1;

-- 查看 u1 用户关联的所有数据保护规则
SHOW SENSITIVE RULES FROM USER u1;

-- 使用 LIKE 子句过滤规则名
SHOW SENSITIVE RULES LIKE '%rule1%';
SHOW SENSITIVE RULES FROM tb1 LIKE '%rule1%';
SHOW SENSITIVE RULES FROM tb1 FROM u1 LIKE '%rule1%';
SHOW SENSITIVE RULES FROM USER u1 LIKE '%rule1%';

```

返回结果形式示例如下：

| 列名 | rule_id | rule_name | POLICY | METHOD | ENABLED | PROTECT_COLS |
| --- | --- | --- | --- | --- | --- | --- |
| 示例 | 1 | 'ENCRYPT_COL' | 'ENCRYPTION' | 'AES-256-ECB' | 'YES' | 'user1.tbl1(col_1, col_2), user2.tbl2(col_3), user3.tbl4(col_4, col_5)' |

返回结果字段说明：

| 字段名 | 说明 | 示例值 |
| --- | --- | --- |
| `rule_id` | 规则 ID，系统自动生成 | `1`, `2` |
| `rule_name` | 规则名称 | `'ENCRYPT_COL'` |
| `POLICY` | 策略类型 | `'ENCRYPTION'` |
| `METHOD` | 加密方法 | `'AES-256-ECB'` |
| `ENABLED` | 是否启用 | `'YES'`, `'NO'` |
| `PROTECT_COLS` | 受保护的列，格式为 `user.table(columns)` | `'user1.tbl1(col_1, col_2)'`，不同表之间以逗号隔开。 |

Oracle 模式下不支持使用 `SHOW GRANTS` 语句查看相关权限信息，需要使用以下视图查看：

| 视图名称 | 说明 |
| --- | --- |
| [DBA_OB_SENSITIVE_RULE_PLAINACCESS_USERS](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005683795) | 查看所有拥有明文访问权限的用户。 |
| `ALL_OBJECTS`、`DBA_OBJECTS`、`USER_OBJECTS` | 可查看敏感规则的保护对象。 |
| `DBA_TAB_PRIVS`、`DBA_SYS_PRIVS`、`ALL_TAB_PRIVS`、`USER_TAB_PRIVS`、`ROLE_TAB_PRIVS` | 可查看被授予的规则级明文访问（PLAINACCESS）权限。 |
| `USER_SYS_PRIVS`、`ROLE_SYS_PRIVS` | 可查看被授予的系统级创建敏感规则（CREATE SENSITIVE RULE）权限和明文访问（PLAINACCESS）权限。 |

## 相关文档

- [列加密功能概述](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005682903)
 - [创建列加密规则](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005685783)

 上一篇 下一篇 ![有帮助](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) 咨询热线
