利用ORACLE WALLET实现透明数据加密

简介:

  ORACLE WALLET用于存储安全证书信息和数据库的主密钥,具有认证和加密特性,可实现客户端自动登录数据库和透明数据加密(Transparent Data Encryption ,TDE)。所谓透明数据加密就是ORACLE数据库自己完成所有的加密和解密细节,对用户完全是透明的。本文基于CENTOS 5.6 + ORACLE 11g对使用ORACLE WALLET实现数据的透明加密进行了简单研究。

一、前提条件
在使用ORACLE WALLET进行数据加密之前,必须首先做好以下几个工作:
1、确定好ORACLE WALLET的路径。
可使用ORACLE WALLET默认的路径:$ORACLE_HOME/owm/wallets/oracle,也可在操作系统级自行创建路径,如:$ORACLE_BASE/admin/$ORACLE_SID/wallet。
2、修改 sqlnet.ora文件。
sqlnet.ora文件的默认位置是:$ORACLE_HOME/network/admin。利用vi编辑器对其进行编辑,确保它指向上步中确定好的ORACLE WALLET路径。
$vi sqlnet.ora
添加
ENCRYPTION_WALLET_LOCATION=
 (SOURCE=
(METHOD=FILE)
  (METHOD_DATA=
        (DIRECTORY=/u01/app/oracle/admin/orcl/oracle)
  )
)
3、用户授权。
打开和关闭WALLET需要用户拥有ALTER SYSTEM的权限。通过命令:SQL>SELECT * FROM USER_SYS_PRIVS;查看当前用户是否具有ALTER SYSTEM的权限,没有的话通过命令:SQL>GRANT ALTER SYTEM TO newuser;进行授权。
二、创建ORACLE WALLET
创建ORACLE WALLET有三种方式:通过OWM创建,在操作系统通过命令创建和通过SQL命令创建。
1、OWM(Oracle Wallet Manager)创建。在操作系统提示下直接输入owm启动Oracle Wallet Manager:$owm,按照向导选择路径(这里不需要增加信任证书),就可成功创建新的ORACLE WALLET了。
2、在操作系统通过命令创建。在操作系统提示下输入以下命令:
$mkstore –wrl $ORACLE_BASE/admin/$ORACLE_SID/wallet  - create,其中$ORACLE_BASE/admin/$ORACLE_SID/wallet是自定义的WALLET目录。随后输入两次密码即可。
3、通过SQL命令创建。如下所示:
$sqlplus /nolog
SQL>conn / as sysdba
SQL>ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY “tiger”;(此处密码必须用双引号括起来)
以上三种方法的任意一种创建ORACLE WALLET后需要打开它,因为新创建的WALLET是关闭的:
SQL> ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY “tiger”;
 WALLET是数据库级别的,WALLET打开后,所有的session都可以使用WALLET了。
然后再手动生成主密钥。
SQL>ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY “tiger”;
三、加密表列
配置好ORACLE WALLET后,就可方便地加密表中的某一列数据。加密表列时需注意,若表列是外键成分或其他数据库的约束时就不能加密。
1、创建新表时加密某列。
SQL>CREATE TABLE Empt
 2   (
 3  Name   VARCHAR2(30),
 4  Emp_id  NUMBER(10),
 5  Salary   NUMBER(10),
 6  Credit   NUMBER(10) ENCRYPT 
7   );
此处,创建新表Empt同时使用默认的加密算法加密表列Credit。
2、已有表中增加新的加密列。
SQL>ALTER TABLE Empt ADD (ENCRYPT_ID NUMBER(5) ENCRYPT);
3、加密已有的表列。
SQL>ALTER TABLE Empt MODIFY (Salary   NUMBER(10) ENCRYPT);
四、加密表空间
只有新的表空间能加密,默认加密算法是DES128。加密表空间的命令是:
SQL>CREATE TABLESPACE tbsp01
  2   Datafile ‘/u02/app/oradata/tbsp01.dbf’ size 500m
  3   ENCRYPTION
  4   DEFAULT STORAGE(encrypt);
可通过以下命令查看表空间的加密状态:
SQL>SELECT tablespace_name, encrypted FROM dba_tablespaces;
五、加密RMAN备份集
透明数据加密是RMAN备份的默认加密方式,适用于存储、备份和恢复在同一台服务器。配置RMAN备份集的透明方式加密,在配置好ORACLE WALLET并打开WALLET的前提下,只需使用修改CONFIGURE 命令修改RMAN配置参数即可,如下所示:
RMAN>CONFIGURE ENCRYPTION FOR DATABASE ON;
以后所有的备份都将以加密方式进行。由于加密RMAN备份会增大系统开销,因此加密备份时最好分配多个通道。


本文转自 小王 51CTO博客,原文链接:http://blog.51cto.com/xiaowang/1161375,如需转载请自行联系原作者
相关文章
|
存储 SQL Oracle
Oracle使用expdp/impdp实现全库导入导出的整体流程
Oracle的全库导入,首先一点必须先创建数据库,创建了数据库,才能往该数据库导入所有数据。相对来说,使用Oracle进行数据导入导出还很有些“麻烦”的,大多数资料上来就是......
6101 0
Oracle使用expdp/impdp实现全库导入导出的整体流程
|
存储 设计模式 Oracle
Oracle跨数据库实现定时同步指定表中的数据
Oracle跨数据库实现定时同步指定表中的数据
|
Oracle 关系型数据库
查询Oracle字段列的最大值并查询多列数据的实现方法
查询Oracle字段列的最大值并查询多列数据的实现方法
2092 0
|
存储 SQL Oracle
跨Oracle数据库实现表级别的实时同步
跨Oracle数据库实现表级别的实时同步
|
8月前
|
Oracle 关系型数据库 数据库
mstsc连接远程服务器CredSSP加密数据库修真、加密Oracle修正报错解决办法
mstsc连接远程服务器CredSSP加密数据库修真、加密Oracle修正报错解决办法
|
存储 运维 Oracle
【大数据开发运维解决方案】Oracle Data Redaction数据加密测试
最近有个做Java开发的网友问我,怎么在Oracle进行数据加密呢?我给他推荐了Data Redaction。Oracle Database 12c中加入了Data Redaction这个新的安全特性。当然在11g的Database Advanced Security Administrator’s Guide官方文档中就介绍了。
【大数据开发运维解决方案】Oracle Data Redaction数据加密测试
|
Oracle Java 关系型数据库
oracle实现主键自增长及自动生成策略
oracle实现主键自增长及自动生成策略
472 0
|
SQL Oracle 关系型数据库
SpringBoot整合oceanbase,实现oracle无缝切换到oceanbase
随着去“IOE”化的潮流,近些年来,许多与国家相关的项目不约而同到地往”国产化“方向靠拢,不可避免地,一些项目可能需要进行数据库迁移。
972 0
SpringBoot整合oceanbase,实现oracle无缝切换到oceanbase
|
Oracle 关系型数据库 MySQL
Oracle数据base64加密简单方法
Oracle数据base64加密简单方法
1325 0

推荐镜像

更多