基于表空间的加密概念
对整个表空间进行加密,表空间中的所有对象都是加密的,例如 在加密表空间上创建一个表,表的所有字段都是加密状态,适用Oracle11gR2以上版本。
表空间加密数据的缺点:外部大对象不支持,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
System altered.
2.创建并验证表空间是否使用加密
BYS@ bys001>create tablespace encry_test datafile '/u01/app/oracle/oradata/bys001/encry_test.dbf' size 10m
encryption 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