ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle钱夹的使用

Oracle钱夹的使用

原创 Linux操作系统 作者:db_wjw 时间:2011-12-02 17:16:55 0 删除 编辑
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4

为了安全起见,有时想对敏感数据加密,对其进行编码以保证授权用户才能理解它。可以使用Oracle的TDE(Transparent Data Encryption,透明数据加密)特性。使用Oracle钱夹存储密匙,数据库处理所有的加密和解密细节。Oracle Database 10g允许加密表总的列,在Oracle Database 11g中,可以加密整个表空间。

1、创建和管理Oracle钱夹

1)        创建一个新目录,并指定为wallet目录

$ mkdir -p /u01/app/oracle/admin/orcl/wallet

设置wallet目录的方法很简单,编辑参数文件sqlnet.ora:

$ vi $ORACLE_HOME/network/admin/sqlnet.ora

加入以下信息,保存。

ENCRYPTION_WALLET_LOCATION=

  (SOURCE=

    (METHOD=file)

    (METHOD_DATA=

       (DIRECTORY=/u01/app/oracle/admin/orcl/wallet)

    )

  )

ENCRYPTION_WALLET_LOCATION参数的作用就是告知Wallet的实现方式和物理位置。上述示例中将/u01/app/oracle/admin/orcl/wallet目录作为主加密Key的存放位置。

2)        创建master key文件,指定wallet密码

使用SYS用户登陆,通过以下命令建立加密文件:

SQL> alter system set encryption key identified by "wjw";

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

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

3)        启动和关闭Wallet

启动Wallet:

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

关闭Wallet:

SQL> alter system set encryption wallet close identified by "wjw";

可以通过以下语句查询Wallet是否在打开状态:

SQL> select * from v$encryption_wallet;

2、加密数据列

在创建了主密匙后,可以在希望加密的列的名字后使用ENCRYPT关键字,来加密表列。

在创建表时加密列:

SQL> create table t

(id number primary key,

name varchar2(30) encrypt);

加密已有表中的某个列:

SQL> alter table employees modify (emp_id encrypt);

       为表新增一个加密列:

SQL> alter table employees add (encrypt_id number(9) encrypt);

       可以使用下列命令查看表中的加密列:

SQL> desc 表名称;

如果处于某种原因想关闭加密,则可以使用DECRYPT关键字:

SQL> alter table employees modify(emp_id decrypt);

3、加密表空间

1)        表空间加密的限制:

l        不能加密临时和撤销表空间

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

l        不能加密外部表

2)        加密表空间示例:

SQL> create tablespace wjw

     datafile '/u01/app/oracle/oradata/orcl/wjw01.dbf' size 500m

     encryption

     default storage(encrypt);

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

SQL> create tablespace wjw

     datafile '/u01/app/oracle/oradata/orcl/wjw01.dbf' size 500m

     encryption using '3DES168'

     default storage(encrypt);

3)        检查一个表空间是否加密:

SQL> select encrypted from dba_tablespaces where tablespace_name='WJW';

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

请登录后发表评论 登录
全部评论

注册时间:2011-08-21

  • 博文量
    96
  • 访问量
    506459