oracle12c rac环境pdb&cdb配置keystore实现表空间加密|oracle12c表空间加密


### Code Reference
  • DESC:oracle12c rac环境pdb&cdb配置keystore实现表空间加密|oracle12c表空间加密
  • Last Update:2020-7-15 14:45
  • Snippet:Configuring a Software Keystore

    Jupyter Code
  • Time:2020-7-19 21:01 Tittle:oracle12c rac环境pdb&cdb配置keystore实现表空间加密|oracle12c表空间加密
  • Version:002
    • 配置software keystore路径

      软件秘钥仓库是一个容器,在这个容器中存储着透明加密的master key.
      • 步骤 1:配置ENCRYPTION_WALLET_LOCATION

        在sqlnet.ora文件中配置ENCRYPTION_WALLET_LOCATION(软件秘钥仓库路径)参数,我们使用系统默认的路径作为keystore路径,修改路径需要重新集群,修改配置文件等操作,全部节点都需要操作。

          -- 1 oracle登录查询实例加载的keystore路径(如果没有该文件路径请自行创建注意赋权给oracle)
          	select wrl_parameter from v$encryption_wallet;			
          	[root@node212c ~]# mkdir /u01/app/oracle/admin/orcl/wallet
          	[root@node212c ~]# chown -R oracle:oinstall /u01/app/oracle/admin/orcl/wallet
        
          -- 2 grid登录编辑sqlnet.ora(编辑完成后需要重启集群)
              ENCRYPTION_WALLET_LOCATION=
                (SOURCE=
                 (METHOD=FILE)
                  (METHOD_DATA=
                   (DIRECTORY=/u01/app/oracle/admin/orcl/wallet)))                
        
      • 步骤 2:创建一个软件秘钥仓库(software keystore)

        • 创建一个有密码保护的软件秘钥仓库
          • 步骤 2.1:sys执行下面命令创建有密码的软件秘钥仓库

            此处使用步骤1创建的软件秘钥仓库路径密码为(oadsffLDKF^#f23),请根据具体情况修改.
            • 确认下软件秘钥仓库是否在设定的位置和状态是否正常

                select * from V$ENCRYPTION_WALLET;
              


              [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J0sw3qou-1596512873632)(http://redevm/uploads/big/2ca128f0868b1f562b0b6accbef5df48.png)]

              刚配置ENCRYPTION_WALLET_LOCATION情况下软件秘钥仓库状态是NOT_AVAILABLE

            • 如果上面查询到其他的路径下面已经存在了秘钥仓库请先备份,以防出现秘钥丢失问题。

              钱包密码请咨询管理员,并进行物理备份

                ADMINISTER KEY MANAGEMENT BACKUP KEYSTORE IDENTIFIED BY oadsffLDKF#f23;
              
            • 创建软件秘钥仓库(全部节点都要操作)

              [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GTv3SYYL-1596512873635)(http://redevm/uploads/big/96eea4f68a110369b825e79d440323bb.png)]

                ADMINISTER KEY MANAGEMENT CREATE KEYSTORE 'XXXXXXXXXXXXXXXXXXX' IDENTIFIED BY oadsffLDKF#f23
              
              • 确认状态,现在为关闭状态(默认创建完成为关闭状态)

                  select * from V$ENCRYPTION_WALLET;
                


                [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1OTB1fO7-1596512873639)(http://redevm/uploads/big/d9cf431cdec247a47cba25a691b552e0.png)]

      • 步骤 3: 在使用软件秘钥仓库之前,必须手动打开

        • 分别在CDB,PDB手工打开keystore

          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-XOIyfSn5-1596512873641)(http://redevm/uploads/big/9a950b2700030aa4f76231c4657f3fa4.png)]

      • 步骤 4: 在software keystore中配置表空间加密使用的master key,全部节点同步keystore.

        • 分别在CDB,PDB中配置主秘钥

            ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY oadsffLDKF#f23 WITH BACKUP USING 'backup_identifier' container = CURRENT
          


          注意:上面操作先在CDB后再PDB中操作.

        • 确认状态,现在为keystore为开启状态了.

            select * from V$ENCRYPTION_WALLET;
          


          [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0bW7z0u6-1596512873644)(http://redevm/uploads/big/5ce6367d07fad0e039704434cf693712.png)]

        • oracle登录,全部节点同步keystore,千万不要拷贝错了方向.

          将测试通过节点上的keystore拷贝到其他节点.

            -- 先备份节点路径下的全部文件
            	[oracle@node112c:/root]$ mkdir -pv /u01/app/oracle/admin/orcl/wallet_bak
            	[oracle@node112c:/root]$ cp -fr /u01/app/oracle/admin/orcl/wallet/* /u01/app/oracle/admin/orcl/wallet_bak
            
            -- 后拷贝测试通过节点的认证文件到目标节点
            	[oracle@node212c:/root]$scp /u01/app/oracle/admin/orcl/wallet/* oracle@node112c:/u01/app/oracle/admin/orcl/wallet/ 
          
        • 注意:cdb&pdb的状态需要是READ WRITE,才可以设置主秘钥.

            SELECT OPEN_MODE,T.DBID,T.NAME FROM V$DATABASE T;
            SELECT T.DBID,T.CON_ID,T.OPEN_MODE,T.NAME FROM V$PDBS T;
          
      • 步骤 5: 创建加密表空间&测试keystore正常使用&验证透明加密功能

        完成步骤4操作后我们在PDB中创建一个加密表空间并测试下透明加密.

        • 步骤 5.1 空间加密前检查兼容参数

            -- sys登录查看兼容参数(保证参数是11.2.0.0 or higher,否则请修改该启动参数)
            SHOW PARAMETER COMPATIBLE
          
        • 步骤 5.2 设置表空间加密主秘钥(如果步骤4已经配置相应的pdb此处忽略,否则请参照步骤4)

        • 步骤 5.3 创建加密表空间和KEYSTORE闭合开启测试(在PDB中测试)

            -- 查看数据文件位置
            SELECT * FROM DBA_DATA_FILES;
            
            -- 创建表空间(注意修改数据文件路径)
            drop TABLESPACE securespace02 INCLUDING CONTENTS AND DATAFILES;
            CREATE TABLESPACE securespace02
            DATAFILE 'XXXXXXXXXXXXXXXX/encrypt.dbf'
            SIZE 10M
            ENCRYPTION USING 'AES192' 
            default storage(encrypt);
            
            -- 创建测试表                    
            drop table test1;
            create table test1 tablespace securespace02 as select 1 as "test" from dual;
            select * from test1;
            
            -- 关闭|开启 pdb软件秘钥仓库
            ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN  IDENTIFIED BY oadsffLDKF#f23
            ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE IDENTIFIED BY oadsffLDKF#f23
            
            -- 软件秘钥仓库确认状态
            SELECT * FROM V$ENCRYPTION_WALLET;
          
          • 注意需要测试软件秘钥仓库开启关闭后状态正常,表在软件秘钥仓库关闭状态下报ora-28365为测试通过.

            [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bzMwX8uc-1596512873646)(http://redevm/uploads/big/7a07dcd98fa7a320b7bfe290c9f840e8.png)]
    • 注意
      • 验证测试通过后再部署表空间加密.
      • 打开软件秘钥仓库需要两层操作先在CDB后到PDB中打开.
      • c##sec_admin用户可以使用sys账号代替,c##sec_admin容易出现权限缺失问题.
      • 查询加密表空间
          select * from dba_tablespaces T where T.encrypted = 'YES'       
        

你可能感兴趣的:(docker&k8s,oracle,数据库,oracle)