oracle19c rac 环境下部署keystore到asm共享存储&验证pdb和cdb环境中透明加密功能

### 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

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐