本教程介绍如何使用 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. |
您的数据库主密钥已重新生成。
|
在本教程中,您学习了如何:
|
准备要加密的数据库 | |
|
加密现有表中的一列 | |
|
创建加密的表空间 | |
|
重新生成数据库主密钥 |
热门下载 | ||
更多融合中间件下载 | ||