oracle 11g 表空间加密

由于我们在创建表空间后产生的dbf数据文件是没有加密的二进制文件,通过简单的转储或者strings便能查看里面的数据
所以存在着数据泄露的隐患,我们可以通过wallets方法对创建的表空间进行加密。

加密原理:通过建立Wallet 文件,来保存主密钥,主密钥是加密算法中用于加密或解密的主密码串,一般是随机生成。  加密算法使用主密钥或基于主密 钥其生成的衍生密钥,对原始数据进行加密。只有使用主密钥或配套的衍生密钥,才能对加密数据进行解 密。 建立 Wallet 文件时要设定该密码,打开和关闭 Wallet 文件都须要提供正确密码
一、创建加密表空间
创建wallets文件夹
[oracle@potato ~]$ mkdir -p /u01/app/oracle/product/11.2.0/dbhome_1/wallets
在sqlnet.ora文件种指定wallets文件夹位置
[oracle@potato admin]$ vi $ORACLE_HOME/network/admin/sqlnet.ora
ENCRYPTION_WALLET_LOCATION=
(SOURCE=
  (METHOD=file)
    (METHOD_DATA= (DIRECTORY=/u01/app/oracle/product/11.2.0/dbhome_1/wallets)
  )
)
查看当前数据库版本,必须是11.1以上,因为只有11.1才开始有该功能
SQL> SHOW PARAMETER COMPATIBLE

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
compatible                           string      11.2.0.0.0

建立 Wallet 文件
SQL> alter system set encryption key identified by "tomato_16";

System altered.

我们可以看到wallets文件夹下面产生了一个新的文件
 [oracle@potato wallets]$ cd /u01/app/oracle/product/11.2.0/dbhome_1/wallets
[oracle@potato wallets]$ ll
total 4
-rw-r--r-- 1 oracle oinstall 1573 Dec 14 15:30 ewallet.p12
ps:wallets文件夹下存放的信息是主密钥,丢失了该文件将无法解密表空间,即该表空间将无法访问

查看 Wallet 文件状态
SQL> col WRL_TYPE format a10
SQL> col WRL_PARAMETER format a50
SQL> col STATUS format a10
SQL> select * from v$encryption_wallet;

WRL_TYPE   WRL_PARAMETER                                              STATUS
---------- -------------------------------------------------- ----------
file       /u01/app/oracle/product/11.2.0/dbhome_1/wallets    OPEN

创建表空间并加密,可用加密算法有AES192 / 3DES168 / AES128 / AES256,默认是AES128
我们这里指定使用3DES168算法
SQL> create tablespace mytest  datafile '/u01/app/oracle/oradata/orcl/mytest01.dbf' size 100m  encryption using '3DES168' default storage(encrypt);

Tablespace created.

查看表空间是否加密
SQL> select tablespace_name, encrypted from dba_tablespaces;

TABLESPACE_NAME                ENC
------------------------------ ---
SYSTEM                         NO
SYSAUX                         NO
UNDOTBS1                       NO
TEMP                           NO
USERS                          NO
EXAMPLE                        NO
MYTEST                         YES

7 rows 
查看加密信息
SQL> select * from v$encrypted_tablespaces;

       TS# ENCRYPT ENC
---------- ------- ---
ENCRYTPEDKEY
----------------------------------------------------------------
MASTERKEYID                      BLOCKS_ENCRYPTED BLOCKS_DECRYPTED
-------------------------------- ---------------- ----------------
         7 3DES168 YES
612598C962DDEC27F8C6FA4AB040B71D59D4DDF2901B83E00000000000000000
059D5A6FB4A34F2FBFC5FF6EB5CD78EC

二、关闭和开启加密
SQL> alter system set encryption wallet close identified by "tomato_16 ";   

System altered.
ps:如果wallet是close状态,此时加密表空间是不可用的,例如查询、修改都不允许

SQL> alter system set encryption wallet open identified by "tomato_16 ";

System altered.
三、自动开启加密
由于数据库重启之后,加密会自动关闭
SQL> col WRL_PARAMETER format a40     
SQL> select * from v$encryption_wallet;

WRL_TYPE             WRL_PARAMETER                            STATUS
-------------------- ---------------------------------------- ------------------
file                 /u01/app/oracle/product/11.2.0/dbhome_1/ OPEN
                     wallets


SQL> startup force;
SQL> col WRL_PARAMETER format a40   
SQL>  select * from v$encryption_wallet;

WRL_TYPE             WRL_PARAMETER                            STATUS
-------------------- ---------------------------------------- ------------------
file                 /u01/app/oracle/product/11.2.0/dbhome_1/ CLOSED
                     wallets
所以我们可以通过以下方式,让它在数据库开启时自启
[oracle@potato admin]$ orapki wallet create -wallet /u01/app/oracle/product/11.2.0/dbhome_1/wallets -auto_login -pwd tomato_16
SQL> startup force;
SQL> col WRL_PARAMETER format a40   
SQL>  select * from v$encryption_wallet;

WRL_TYPE             WRL_PARAMETER                            STATUS
-------------------- ---------------------------------------- ------------------
file                 /u01/app/oracle/product/11.2.0/dbhome_1/ OPEN
                     wallets
注意:设置自动是对密码有要求的,必须长度大于等于8个字符,且密码种必须带有数字或者特殊字符,不然回报以下错误
Invalid password:Passwords must have a minimum length of eight characters and contain alphabetic characters combined with numbers or special characters.
还有第二种方法,就是使用图形化工具——owm
这个也比较简单,这里便不多做演示了。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31386161/viewspace-2130584/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31386161/viewspace-2130584/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值