zoukankan      html  css  js  c++  java
  • orcl透明数据库加密(TDE)加密表空间

    TDE加密介绍

    透明数据加密包括列加密和表空间加密,它是oracle高级安全组件的一部分;
    oracle11g企业版默认安装时会安装上oracle高级安全组件,oracle声称这是一个单独另外收费的组件,作为商业用途使用如果没有付费意味着侵权。

    oracle增强表空间加密特性,数据库的兼容性参数必须被设置为11.2或更高。

    oracle的列加密是从10gR2开始可以使用,表空间加密是从11gR1开始使用。

    表空间加密算法3DES168,AES128,AES192,AES256,默认是AES128

    TDE从11g开始支持加密整个表空间,表空间的对象都自动加密,不需要对表再进行加密。

    表空间加密中,支持内部对象blod,clob等加密,不支持外部对象BFILE。

    TDE的主密钥存储在外部安全模块(Oracle Wallet中或HSM)。这TDE主密钥用于加密TDE表空间加密密钥,而这又是用来加密和解密数据表空间。

    已经加密的数据对数据库使用者或是应用程序都是透明的,自动解密。
    如果存储介质或是数据文件被偷,TDE可以保护数据不被还原。
    加密密钥自动产生,不需要用户管理。只需要及时做好备份,不要丢失即可。

    注意:加密的秘钥即使是同一密码,生成的秘钥也会不同,不要试图重新加载秘钥,这样容易导致数据库不可用。

    操作环境

    系统:window7
    数据库:oracle12C
    (这里需注意,windows7系统不支持oracle19C原因:)
    Navicat:12破解版

    表空间加密实现过程

    启用TDE

    创建和管理Oracle钱夹

    1. 如果是linux系统,输入如下命令创建目录$ mkdir -p /u01/app/oracle/admin/orcl/wallet

    2. 如果是windows系统,直接在想存储秘钥的位置新建文件夹即可,我的存储位置是D:AAAoxoracle12WINDOWS.X64_193000_db_home(随意命名的oracle安装路径)wallet

    指定 wallet 路径

    在oracle安装路径下的NETWORKADMIN下的 sqlnet.ora 中设置 ENCRYPTION_WALLET_LOCATION 参数,指定软件 wallet 路径。其中,在 sqlnet.ora 文件中添加的条目如下。

     ENCRYPTION_WALLET_LOCATION=
    	(SOURCE=
    		(METHOD = FILE)
    		(METHOD_DATA =
    			(DIRECTORY = D:AAAoxoracle12WINDOWS.X64_193000_db_homewallet)
    		)
    	)
    

    ENCRYPTION_WALLET_LOCATION参数的作用就是告知Wallet的实现方式和物理位置。DIRECTORY 的具体路径作为主加密Key的存放位置.

    检查 sqlnet.ora 信息读取状态(任一节点)

     select * from v$encryption_wallet;
     select * from gv$encryption_wallet;
    

    注意:确保 vencryption_wallet 与 gvencryptionwalletgvencryption_wallet 的 wallet location 是 一致的。
    注意:对于 wallet 分别在不同节点的情况以及 sqlnet.ora 在加入 ENCRYPTION_WALLET_LOCATION 参数前已经被数据库各实例读取的情况,需要 重启各个实例以初始化 wallet 的状态,从而更新 gv$encryption_wallet 的 wallet location。

    创建master key主密钥文件,指定wallet密码

    创建该文件只有系统用户system可以,自己单独建立的用户无此权限


    win+R后输入命令sqlplus打开窗口,输入用户名及密码,确定oracle正常运行

    确认登录

    通过以下命令建立加密文件:

    alter system set encryption key identified by “123456”;
    

    其中,123456为wallet密码。Oracle Wallet是一个可以打开关闭的功能组件,设置密码之后,只有通过密码口令可以启用wallet功能。

    此时,在设置的目录下会多出一个ewallet.p12文件。这就是生成的master key文件。

    启动和关闭Wallet

    1. 启动Wallet:
    SQL> alter system set encryption wallet open identified by "123456";
    
    1. 关闭Wallet:(注意密码一定是双引号)
    SQL> alter system set encryption wallet close identified by "123456";
    
    1. 可以通过以下语句查询Wallet是否在打开状态:
     select * from v$encryption_wallet;
    

    查询是否是打开状态
    说明:wallet只有在open的情况下才能进行数据库的透明加密,如果处于关闭状态,则会报错wallet,加密表空间需确认wallet是否真正开启。

     

    表空间加密

    在创建加密表空间之前,包含有表空间主密钥的 Oracle wallet 必须处于打开状态。

    1. 表空间限制
      1.1 不能加密临时和撤销表空间

      1.2 不能更改加密表空间的安全密匙

      1.3 不能加密外部表

    2. 加密表空间示例:

    SQL> create tablespace DB_TEST
    datafile 'D:AAAoxoracle	est.dbf' 
    size 500m
    encryption
    default storage(encrypt);
    

    其中encryption表时数据库使用默认的加密算法DES128,可以在encryption后面使用using子句来指定另外的算法,如:

    SQL> create tablespace DB_TEST
    datafile 'D:AAAoxoracle	est.dbf' 
    size 500m
    encryption
    using '3DES168'
    default storage(encrypt);
    
    1. 检查一个表空间是否加密:
      查看个表空间的加密属性,确定新建表空间为 TDE 加密表空间。
    SQL> select encrypted from dba_tablespaces where tablespace_name='DB_TEST';
    

    表空间是否加密

    1. 删除加密表空间
    SQL>drop tablespace encts including contents and datafiles;
    
    Tablespace dropped.
    

    未找到相关修改现有表空间间加密解密语句。。。
    如果在Navicat直接挪动表空间,可能会丢失数据。

    验证加密表空间

    可通过此步骤验证加密表空间是否真正有效。

    1. 测试表:创建加密表空间 ENCTS以及非加密表空间 DB_TEST。随后分别在两个表空间内创建表 JM_TABLE 以及非加密表 BJM_DATA,语句类似如下。
    create table jm_table(col1 number, col2 varchar2(30)) tablespace ENCTS;
    create table bjm_table(col1 number, col2 varchar2(30)) tablespace DB_TEST;
    

    创建新表测试
    创建成功后如图

    1. 创建后分别插入测试数据。
    insert into jm_table values (1,'secret data');
    insert into bjm_table values (1,'no secret data');
    

    Oracle wallet 不打开,则无法对加密表空间中的表进行插入数据,类似如下结果。
    其中红色框内的SQL因为wallet未打开,所以无法执行插入操作,反之,不加密的表空间则可以正常插入数据(增删改查全部同理)。
    执行结果如图

    尝试打开wallet之后,插入成功。如图:

    插入成功

    本文来自博客园,作者:zwbsoft,转载请注明原文链接:https://www.cnblogs.com/zwbsoft/p/15194739.html

    电话微信:13514280351
  • 相关阅读:
    打开安装 好的Microsoft Dynamics CRM 4.0 报错误为 Caller does not have enough privilege to set CallerOriginToken to the specified value 的解决办法
    基于 Windows Server 2008 的计算机对 Microsoft Dynamics CRM 4.0 的支持
    Microsoft Dynamics CRM 4.0 如何添加自定义按钮
    Microsoft Dynamics CRM 4.0 Plugin 取值,赋值,查询
    C# 中的 enum(枚举) 类型使用例子
    vue事件的绑定
    表单验证2
    node中模块
    node模块的引入
    node中的读文件
  • 原文地址:https://www.cnblogs.com/zwbsoft/p/15194739.html
Copyright © 2011-2022 走看看