ORACLE_OCP多租户之CDB和PDB数据加密
一、通过透明数据加密对受保护的数据进行加密
- 每个PDB一个主密钥来加密PDB数据
- 每个PDB都有自己的主密钥,用于加密PDB中的数据。
- 当PDB从一台主机移到另一台主机时,必须将主密钥从源数据库密钥库传输到目标数据库密钥库。
二、密钥库和主密钥
ENCRYPTION_WALLET_LOCATION =
(SOURCE =
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY =
/u01/app/oracle/product/12.1.0/dbhome_1/wallet)))
三、创建密钥库
SQL> ADMINISTER KEY MANAGEMENT CREATE KEYSTORE
2 ‘u01/app/oracle/product/12.1.0/dbhome_1/wallet’
3 IDENTIFIED BY software_keystore_password;
四、打开密钥库
- 打开所有PDB或仅特定PDB的密钥库.
SQL> CONNECT sys@PDBA AS SYSKM
SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE
2 OPEN IDENTIFIED BY password CONTAINER = CURRENT;
五、设置主加密密钥
- 设置PDB的主加密密钥
SQL> CONNECT sys@PDBA AS SYSKM
SQL> ADMINISTER KEY MANAGEMENT SET KEY
2 IDENTIFIED BY password WITH BACKUP
3 CONTAINER = CURRENT;
通过三、四、五步,您现在可以加密表空间和表中的数据.
六、拔出并插入带有加密数据的PDB
-
导出将被拔出的PDB的主加密密钥.
SQL> ADMINISTER KEY MANAGEMENT
2 EXPORT ENCRYPTION KEYS WITH SECRET my_secret
3 TO ‘/tmp/export.p12’ IDENTIFIED BY password
4 CONTAINER = ‘HR_PDB1’; -
拔出并插入新PDB.
-
将主加密密钥导入到新的PDB中.
SQL> ADMINISTER KEY MANAGEMENT
2 IMPORT ENCRYPTION KEYS WITH SECRET my_secret
3 FROM ‘/tmp/export.p12’ CONTAINER = ‘HR_PDB2’
4 IDENTIFIED BY password WITH BACKUP; -
打开密钥库.
SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE
2 OPEN IDENTIFIED BY password CONTAINER = CURRENT;
七、使用Oracle Database Vault保护数据
- 在Oracle Database Vault中,每个PDB都有自己的Database Vault元数据。 并且互相隔离。