### Code Reference
-
DESC:oracle19c rac 环境下部署keystore到asm共享存储&验证pdb和cdb环境中透明加密功能
-
Last Update:2020-7-15 14:45
-
Time:2020-7-30 13:31 Tittle:oracle19c rac 环境下部署keystore到asm共享存储&验证pdb和cdb环境中透明加密功能
-
Version:003
-
配置软件秘钥仓库
软件秘钥仓库是一个容器,在这个容器中存储着透明加密的master key.
-
步骤 1:在sqlnet.ora文件中配置ENCRYPTION_WALLET_LOCATION(软件秘钥仓库路径)参数
-
步骤 1.1:(单接节点操作)使用grid用户登录到asmcmd创建keystore路径,此处使用asm路径+DATA/keyStore
asmcmd > cd DATA asmcmd > mkdir keyStore asmcmd > cd keyStore asmcmd > mkdir tde
-
步骤 1.2:(全部节点操作)使用grid用户登录修改sqlnet.ora文件,重启系统监听。
cd /u01/app/19.0.0/grid/network/admin 编辑sqlnet.ora增加如下内容,没有文件请自己添加该文件 NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT) ENCRYPTION_WALLET_LOCATION= (SOURCE= (METHOD=FILE) (METHOD_DATA= (DIRECTORY=+DATA/keyStore)))
-
步骤 1.3:(全部节点操作)使用oracle用户登录修改initcdb1.ora init.ora文件,完成后重启集群环境
cd /u01/app/oracle/product/19.0.0/db_1/dbs 增加以下内容到initcdb1.ora(每个节点都要修改,后面1是编码,各个节点不同) cdb1.WALLET_ROOT=+DATA/keyStore cdb2.WALLET_ROOT=+DATA/keyStore cdb1.EXTERNAL_KEYSTORE_CREDENTIAL_LOCATION=+DATA/keyStore cdb2.EXTERNAL_KEYSTORE_CREDENTIAL_LOCATION=+DATA/keyStore 增加以下内容到init.ora WALLET_ROOT=+DATA/keyStore EXTERNAL_KEYSTORE_CREDENTIAL_LOCATION=+DATA/keyStore
-
步骤 1.4:(单节点操作)root用户登录重启集群服务(启动较慢注意观察各节点&服务的状态)
启动|停止|检查全部集群服务 crsctl stop cluster -all crsctl start cluster -all 检查各工作服务状态(一定要等到状态全部正常,数据库正常启动才可以继续操作) crsctl status res -t
-
-
步骤 2:创建一个软件秘钥仓库
请确认步骤1操作完成,检查路径正确无误。
-
创建一个有密码的软件秘钥仓库
-
步骤 2.2:sys用户执行下面命令创建有密码的软件秘钥仓库
此处使用步骤1创建的软件秘钥仓库路径密码为(oadsffLDKF^#f23),请根据具体情况修改.
-
确认下软件秘钥仓库是否在设定的位置和状态是否正常
select * from V$ENCRYPTION_WALLET;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pHOzy1DV-1596093083680)(http://192.168.100.132/uploads/big/c78c1458000240472865b3fa10ca111a.png)]
刚配置ENCRYPTION_WALLET_LOCATION情况下软件秘钥仓库状态是NOT_AVAILABLE
-
(可选)如果上面查询到其他的路径下面已经存在了秘钥仓库请先备份,以防出现秘钥丢失问题(如果没有执行会报错,这个报错没有关系)
钱包密码请咨询管理员,并进行物理备份
ADMINISTER KEY MANAGEMENT BACKUP KEYSTORE IDENTIFIED BY xxxxxxxxxxxxxxxxxx
-
创建软件秘钥仓库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mzeOptuC-1596093083684)(http://redevm/uploads/big/96eea4f68a110369b825e79d440323bb.png)]
-- 在asm上创建keystore ADMINISTER KEY MANAGEMENT CREATE KEYSTORE '+DATA/keyStore/tde/' IDENTIFIED BY oadsffLDKF#f23 -- 设置文件类型为FILE ALTER SYSTEM SET TDE_CONFIGURATION="KEYSTORE_CONFIGURATION=FILE";
-
确认状态,现在为关闭状态(默认创建完成为关闭状态)
select * from V$ENCRYPTION_WALLET;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qiBpVxND-1596093083688)(http://192.168.100.132/uploads/big/a0c0de968a9471bb918d79bd110e7842.png)]
-
-
-
-
-
步骤 3: 在使用软件秘钥仓库之前,必须手动打开软件秘钥仓库
使用sys登录数据库,在多租户环境中必须先登录到CDB$ROOT容器来操作,然后进入到PDB中再次打开软件秘钥仓库.
注意:下面操作先在CDB后再PDB中操作.ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY oadsffLDKF#f23
- 确认状态,现在为开启状态了,但是还没有还没有master key,处于OPEN_NO_MASTER_KEY状态.
select * from V$ENCRYPTION_WALLET;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6OlHRERl-1596093083691)(http://192.168.100.132/uploads/big/0676a67e7df71518e5b528a934dec76b.png)]
-
步骤 4: 在软件秘钥仓库中配置表空间加密使用的master key
注意:下面操作先在CDB后再PDB中操作.(可能会报主秘钥不存在,请忽略,检查wallet状态为password就是正常状态)-- sys 用户登录 ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY oadsffLDKF#f23 WITH BACKUP USING 'backup' container = CURRENT
- 确认状态,现在为开启状态了.
select * from V$ENCRYPTION_WALLET;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6qd6Zzup-1596093083696)(http://redevm/uploads/big/5ce6367d07fad0e039704434cf693712.png)]
- 注意:cdb|pdb的状态需要是READ WRITE
select open_mode from v$database; select * from V$PDBS;
-
步骤 5: 开始创建加密表空间&软件秘钥仓库可以正常使用&验证透明加密功能正常
完成步骤4操作后我们在PDB3中创建一个加密表空间测试下透明加密.
-
步骤 5.1 为表空间加密配置初始化兼容参数
-- 登录到PDB2中 conn c##sec_admin/password@pdb2.example.com as syskm -- 查看兼容参数(保证参数是11.2.0.0 or higher,否则请修改该启动参数) SHOW PARAMETER COMPATIBLE
-
步骤 5.2 设置表空间加密主秘钥(如果步骤4已经配置相应的pdb此处忽略,否则请参照步骤4)
-
步骤 5.3 创建加密表空间和KEYSTORE闭合开启测试(在PDB中测试)
-
CDB中测试TDE
-- 设置秘钥为文件系统 ALTER SYSTEM SET TDE_CONFIGURATION="KEYSTORE_CONFIGURATION=FILE" ; -- 查看keystore状态 select * from V$ENCRYPTION_WALLET; -- 开|关keystore ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE IDENTIFIED BY oadsffLDKF#f23; ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY oadsffLDKF#f23; -- 创建主秘钥 ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY oadsffLDKF#f23 WITH BACKUP USING 'backup' container = CURRENT; -- 查看数据文件位置 select * from dba_data_files; -- 创建加密表空间 DROP TABLESPACE redeEncrypt INCLUDING CONTENTS AND DATAFILES; CREATE TABLESPACE redeEncrypt DATAFILE '+DATA/CDB/DATAFILE/encrypt.dbf' SIZE 10M ENCRYPTION USING 'AES192' default storage(encrypt); -- 创建测试表 drop table test1; create table test1 tablespace redeEncrypt as select 1 as "test" from dual; select * from test1;
-
PDB中测试TDE
-- 查看keystore状态 select * from V$ENCRYPTION_WALLET; -- 开|关keystore ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE IDENTIFIED BY oadsffLDKF#f23; ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY oadsffLDKF#f23; -- 创建主秘钥 ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY oadsffLDKF#f23 WITH BACKUP USING 'backup' container = CURRENT; -- 查看数据文件位置 select * from dba_data_files; -- 创建加密表空间 DROP TABLESPACE pubEncrypt INCLUDING CONTENTS AND DATAFILES; CREATE TABLESPACE pubEncrypt DATAFILE '+DATA/CDB/DATAFILE/pubEncrypt.dbf' SIZE 10M ENCRYPTION USING 'AES192' default storage(encrypt); -- PDB普通用户 create user rede identified by 1; grant connect,resource to rede; alter user rede default tablespace pubEncrypt; grant unlimited tablespace to rede; -- 创建测试表 drop table test1; create table test1 tablespace pubEncrypt as select 1 as "test" from dual; select * from test1;
-
注意:需要测试软件秘钥仓库开启关闭后状态均正常,表在软件秘钥仓库关闭状态下被查询报ora-28365为测试通过.
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XWOPj65p-1596093083698)(http://redevm/uploads/big/7a07dcd98fa7a320b7bfe290c9f840e8.png)]
-
-
-
-
参考
- keystore路径创建后不可以再修改(重要),使用的时候只需要打开和关闭主秘钥。
- 验证工作完成后再部署表空间加密.
- 打开软件秘钥仓库需要两层操作先在CDB后到PDB中打开.
- c##sec_admin用户可以使用sys账号代替,c##sec_admin容易出现权限缺失问题.
- 查询加密表空间
select * from dba_tablespaces T where T.encrypted = 'YES'
-
本文地址:https://blog.csdn.net/u011078141/article/details/107674717