创建一个加密表空间并对表内数据进行加密的示例

来源:互联网 发布:文明网络传播方案 编辑:程序博客网 时间:2024/06/08 06:09

基于表空间的加密概念

对整个表空间进行加密,表空间中的所有对象都是加密的,例如 在加密表空间上创建一个表,表的所有字段都是加密状态,适用Oracle11gR2以上版本。

表空间加密数据的优点:不会再收到字段加密的限制,例如 字段类型,索引类型,需要设置no salt才可见索引等。
表空间加密数据的缺点:外部大对象不支持,exp/imp逻辑导出导入不支持但可以用expdp/impdp数据泵。
加密表空间与wallet的关系
1.Oracle 表空间的加密与解密完全是基于wallet钱包中的密钥进行的。
2.如果wallet是open状态,那么我们可以使用其中的密钥,进行加密与解密处理。
3.如果wallet是close状态,那么我们就拿不到密钥,此时加密表空间是不可用的,例如 查询 修改 创建 都不允许。
TDE的使用场合
1.保护敏感数据,禁止未授权的访问,只有打开钱包才能查看数据。
2.防止数据丢失,当加密表空间的数据文件被拷贝走了,如果你没有密钥是无法还原数据的。
3.防止数据被截获,当在网络传输时加密后的信息更安全,即使截获了也无法得知内容。

创建一个加密表空间及数据表示例

1.wallet未打开时无法创建加密表空间。

BYS@ bys001>create tablespace encry_test datafile '/u01/app/oracle/oradata/bys001/encry_test.dbf' size 10m encryption using 'aes128' default storage(encrypt);
create tablespace encry_test datafile ' /u01/app/oracle/oradata/bys001/encry_test.dbf' size 10m encryption using 'aes128' default storage(encrypt)
*
ERROR at line 1:

ORA-28365: wallet is not open

打开 wallet

BYS@ bys001>alter system set wallet open identified by "testtest";

System altered.

2.创建并验证表空间是否使用加密

BYS@ bys001>create tablespace encry_test datafile '/u01/app/oracle/oradata/bys001/encry_test.dbf' size 10mencryption using 'aes128' default storage(encrypt);
Tablespace created.
BYS@ bys001>select tablespace_name,encrypted from dba_tablespaces;
TABLESPACE_NAME                ENC
------------------------------ ---
SYSTEM                         NO
SYSAUX                         NO
UNDOTBS1                       NO
TEMP                           NO
USERS                          NO
EXAMPLE                        NO
CATALOG1                       NO
BYS_FLASHBACK                  NO
TEST1                          NO
ENCRY_TEST                     YES

3.在加密表空间上创建表,表默认继承了表空间的加密属性

BYS@ bys001>create table encry_test2 tablespace encry_test as select * from tab;
Table created.
BYS@ bys001>select * from encry_test2;
TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
ENCRY_TEST                     TABLE
ENCRY_TEST2                    TABLE
FRUIT_LIST                     TABLE
FRUIT_LIST_AUDIT               TABLE
TEST                           TABLE
TEST3                          TABLE
TEST4                          TABLE
TEST5                          TABLE
TEST6                          TABLE

TEST_AUDIT                     TABLE


4.关闭wallet,新创建的表将不能查询。

BYS@ bys001>alter system set wallet close identified by "testtest";
System altered.
BYS@ bys001>select * from encry_test2;
select * from encry_test2
              *
ERROR at line 1:
ORA-28365: wallet is not open