在 Oracle Database 11g 中使用透明数据库加密

目的

本教程介绍如何使用 Oracle Database 11g 的 Enterprise Manager Database Control 中的透明数据加密对磁盘上存储的数据进行加密。

所需时间

30 分钟

主题

本教程包括以下主题:

 概述
 先决条件
 准备要加密的数据库
 加密现有表中的一列
 创建加密的表空间
 使用加密表空间中的索引访问数据
 重新生成数据库主密钥
 总结

查看屏幕截图

 将光标置于此图标上可以加载和查看本教程的所有屏幕截图。(警告:因为此操作会同时加载所有屏幕截图,所以网速较慢时,响应时间可能会比较长。)

注:此外,您还可以在下面的步骤中将光标放在每个单独的图标上,从而仅加载和查看与该步骤相关的屏幕截图。

概述

透明数据加密让您可以对个别表列或整个表空间进行加密。当用户向加密的列中插入数据时,透明数据加密会自动加密该数据。当用户选择该列时,数据将自动解密。选择完毕后,数据将重新加密。

由于透明数据加密在数据库之外的一个安全模块(即,钱夹)中存储加密密钥,因此在存储介质或数据文件丢失时,该功能有助于保护存储在介质上的数据。在这类失窃事件中,保护数据是大部分合规管理的要求。使用透明数据加密的好处是,该功能仅需少量的编码,并且实施过程快速、简便。

在 Oracle Database 11g 中,您可以使用 Enterprise Manager 管理透明数据加密。

返回主题列表

先决条件

开始本教程之前,您应该:

1.

安装 Oracle Database 11g

返回主题列表

准备要加密的数据库

在本节中,您将更改钱夹的位置,并使用 Enterprise Manager Database Control 打开它。执行以下步骤:

1.

打开浏览器,输入以下 URL。

https://<主机名>:1158/em

system 用户身份登录。

2.

选择 Server 选项卡。

3.

单击 Security 下方的 Transparent Data Encryption

4.

要将钱夹位置更改为 Oracle 安装之外的位置(以避免其最后与加密数据一起位于备份磁带上),请单击 Change

5.

因为您要更改到的目录尚不存在,您需要创建它。打开一个终端窗口,执行以下命令创建该目录并将所有者更改为 oracle 用户:

                               
cd /etc
su <root>
mkdir ORACLE
cd ORACLE
mkdir WALLETS
cd WALLETS
mkdir oracle
chown oracle:oinstall /etc/ORACLE/WALLETS/oracle
                            

6.

既然已经创建了目录,那么我们切换回 Enterprise Manager。从 Administer 下面的列表中选择 Network Profile,然后单击 Go

7.

使用您的 Oracle 软件所有者的 Username 和 Password 登录,然后单击 Login

8.

展开 Advanced Security Options

9.

选择 Wallet Location

10.

复制默认的 /etc/ORACLE/WALLETS/oracle 位置,将其粘贴到 Encryption Wallet Location 域中,然后单击 OK

12.

系统需要一些时间才能让更改生效;强制更新、注销,然后重新登录。单击 Logout

13.

单击 Login

14.

system 用户身份再次登录。

15.

选择 Server 选项卡。

16.

单击 Security 下方的 Transparent Data Encryption

17.

注意,此时目录名称已经更改。输入保护钱夹的强口令,然后单击 OK。或者,只让安全数据库管理员知道该口令,从而实现职责分离。密码不会存储在任何地方,因此任何情况下都无法恢复。

18.

您的钱夹现已打开。

返回主题列表

加密现有表中的一列

在本教程中,您将加密 OE.CUSTOMERS 表中的一列。执行以下步骤:

1.

在 Related Links 下方,单击 Tables

2.

在 Schema 域中输入 OE,然后单击 Go

3.

选中 CUSTOMERS 前面的单选按钮,然后单击 Edit

4.

您可以指定该表中的所有加密列使用另一种加密算法和密钥种子。单击 Encryption Options

5.

查看选项,然后单击 Continue

6.

选中 Encryption 列中 CREDIT_LIMIT 的复选框,然后单击 Apply

7.

已提交一项作业对列进行加密。单击该作业的链接。

8.

作业成功完成。单击 Database 路径式导航栏。

返回主题列表

创建加密的表空间

在本节中,您将创建一个加密的表空间。执行以下步骤:

1.

在 Enterprise Manager Database Control 的 Server 选项卡中,选择 Storage 下方的 Tablespaces

2.

单击 Create

3.

输入 OBE 作为表空间的名称,然后单击 Datafiles 下方的 Add

4.

输入 OBE 作为 File Name,然后单击 Continue

5.

通过以加密格式在磁盘上存储数据,表空间加密可以保护表空间内的所有对象。必须存在 Oracle 钱夹,并且该钱夹应处于打开状态。单击 Encryption Options

6.

查看选项,然后单击 Continue

7.

选中 Encryption 复选框,然后单击 OK

8.

您的表空间已成功创建。从 Tablespaces 列表中选择 OBE 链接。

注:如果您收到一条错误,请切换到一个终端窗口,以系统用户身份登录 sqlplus,执行以下命令:

CREATE TABLESPACE OBE DATAFILE '/u01/app/oracle/oradata/orcl/obe' SIZE 100M
   ENCRYPTION DEFAULT STORAGE (ENCRYPT);

9.

注意,Encryption 选项设置为 Yes。单击 Database 路径式导航栏。

返回主题列表

使用加密表空间中的索引访问数据

在本节中,您将在加密的表空间中创建一个表,为该表的一列创建一个索引,然后访问该列中的数据以查看所使用的执行计划。执行以下步骤:

1.

打开 SQLDeveloper。在 Linux 上,打开一个终端窗口,执行以下命令:

                               
cd $ORACLE_HOME/sqldeveloper/sqldeveloper/bin
./sqldeveloper
                            

如果您收到一条消息,询问您是否要迁移以前的连接,请单击 No。

2.

创建一个连接。右键单击 Connections 并选择 New Connection

3.

在 Connection Name、Username 和 Password 域中输入 OE。输入 orcl 作为 SID,然后单击 Test

4.

您的测试成功了。单击 Connect

5.

您首先要创建 CUSTOMERS 表的副本。在 SQL Worksheet 中,输入以下命令,然后单击 Execute

                               
CREATE TABLE customers_obe AS SELECT * FROM customers
                            

6.

现在,您可以将表移至 OBE 表空间(已加密)。展开 Tables,右键单击 CUSTOMERS_OBE 并选择 Storage,然后选择 Move Tablespace

7.

从列表中选择 OBE 表空间,然后单击 Apply

8.

该表已成功移至 OBE 表空间。单击 OK

9.

现在,您可以在 DATE_OF_BIRTH 列上创建索引。在 SQL Worksheet 区域中输入以下命令,然后单击 Execute

                               
CREATE INDEX customers_obe_idx ON customers_obe(date_of_birth)
                            

10.

您现在可以从 DATE_OF_BIRTH 列中选择一些数据。在 SQL Worksheet 区域中输入以下命令,然后单击 Execute

                               
SELECT cust_last_name, date_of_birth FROM customers_obe
WHERE date_of_birth > '04-FEB-59'
AND date_of_birth < '06-FEB-59'
                            

数据已被选中。要了解所使用的解释计划,单击 Explain Plan 图标。

11.

注意,它使用了索引,并进行一次索引(范围扫描)而非全表扫描来检索数据。

返回主题列表

重新生成数据库主密钥

如果数据库主密钥遭到破坏,可以重新生成该密钥。这个过程只能重新生成用于加密列的主密钥;不能重新键入用于加密表空间的主密钥。如果您需要重新生成用于加密表空间的主密钥,则需要创建一个新的加密表空间,然后将全部内容从原来的加密表空间移到新加密表空间。执行以下步骤:

1.

在 Enterprise Manager Database Control 的 Server 选项卡中,选择 Security 下方的 Transparent Data Encryption

2.

单击 Advanced Options 前面的 + 号。

3.

单击 Regenerate Master Database Key 下方的 Regenerate。输入初始创建钱包时使用的强口令;旧主密钥及新主密钥都与钱包口令毫不相关;单击 OK

4.

您的数据库主密钥已重新生成。

返回主题列表

总结

在本教程中,您学习了如何:

 准备要加密的数据库
 加密现有表中的一列
 创建加密的表空间
 重新生成数据库主密钥

返回主题列表

 将鼠标移到该图标上可以隐藏所有屏幕截图

Left Curve
热门下载
Right Curve
Left Curve
更多融合中间件下载
Right Curve