【11g新特性】Oracle加密表空间(一)

2015-01-21 12:11:09 · 作者: · 浏览: 11

理论


创建一个加密表空间,作用是只要放在加密表空间中的表,没有wallet钱包中的密钥用户是打不开的,这就可以形成一个保护罩,就算你有权限查询数据也不能看到明文,这就起到了风险保障的作用,只有知道秘钥的管理员才能查看,下面我们来详细讲解。?


加密表空间与wallet的关系


1.Oracle表空间的加密与解密完全是基于wallet钱包中的密钥进行的。


2.如果walletopen状态,那么我们可以使用其中的密钥,进行加密与解密处理。


3.如果walletclose状态,那么我们就拿不到密钥,此时加密表空间是不可用的,例如 查询 修改 创建都不允许


4.唯一删除表是不需要密钥的,walletopen or close状态都无所谓,直接删除即可?


TDE(Transparent Data Encryption透明数据加密)使用场景


1.保护敏感数据,禁止未授权的访问,只有打开钱包才能查看数据。


2.防止数据丢失,当加密表空间的数据文件被恶意拷贝走后,如果你没有密钥是无法还原数据的。


3.防止数据被截获,当在网络传输时加密后的信息更安全,即使截获了也无法得知其中内容。


TDE可支持的加密算法种类AES(Advanced Encryption Standard高级加密标准) DES的升级版


? AES192? ? ? ? ? 192位密钥加密


? AES128(default)? 128位密钥加密


? AES256? ? ? ? ? 256位密钥加密


? 3DES168? ? ? ? ? 168位密钥加密 DES(Data Encryption Standard数据加密标准)


AES标准是美国联邦政府采用的一套加密标准,用来替代原先的DES标准。AES属于对称性加密算法(加密与解密使用同一密钥进行),反之非对称性加密算法(加密与解密使用不同密钥进行)例如 RSA标准有公钥与私钥。


?


TDE(Transparent Data Encryption透明数据加密)加密原理


? 先要创建一个“wallet钱包”,这个钱包里面保存着密钥,Oracle就是通过这个密钥对列进行加密和解密的。


? 生成wallet钱包之前先要设定wallet钱包的保存位置


设置wallet钱包位置的文件$ORACLE_HOME/network/admin/sqlnet.ora


[oracle@cafeadmin]$ vim sqlnet.ora? ? ? ? ? 在这个文件中添加如下脚本


encryption_wallet_location=(source=


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (method=file)


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (method_data=


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(directory=/u01/app/oracle/product/11.1.0/db_1/network/admin)))


? wallet里面创建密钥key,创建后自动打开wallet,密码"oracle"不加引号时,后面使用时也不需要加引号


SYS@COFFEE>alter system set encryption key authenticated by"oracle";


或【alter system set encryption key identified by oracle;


Systemaltered.


说明:authenticated by "oracle" :打开/关闭wallet的认证密码是oracle


如果报错


SYS@COFFEE>alter system set encryption key authenticated by "oracle";


altersystem set encryption key authenticated by "oracle"


*


ERRORat line 1:


ORA-28368: cannot auto-create wallet不能自动创建钱包


/u01/app/oracle/product/11.1.0/db_1目录下运行sqlplus 登录数据库就可以成功执行


? 查看一下wallet钱包是否在$ORACLE_HOME/network/admin/目录下生成


[oracle@cafeadmin]$ ll


-rw-r--r--1 oracle dba? 1573 Nov? 7 03:21 ewallet.p12? ? 这个就是我们刚才生成的wallet钱包,里面有我们创建的密钥(密文形式),打开wallet钱包的认证密码是“oracle”,创建wallet钱包之后密钥就自动在里面了。


创建一个加密表空间


SYS@COFFEE>create tablespace encrypted_tbs datafile '/u01/app/oracle/oradata/COFFEE/datafile/test_encrypted01.dbf'size 10m encryption default storage(encrypt);


CREATE TABLESPACE stablespace DATAFILE '/u01/app/oracle/oradata/COFFEE/datafile/stablespace.dbf'SIZE 10M ENCRYPTION DEFAULT STORAGE(ENCRYPT);


Tablespacecreated.


创建加密表空间encrypted_tbs,大小10MB,如果不指定加密算法默认使用AES128加密算法密钥长度128位,需open wallet


如果报错


ERRORat line 1:


ORA-28365: wallet is not open? 此时报错是没有打开钱包,因为表空间的加密是使用钱包中的密钥进行加密的,如果钱包没打开便无法使用密钥,当然也就创建不了加密表空间。


Open&Closethe Oracle Wallet mothed


alter systemset wallet open identified by"oracle";? ? ? ? ? ? ? ? 打开钱包


alter system set wallet close identified by "oracle";? ? ? ? ? ? 关闭钱包11gR2?


alter system set wallet close;? ? ? ? ? ? ? ? ? ? ? ? ? ? ?关闭钱包11gR1


查看表空间属性


SYS@COFFEE>select tablespace_name,encrypted from dba_tablespaces;


TABLESPACE_NAME? ? ? ? ? ? ? ? ENC


---------------------------------


SYSTEM? ? ? ? ? ? ? ? ? ? ? ? NO


SYSAUX? ? ? ? ? ? ? ? ? ? ? ? NO


UNDOTBS1? ? ? ? ? ? ? ? ? ? ? NO


TEMP? ? ? ? ? ? ? ? ? ? ? ? ? NO


USERS? ? ? ? ? ? ? ? ? ? ? ? ?NO


EXAMPLE? ? ? ? ? ? ? ? ? ? ? ? NO


TBS1? ? ? ? ? ? ? ? ? ? ? ? ? NO


TBS2? ? ? ? ? ? ? ? ? ? ? ? ? NO


TBS3? ? ? ? ? ? ? ? ? ? ? ? ? NO


TBS4? ? ? ? ? ? ? ? ? ? ? ? ? NO


ENCRYPTED_TBS? ? ? ? ? ? ? ? ?YES ? ? ? ? ? ?加密状态


?


实验


在加密表空间上创建一张表encryption_t,这张表上数据全部为加密状态


SYS@COFFEE>create table encrypted_t (x int) tablespace encrypted_tbs;


Tablecre