在 Oracle 20c 中对默认表空间的加密算法方面有所增强,可以通过设置:
TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM,动态参数来定义表空间创建操作的默认加密算法。
例如,如果将 :
TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM 设置为AES256,则以后的表空间创建操作将使用AES256作为默认加密算法。
TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM 适用于脱机和联机表空间加密操作。
此外,当您使用 DBCA 创建新表空间时,可以通过使用 DBCA 命令行进行静默安装来设置默认表空间加密算法。支持的加密算法为:AES128、AES192、AES256 和 3DES168。
如果未设置 :
TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM,则默认的加密算法是以前版本中使用的默认加密算法:AES128。
默认情况下,您在Database Classic Cloud Service数据库中创建的所有新表空间都是加密的。
但是,并非在创建数据库部署时创建的所有表空间都被加密:
在 Oracle Database 11g 数据库中,创建数据库部署时创建的表空间均未加密。
在 Oracle Database 12c 第1版数据库中,创建数据库部署时创建的表空间均未加密。在 Oracle Database 12c 第2版或更高版本的数据库中,只有在创建数据库部署时创建的 USERS 表空间才被加密。 其他表空间均未加密。包括 CDBROOT,PDBSEED 和创建数据库部署时创建的 PDB。
- 创建加密的表空间
默认情况下,用户创建的表空间是加密的。
默认情况下,使用 CREATE TABLESPACE
命令创建的所有新表空间都使用AES128加密算法进行加密。您无需包括 USING 'encrypt_algorithm'
子句即可使用默认加密。
您可以通过在 CREATE TABLESPACE
命令中包含 USING 'encrypt_algorithm'
子句来指定另一种受支持的算法。支持的算法包括:AES256,AES192,AES128 和 3DES168。
示例:
在以下示例中,第一个语句通过打开钱包启用数据库的加密。第二条语句创建一个加密的表空间。
代码语言:javascript复制ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "wallet_password";
CREATE TABLESPACE encrypt_ts
DATAFILE '$ORACLE_HOME/dbs/encrypt_df.dbf' SIZE 1M
ENCRYPTION USING 'AES256' ENCRYPT;
- 管理表空间加密
您可以管理软件密钥库(在Oracle Database 11g中称为Oracle钱包)、主加密密钥,并控制默认情况下是否启用加密。
- 管理软件密钥库和主加密密钥
表空间加密使用基于密钥的两层体系结构来透明地加密(和解密)表空间。主加密密钥存储在外部安全模块(软件密钥库)中。此主加密密钥用于对表空间加密密钥进行加密,而该密钥又用于对表空间中的数据进行加密和解密。
在 Database Classic Cloud Service 上创建数据库部署后,将创建本地自动登录软件密钥库。密钥库在计算节点本地,并受系统生成的密码保护。自动登录软件密钥库在访问时会自动打开。
您可以使用 dbaascli 实用程序的 tde rotate masterkey 子命令来更改(旋转)主加密密钥。执行此子命令时,将提示您输入密钥库密码。输入在数据库部署创建过程中指定的密码。例如:
代码语言:javascript复制DBAAS>tde rotate masterkey
Executing command tde rotate masterkey
Enter keystore password:
Successfully rotated TDE masterkey
- 控制默认表空间加密
ENCRYPT_NEW_TABLESPACES 初始化参数控制新表空间的默认加密。在数据库经典云服务数据库中,默认情况下此参数设置为 CLOUD_ONLY。
该参数的值如下:
值 | 描述 |
---|---|
ALWAYS | 在创建期间,除非在 ENCRYPTION 子句中指定了其他算法,否则表空间将使用 AES128 算法透明加密。 |
CLOUD_ONLY | 除非在 ENCRYPTION 子句中指定了其他算法,否则在数据库 Classic Cloud Service 数据库中创建的表空间将使用 AES128 算法透明加密。 对于非云数据库,仅在指定了 ENCRYPTION 子句的情况下,才对表空间进行加密。 这是默认值。 |
DDL | 在创建期间,表空间默认情况下不会透明加密,并且仅在指定了 ENCRYPTION 子句的情况下才进行加密。 |