由于我们在创建表空间后产生的dbf数据文件是没有加密的二进制文件,通过简单的转储或者strings便能查看里面的数据,所以存在着数据泄露的隐患,本文Raksmart美国服务器给大家说一下通过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才开始有该功能 推荐阅读:OGG的安装与配置

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:如果walletclose状态,此时加密表空间是不可用的,例如查询、修改都不允许

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个字符,且密码种必须带有数字或者特殊字符,不然回报以下错误 更多内容请阅读:RLWRAP的安装与注意事项

Invalid
password:Passwords must have a minimum length of eight characters and contain
alphabetic characters combined with numbers or special characters.

作者 admin

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注