---
title: "数据库透明加密概述 - OceanBase 数据库 V4.3.1 | OceanBase 文档中心"
description: 数据库透明加密概述 数据存储加密是指对数据和 Clog 等保存在磁盘中的数据进行无感知的加密，即透明加密（简称 TDE）。数据在写入存储设备前自动进行加密，读取时自动解密，该过程对用户是透明的，黑客和恶意用户无法从数据文件、数据库备份或磁盘中读取到敏感数据。 OceanBase 数据库的用户数据和备份最终都是以二进制…
---
切换语言

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

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

# 数据库透明加密概述

更新时间：2026-04-10 11:58:01

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.1/zh-CN/600.manage/500.security-and-permissions/500.data-storage-encryption/100.datastore-encryption-overview.md)  

数据存储加密是指对数据和 Clog 等保存在磁盘中的数据进行无感知的加密，即透明加密（简称 TDE）。数据在写入存储设备前自动进行加密，读取时自动解密，该过程对用户是透明的，黑客和恶意用户无法从数据文件、数据库备份或磁盘中读取到敏感数据。

OceanBase 数据库的用户数据和备份最终都是以二进制的形式，存储在磁盘或其它形式的永久存储上。无数据访问权限的用户可能会接触到这些存储，再通过外部操作对数据存储进行读取和解读，从而导致数据泄露。虽然 OceanBase 数据库的数据以压缩形式保存，具备一定的保密性，但仍旧有被破解的风险。为了保护存储在内存和硬盘中数据的安全，OceanBase 数据库现阶段支持国际上主流的加密算法 AES，与此同时，还支持国密算法 SM4。

## 两级密钥体系

透明数据加密使用两级密钥体系实现加解密功能。开启加密的最小粒度为数据库中的一个表，需要开启加密的表需要放到一个加密的表空间（Tablespace）中。OceanBase 数据库数据的加密单位为表空间，表空间仅是为了兼容 Oracle 数据库而设计的概念，可以简单理解为表空间是一组表的集合。每个加密的表空间设置有加密算法及对应的数据密钥，用于给表空间中的数据进行加密。每个租户有一个主密钥，用于对表空间的数据密钥进行加密，为了防止未经授权的解密操作，通常将主密钥存储于专门的 Keystore 中。

![存储加密](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.2.1/manage/datastore-encryption.png)

为了保证数据的安全性，用户无法使用 Keystore 直接查看主密钥和加密密钥信息，也无法指定主密钥和加密密钥，主密钥和加密密钥由系统生成，并且不会直接通过明文存储到磁盘上，大大提高了系统的安全性。

Keystore 是主密钥的管理模块，提供密钥管理服务。Keystore 的功能包括：

- 主密钥的生成：主密钥由 Keystore 根据加密算法生成，用户无法指定，这样也更加的安全。
 - 主密钥相关信息存储：根据主密钥相关信息 Keystore 可以获取得到主密钥，Keystore 需要保证相关信息的多副本特性，一致性特性和故障处理。
 - 主密钥管理和多版本控制：Keystore 负责主密钥的修改和多版本控制，多版本机制允许新生成的主密钥无需立即生效，可以逐步完成主密钥的替换。
 - 获取主密钥的高可用服务。
 - 处理 Keystore 的操作指令。

开启透明加密时需要指定其主密钥存储方式，通过配置项 `tde_method` 来控制，其取值如下：

| `tde_method` 取值 | 含义 |
| --- | --- |
| `none` | 关闭存储加密 |
| `internal` | 开启，主密钥存储于内部表 |
| `bkmi` | 开启，主密钥存储于外部 BKMI 系统 |

在 OceanBase 数据库中，当前 “私有云” 仅支持 internal 方式的透明表空间加密。internal 方式的存储主密钥，其加密信息主要在内部表中进行管理。为了避免日志回放时的循环依赖，该加密方式下的 Clog 不做加密。

开启加密时，使用主密钥对数据密钥进行加密后得到加密的数据密钥密文，该密文会存储在内部表、宏块头部、Clog 头部中，数据密钥不会明文存储在任何地方。需要加解密数据时，使用主密钥解密该密文后得到数据密钥，从而对宏块或 Clog 中的用户数据进行加解密操作。

**使用限制：**

- 系统租户不能开启加密。
 - 租户配置存储加密后，除非租户重建，否则无法再切换为其他加密方式。

## 加密生效机制

用户存储在磁盘上的数据包括了 clog 和宏块两类，只有在将数据实际写到磁盘上时加密才会生效，内存中的数据是不加密的。若将原本不加密的表改为加密后，原先已经存储在磁盘上的未加密的 clog 和宏块数据不会变为加密，后续新写到磁盘上的数据才是加密的。由于每一条 clog 和每一个宏块都会记录加密元信息，因此加密和未加密的数据可以同时存在。

clog 是采用追加写的方式写到磁盘上的，因此旧的未加密的 clog 永远不会变为加密。等开启加密一段时间，旧的 clog 都被回收后，磁盘上的 clog 数据就会都成为加密数据了。对于宏块数据，只有在转储或合并时才会发生写入，可以手动触发全量合并将未加密的宏块数据重写为加密的。

## 支持的加密算法

OceanBase 数据库现阶段支持国际上主流的加密算法 AES，与此同时，还支持国密算法 SM4。

| 算法 | 密钥长度 | 模式 |
| --- | --- | --- |
| AES | 128 bits 192 bits 256 bits | ecb，gcm |
| SM4 | 128 bits | cbc，gcm |

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