oracle19c pdb&cdb使用wallet实现表空间加密|oracle19c 表空间加密


### Code Reference
  • URL:https://docs.oracle.com/en/database/oracle/oracle-database/19/asoag/configuring-transparent-data-encryption.html#GUID-01E3A39B-87BD-4E3F-9198-6CBD896B405B

  • URL:https://docs.oracle.com/database/121/SQLRF/statements_1003.htm#BGEGDDEA

  • DESC:oracle19c pdb&cdb使用wallet实现表空间加密|oracle19c 表空间加密

  • Last Update:2020-7-15 14:45

  • Time:2020-7-19 21:01 Tittle:oracle19c pdb&cdb使用wallet实现表空间加密|oracle19c 表空间加密

  • Version:002

    • 配置软件秘钥仓库

      软件秘钥仓库是一个容器,在这个容器中存储着透明加密的master key.
      • 步骤 1:在sqlnet.ora文件中配置ENCRYPTION_WALLET_LOCATION(软件秘钥仓库路径)参数

        配置ENCRYPTION_WALLET_LOCATION为指定过的路径

        例如可以指定为/opt/oracle/oradata/orcdb/Keystore,路径请提前创建好.

          ENCRYPTION_WALLET_LOCATION=
            (SOURCE=
             (METHOD=FILE)
              (METHOD_DATA=
               (DIRECTORY=/opt/oracle/oradata/orcdb/Keystore))) 
        
        • 注意:sqlnet.ora所在路径为数据库服务器$ORACLE_HOME/network/admin,oracle用户登录,切换到该路径下就可以看到该文件.此处推荐配置为绝对路径,如果使用了环境变量请提前配置好环境变量.如果使用srvctl utility来启动数据库,需要配置环境变量。
            srvctl setenv database -db database_name -env "environment_variable_name=environment_variable_value"
          
      • 步骤 2:创建一个软件秘钥仓库

        请确认步骤1操作完成,检查路径正确无误。

        • 创建一个有密码的软件秘钥仓库
          • 步骤 2.1:使用一个被授予ADMINISTER KEY MANAGEMENT权限或者SYSKM权限的用户登录数据库实例,登录到CDB$ROOT容器来执行登录操作.


            sys用户创建c##sec_admin用户&授权

              create user c##sec_admin identified by 1;
              grant connect, SYSKM,resource to c##sec_admin;
            


            登录用户

              conn c##sec_admin/password as syskm                     
            
          • 步骤 2.2:执行下面命令创建有密码的软件秘钥仓库

            此处使用步骤1创建的软件秘钥仓库路径密码为(oadsffLDKF^#f23),请根据具体情况修改.

            • 确认下软件秘钥仓库是否在设定的位置和状态是否正常(19c已经有了多条记录和12c使用一条记录)

                select * from V$ENCRYPTION_WALLET;
              


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

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

            • 创建软件秘钥仓库

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

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

                  select * from V$ENCRYPTION_WALLET;
                


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

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

        使用步骤 2.1创建的用户c##sec_admin登录数据库,在多租户环境中必须先登录到CDB$ROOT容器来操作,然后进入到PDB中再次打开软件秘钥仓库.
        注意:下面操作先在CDB后再PDB中操作.

          conn c##sec_admin/password as syskm
          ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY oadsffLDKF#f23
        
        • 确认状态,现在为开启状态了,但是还没有还没有master key,处于OPEN_NO_MASTER_KEY状态.
          select * from V$ENCRYPTION_WALLET;
        


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

      • 步骤 4: 在软件秘钥仓库中配置表空间加密使用的master key
        注意:下面操作先在CDB后再PDB中操作.

          conn c##sec_admin/password@pdb2.example.com as syskm                
          ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY oadsffLDKF#f23 WITH BACKUP USING 'backup_identifier' container = CURRENT
        
        • 确认状态,现在为开启状态了.
          select * from V$ENCRYPTION_WALLET;
        


        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mNafTkH5-1595571317811)(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中测试)

            -- 查看数据文件位置
            select * from dba_data_files;
            
            -- 创建表空间(注意修改数据文件路径)
            drop TABLESPACE securespace02 INCLUDING CONTENTS AND DATAFILES;
            CREATE TABLESPACE securespace02
            DATAFILE '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/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-9iADKd2t-1595571317815)(http://redevm/uploads/big/7a07dcd98fa7a320b7bfe290c9f840e8.png)]
    • 参考
      • 最后的验证工作最好测试通过再部署表空间加密.
      • 打开软件秘钥仓库需要两层操作先在CDB后到PDB中打开.
      • c##sec_admin用户可以使用sys账号代替,c##sec_admin容易出现权限缺失问题.
      • 查询加密表空间
          select * from dba_tablespaces T where T.encrypted = 'YES'       
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

redelego@cloud

XXXXXXXXXXXXXXX

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值