级别: 初级 Masahiro Ohkawa, Yamato Software Development Laboratory (YSL), IBM Japan Soh Kaijima, Yamato Software Development Laboratory (YSL), IBM Japan Gou Nakashima, Yamato Software Development Laboratory (YSL), IBM Japan Asuka Tokunaga, Yamato Software Development Laboratory (YSL), IBM Japan
2009 年 8 月 20 日 IBM® Database Encryption Expert 提供的特性可以加密数据,以及控制对写到文件系统和数据库备份映像的数据的访问。从 Version 1.1 Fix Pack 3 开始,该产品就同时支持 DB2® 和 Informix® Dynamic Server(IDS)。本文描述 Encryption Expert 的一些关键特性和机制,并展示如何使用它们。
简介
IBM Database Encryption Expert(也称为 Encryption Expert 或 DEE)使用基于策略的系统保护数据。Encryption Expert 使用的策略包含一个或多个加密密匙,以及一个或多个用于访问控制的规则。有两种类型的策略:
- 在线策略,用于加密写到文件系统的数据,以及通过访问控制保护数据。当把在线策略应用到目录时,它将控制对该目录下的文件和子目录的访问。将在线策略应用到目录的操作称为保护文件系统(Guard FS),该目录称为保护点,从文件系统读取或对其写入的数据称为在线数据。策略允许访问的任何应用程序都可以访问保护点下的文件,前提是该应用程序使用系统库来访问文件。将根据策略在写入时自动加密数据,而在读取时自动解密数据。加密对应用程序是透明的,您不需要更改应用程序本身。
- 离线策略,用于保护数据库备份映像。离线策略应用到用于备份和恢复数据库映像的机器。离线策略控制备份和恢复命令,以及数据库备份映像的加密和解密。将离线策略应用到机器的操作称为保护数据库备份(Guard DB)。
图 1 展示了 Encryption Expert 的总体架构。它由一个或多个安全服务器和一个或多个代理组成。安全服务器拥有配置信息,比如在线或离线策略,以及来自代理的审计日志。配置信息和审计日志数据存储在与 Encryption Expert 绑定的 DB2 中。
图 1. IBM Database Encryption Expert 架构概览
Encryption Expert 安装在其数据需要保护的机器(主机)上。储存在安全服务器中的策略被发送给代理,或由代理根据需要获取。代理由 FS(文件系统)代理(保护 FS)和一个 DB 代理(保护数据库备份)组成。默认情况下,审计日志(比如违规访问)被发送到安全服务器。
安全服务器提供一个基于 Web 的界面,称为 Management Console,您可以通过它配置策略和浏览审计日志等。要使用 Management Console,需要打开 Web 浏览器并转到以下 URL:
https://hostname:8445
图 2 是 Encryption Expert Management Console 指示板,它显示在日本语浏览器中。
图 2. Encryption Expert Management Console
您可以在多个机器上配置安全服务器,以支持主服务器和故障转移服务器。故障转移服务器是只读的,并且储存的数据为主服务器的备份。
主服务器充当认证机构(Certificate Authority,CA),并向安全服务器和代理发布 X.509 认证。安全套接字层(Secure Socket Layer,SSL)协议用于安全服务器和每个代理、主服务器和每个故障转移服务器之间的通信。
通过配置实现高可用性
Encryption Expert 能够保证高可用性的两个特性是使用故障转移服务器和加密密匙缓存。
故障转移服务器
如简介所述,您可以配置故障转移服务器,以在主安全服务器发生故障时接管其工作。通过使用 Encryption Expert 提供的 SQL 复制技术,您可以将故障转移服务器的配置与主服务器的配置同步。使用 SQL 复制时,捕捉程序(asncap)从数据库日志获取变更记录并将其存储到 staging 表,应用程序(asnapply)每分钟从 staging 表检索数据并将变更应用到故障转移服务器。两个程序都运行在主服务器上。不复制审计日志。每个故障转移服务器都可以从代理获取审计日志并独立存储,不受其他安全服务器的影响。
故障转移服务器设置好之后,代理就可以访问它(只读)。图 3 显示了代理如何选择与之通信的安全服务器。每个 FS 和 DB 代理都有自己的配置文件,名为 agent.conf。您可以编辑 agent.conf 文件,以配置选择安全服务器的次序。如果代理不能与第一个服务器进行通信,它将尝试与第二个服务器通信,依此类推。
要了解更多信息,请参考 IBM Database Encryption Expert User's Guide 一文的 “Chapter 3: Installing, removing, and upgrading Encryption Expert ” 的 “Installing and configuring the Encryption Expert Failover Server” 小节,您可以在 参考资料 部分找到相关链接。
图 3. 故障转移服务器机制
在主机上缓存加密密匙
在线数据的每个加密密匙都有一个 Cached on Host 选项。如果加密密匙在创建时带有这个选项,那么它就存储在有密码保护的代理磁盘上。因此当代理启动之后,即使安全服务器不能正常运行,代理也不会受到影响。下面小节将对此进行详细描述。
保护在线数据
Encryption Expert 使用对称加密算法 (3DES, AES128, AES256) 加密在线数据。图 4 显示了加密过程的概图。在线策略包含一个或多个加密密匙以及访问控制规则。您可以对保护点下的文件和目录使用相同或不同的加密密匙。访问控制规则被配置为安全规则。加密密匙被配置为密匙选择规则。当您使用 Management Console 对主机上的目录应用在线策略时,该策略将保存在安全服务器并发送给主机上的 FS 代理。
图 4. 保护在线数据
FS 代理由 vmd 和 secfsd 进程组成。vmd 进程与安全服务器通信。secfsd 保存在线策略,以及与访问控制有关的加密和解密数据。这些进程作为系统的守护进程。当 secfsd 进程启动时,与主机相关的所有策略都通过 vmd 进程从安全服务器获取,并且策略被缓存到内存中。如果进程获取策略失败,它将每隔 5 秒钟重新尝试获取。当将在线策略应用到目录时,安全服务器就把该策略发送给代理,而代理将其缓存在内存中。
如果应用程序试图访问带有加密密匙(使用 Cached on Host 选项)的保护点,而此时代理没有在内存中缓存该保护点的加密密匙,因为在代理启动时安全服务器不能正常运行。这将导致应用程序中断运行。对于这种情况,请使用清单 1 中所示的命令(以及预定义密码)帮助应用程序重新恢复正常。此后,只要在保护点的加密密匙上配置了 Cached on
Host 选项,任何访问该主机上的保护点的应用程序都不会中断运行。
清单 1. 获取存储在主机磁盘上的加密密匙
# vmsec passwd
Please enter password: xxxxxxxx
OK passwd
#
|
图 5 显示了安全规则的一个例子。在这个例子中,如果 db2admin 用户访问保护点,那么将在写入时加密数据,在读取时解密数据。如果根用户从保护点读取数据,那么数据将不被解密,并且会记录该操作用于审计。其他要求访问保护点的请求都将遭到拒绝,并且会记录该操作用于审计。
图 5. 安全规则示例
Host Settings
User ID 条件可以包含在安全规则中。另一个与 User ID 相关的设置是 Host Settings。Host Settings 用于识别允许使用哪种登录方法,允许运行哪些进程而不管登录方法是什么,等等。例如,如果您希望仅允许通过 ssh 和 telnet 登录的特定用户访问保护点,那么需要在登录进程的前面添加 |authenticator|,如清单 2 所示。
清单 2. 仅对通过 ssh 和 telnet 登录的用户进行身份验证的 Host Settings 示例
|authenticator|/usr/bin/login
/usr/bin/su
|authenticator|/usr/sbin/sshd
/usr/sbin/ftpd
/usr/dt/bin/dtlogin
/usr/bin/sh
|
如上所述,还可以控制 su,从而使 Encryption Expert 甚至可以阻止伪装成其他用户的根用户访问保护点。
要了解更多信息,请参考 IBM Database Encryption Expert User's Guide 的 “Chapter 6: Configuring hosts” 的 “Configuring host settings” 小节,您可以从 参考资料 部分获得相关链接。
清单 3 显示了一个 User Not Authenticated 或 FAKED USER 错误的例子,当您通过不支持的登录方法登录并运行访问保护点的程序之后,就会出现此类错误。
清单 3. User Not Authenticated 错误
EET2604E: [SecFS, 0] [ALARM] Policy[db2admin_online_policy1]
User[db2admin,uid=222 (User Not Authenticated)] Process[/usr/bin/ls]
Action[read_dir_attr] Res[/home/db2admin/guard/] Effect[DENIED Code
(1U,2M)]
|
数据转换
Encryption Expert 提供的一个特性允许将使用一个加密密匙加密的数据或未加密数据转换为使用另一个加密密匙加密的数据。该特性称为 dataxform。使用该特性的一个场景是,将要应用在线策略的目录上存在未加密文件。如果策略要求加密该文件,那么您必须在应用策略之前对它进行加密。为此,使用以下方法之一:
- 在将策略应用到该目录之前,使用 dataxform 转换数据。
- 在将策略应用到该目录之前,将该文件移动到非保护目录。在应用策略之后再将文件移动回来。移动回来之后,将根据该目录应用的策略对其进行加密。
要了解更多信息,请参考 IBM Database Encryption Expert User's Guide 的 “Chapter 10: Changing encryption keys” 的 “Using dataxform” 小节,您可以从 参考资料 部分获得相关链接。
命令
Encryption Expert 提供用于获取代理信息的命令。例如,要获取保护点信息,您可以输入清单 4 所示的命令。
清单 4. 获取保护点信息的示例命令
# secfsd -status guard
GuardPoint Policy Type ConfigState Status Reason
---------- ------ ---- ----------- ------ ------
/home/db2admin/guard1 db2admin_policy1 local guarded guarded N/A
/home/db2admin/guard2 db2admin_policy2 local guarded guarded N/A
|
您可以通过在选项中设置,将 secfsd 和 vmd 进程用作命令。
要了解更多关于 Encryption Expert 命令的信息,请参考 IBM Database Encryption Expert User's Guide 中的 “Chapter 16: Maintaining Encryption Expert”,您可以从 参考资料 部分获得相关链接。
保护数据库备份映像
Encryption Expert 对加密数据库备份映像使用混合的加密算法。为数据库备份映像加密时,将动态创建并应用一个对称密匙。这个对称密匙本身又由一个或多个非对称密匙(公共密匙)加密。 对于对称加密算法,您可以使用 AES128 或 AES256。对于非对称加密算法,您可以使用 RSA1024、RSA2048 或 RSA4096。
您可以导入由其他 Encryption Expert 安全服务器创建的公共密匙。在导入之后,由一个 DB 代理加密并由一个安全服务器管理的数据库备份映像可以恢复到由另一个安全服务器管理的另一个 DB 代理。
图 6 显示了 Encryption Expert 如何为数据库备份映像提供保护的概图。该图显示了针对 IDS 和 DB2 的备份代理,但您不能在同一个机器上同时使用它们。可以对机器应用包含多个备份规则和恢复规则的离线策略。使用 DB 代理的备份和恢复操作将被记录下来用于审计,并默认发送给安全服务器。
图 6. 保护数据库备份映像
集成 DB2 备份和恢复功能
您可以通过外部模块发出 DB2 备份命令。这使您能够结合使用 DB2 代理模块和备份,从而实现通过与安全服务器通信加密数据库备份映像。数据库备份映像包含用于解密的 DB2 代理模块和信息。DB2 恢复命令调用 DB2 包含在数据库备份映像中的代理,然后 DB2 代理通过与安全服务器通信对其进行解密。
您还可以使用外部模块发出 DB2 恢复命令。当指定外部模块之后,它将代替包含在数据库备份映像中的模块被使用。如果 DB2 代理在备份数据库之后进行了升级,并且您希望使用升级后的模块,那么可以使用 DB2 恢复命令指定该模块。
清单 5 包含一个使用 DB2 代理模块的 DB2 备份命令的例子。
清单 5. DB2 备份命令示例
% DB2 BACKUP DB dbname compress comprlib
/opt/IBM/DB2TOOLS/LUWEncryptionExpert/agent/db2/lib/libeetdb2.so
|
您可以通过以上语法使用其他选项,比如使用 USE TSM 指定使用 Tivoli Storage Manager (TSM)。
清单 6 包含一个使用 DB2 代理模块的 DB2 恢复命令的例子。
清单 6. DB2 恢复命令示例
集成 IDS 备份和恢复功能
在 IDS 中有两种类型的备份:ontape 和 onbar。在这两种备份中,您都可以在 $INFORMIXDIR/etc/$ONCONFIG 配置文件中指定 IDS 代理可执行模块。IDS 代理可执行模块需要一个用于描述如何处理数据的属性文件。使用 -f 选项识别该属性文件。
清单 7 显示了一个配置文件例子。
清单 7. IDS 配置文件示例
BACKUP_FILTER '/opt/IBM/DB2TOOLS/LUWEncryptionExpert/agent/ids/bin/eetidsagt -f /home/info
rmix/attr.w'
RESTORE_FILTER '/opt/IBM/DB2TOOLS/LUWEncryptionExpert/agent/ids/bin/eetidsagt -f /home/inf
ormix/attr.r'
|
清单 8 显示了备份属性文件(attr.w)的一个例子。
清单 8. IDS 的备份代理属性文件示例
ENV=INFORMIXSERVER, SERVERNUM
OPERATION=write
|
在清单 8 的例子中,该属性文件指定:
- INFORMIXSERVER 和 SERVERNUM 环境变量用于计算策略的条件。
- 用于备份。
清单 9 显示了恢复属性文件(attr.r)的一个例子。
清单 9. IDS 的恢复代理属性文件示例
ENV=INFORMIXSERVER, SERVERNUM
OPERATION=read
|
在清单 9 的例子中,该属性文件指定:
- INFORMIXSERVER 和 SERVERNUM 环境变量用于计算策略的条件。
- 用于恢复。
清单 10 和 11 显示了一些 IDS 备份命令的例子。
清单 10. IDS 备份命令(onbar)例子
清单 11. IDS 备份命令(ontape)例子
% ontape -v -s -L 0 -t STDIO > /.../backup.000
|
清单 12 和 13 显示了一些 IDS 恢复命令的例子。
清单 12. IDS 恢复命令(onbar)例子
清单 13. IDS 恢复命令(ontape)例子
% onmode -ky
% cat /.../backup.000 | ontape -r -t STDIO -v
|
对于 ontape IDS 备份,您还可以选择将 IDS 代理模块指定为获取备份或恢复命令的输出的命令。清单 14 和 15 显示了该选项的一些例子。
清单 14. 指定 IDS 代理模块的 IDS 备份命令(ontape)的示例
% ontape -v -s -L 0 -t STDIO |
/opt/IBM/DB2TOOLS/LUWEncryptionExpert/agent/ids/bin/eetidsagt -f
/home/informix/attr.w > /.../backup.000
|
清单 15. 指定 IDS 代理模块的 IDS 恢复命令(ontape)的示例
% cat /.../backup.000 |
/opt/IBM/DB2TOOLS/LUWEncryptionExpert/agent/ids/bin/eetidsagt -f
/home/informix/attr.r | ontape -r -t STDIO -v
|
要更多地了解关于 IDS 备份和恢复的信息,请参考 IBM Database Encryption Expert User's Guide 的 “Chapter 12: Backing up and restoring IDS databases ”,您可以从 参考资料 部分找到相关链接。
配置审计日志
使用 Management Console 为审计日志配置参数。每个主机和每个代理(FS 代理、DB2 代理和 IDS 代理)都有自己的配置。例如,您可以指定是否将日志发送到安全服务器、一次发送多少个日志,以及在发送日志之前代理需要等待的最短和最长时间(秒数)。
如果在所有安全服务器都未正常运行时尝试发送日志,那么日志就被存储到代理的临时文件中。当超过为发送日志指定的最小等待时间间隔之后,将重新尝试发送。这不影响应用程序访问保护点。
要更多地了解关于配置审计日志的信息,请参考 IBM Database Encryption Expert User's Guide 的 “Chapter 15: Setting Preferences”,您可以从 参考资料 部分找到相关链接。
维护 X.509 证书
由主服务器发布的每个 X.509 证书都有一个有效期。针对 CA 和主服务器的 X.509 证书有效期为 10 年。其他证书的有效期为 4 年。
下面的列表显示了 X.509 证书所在的目录。CA 的证书是在主服务器上创建的。CA 的证书在故障转移服务器和代理创建和注册证书时被复制到其上。
- 安全服务器(主服务器和故障转移服务器)
/opt/IBM/DB2TOOLS/LUWEncrptionExpert/server/pem
- FS 代理
/opt/IBM/DB2TOOLS/LUWEncrptionExpert/agent/vmd/pem
- DB2 代理
/opt/IBM/DB2TOOLS/LUWEncrptionExpert/agent/db2/pem
- IDS 代理
/opt/IBM/DB2TOOLS/LUWEncrptionExpert/agent/ids/pem
清单 16 显示了一个可以查看 X.509 证书的命令。查看证书的目的之一是了解它的有效期。
清单 16. 查看 X.509 证书的命令语法
openssl x509 -in filename -noout -text
|
在这个命令中,filename 是上面列出的目录下的 X.509 证书的文件名。
清单 17 显示了用于查看 X.509 证书的命令返回的信息。
清单 17. X.509 证书示例
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
0c:82:d5:ad:e7:f2:b0:fd:d7:22:14:e2:9f
Signature Algorithm: sha1WithRSAEncryption
Issuer: CN=EET CA (S) on srv1.yamato.ibm.com, OU=I, O=IBM, L=Yamato, ST=Kanagawa,
C=JP // Issuer: Certificate Authority (CA)
Validity
Not Before: Dec 14 06:52:41 2008 GMT
Not After : Dec 14 06:52:41 2012 GMT // Expiration date
Subject: OU=This agent certificate was automatically generated, CN=EET FS_VMD Agent
on host1.yamato.ibm.com // Subject: primary server, failover server, or agent
.....
|
要核实每个 Encryption Expert 组件的有效期,请查看表 1 所示的 X.509 证书文件。该表显示了每个 Encryption Expert 组件的证书文件名和有效期。
表 1. X.509 证书信息
| Encryption Expert 组件(主体) | X.509 证书文件(其中之一) | 有效期 |
|---|
| CA | donkey_signer-cert.pem | 10 年 | | 主服务器 | donkey_server_hostname-cert.pem | 10 年 | | 故障转移服务器 | donkey_server_hostname-cert.pem | 4 年 | | 代理 | agent-cert.pem | 4 年 |
清单 18 显示了延长 CA X.509 证书有效期的命令。在主服务器上发出该命令。
清单 18. 延长 CA X.509 证书有效期的命令
# /opt/IBM/DB2TOOLS/LUWEncryptionExpert/server/bin/re_gen_cert_auth
|
虽然您延长了 CA 的 X.509 证书有效期,但其他的 X.509 证书都已过期。因此,您还需要延长主服务器、故障转移服务器和代理的 X.509 证书的有效期。
清单 19 显示了用于延长主服务器的 X.509 证书的有效期的命令。
清单 19. 延长主服务器的 X.509 证书的有效期的命令(使用其中之一)
# /opt/IBM/DB2TOOLS/LUWEncryptionExpert/server/bin/re_gen_cert
# /opt/IBM/DB2TOOLS/LUWEncryptionExpert/server/bin/re_sign_cert
|
re_gen_cert 命令重新创建了密匙。re_sign_cert 命令重用该密匙。
清单 20 显示了用于延长故障转移服务器的 X.509 证书的有效期的命令。
清单 20. 延长故障转移服务器的 X.509 证书的有效期的命令(使用其中之一)
# /opt/IBM/DB2TOOLS/LUWEncryptionExpert/server/bin/re_gen_failover_cert
# /opt/IBM/DB2TOOLS/LUWEncryptionExpert/server/bin/re_sign_failover_cert
|
re_gen_failover_cert 命令重新创建了密匙。re_sign_failover_cert 命令重用该密匙。
要延长代理的 X.509 证书,请遵循下列步骤:
- 从代理机器发出以下命令删除正确代理的 X.509 证书。
删除 FS 代理的 X.509 证书:
# /opt/IBM/DB2TOOLS/LUWEncryptionExpert/agent/vmd/bin/register_host clean
|
删除 DB2 代理的 X.509 证书:
# /opt/IBM/DB2TOOLS/LUWEncryptionExpert/agent/db2/bin/register_host clean
|
删除 IDS 代理的 X.509 证书:
# /opt/IBM/DB2TOOLS/LUWEncryptionExpert/agent/ids/bin/register_host clean
|
- 在 Management Console 中选择主机,取消选择 Registration Allowed 复选框,并单击 Apply。这将清空 Certificate Fingerprint。
- 从 Management Console 勾选 Registration Allowed 复选框。
- 从代理机器发出以下命令,以注册正确代理的 X.509 证书。
注册 FS 代理的 X.509 证书:
# /opt/IBM/DB2TOOLS/LUWEncryptionExpert/agent/vmd/bin/register_host
|
注册 DB2 代理的 X.509 证书:
# /opt/IBM/DB2TOOLS/LUWEncryptionExpert/agent/db2/bin/register_host
|
注册 IDS 代理的 X.509 证书:
# /opt/IBM/DB2TOOLS/LUWEncryptionExpert/agent/ids/bin/register_host
|
- 在 Management Console 中再次选择主机。勾选 Communication Enabled 复选框并单击 Apply。
-
如果已经设置好故障转移服务器,那么再次在主机的下列目录中的 agent.conf 文件中添加访问点:
- FS 代理
/opt/IBM/DB2TOOLS/LUWEncryptionExpert/agent/vmd/etc
- DB2 代理
/opt/IBM/DB2TOOLS/LUWEncryptionExpert/agent/db2/etc
- IDS 代理
/opt/IBM/DB2TOOLS/LUWEncryptionExpert/agent/ids/etc
要了解更多信息,请参考 IBM Database Encryption Expert User's Guide 中的 “Chapter 6: Configuring hosts” 的 “Configuring an agent to use Security Servers” 小节,您可以从 参考资料 部分找到相关链接。
结束语
IBM Database Encryption Expert 使用包含一个或多个加密密匙和一个或多个访问控制规则的策略保护数据。这些策略由安全服务器集中管理,并且发送到根据需要保护数据的代理。事件(比如违规访问)审计日志还可以由安全服务器管理。为了确保高可用性需求,您可以设置多个安全服务器。
FS 代理提供一个特性,用于加密或解密写到文件系统或从中读取的数据。策略允许访问的任何应用程序都可以访问保护点下的文件,前提是该应用程序使用系统库来访问文件。将根据策略在写入时自动加密数据,而在读取时自动解密数据。加密对应用程序是透明的,您不需要更改应用程序本身。如果加密密匙启用 Cached on Host 选项,那么它就存储在有密码保护的 FS 代理的磁盘上。因此当 FS 代理启动之后,即使安全服务器不能正常运行,它也不会受到影响。FS 代理进程在启动时获取所有相关的在线策略,并将其缓存到内存中。在此之后,即使所有安全服务器不可用,或者没有启用 Cached on Host 选项,FS 代理都能够正常工作。
DB 提供的一个特性通过控制备份和恢复命令加密和解密 DB2 和 IDS 数据库备份映像。每次使用 DB 代理发出备份或恢复命令时,DB 代理就会与安全服务器通信以获取策略。
SSL 协议用于在安全服务器和每个代理、主服务器和每个故障转移服务器之间进行通信。X.509 证书用于身份验证。X.509 证书有一个有效期,因此您必须在过期之前延长它的有效期。
参考资料 学习
讨论
作者简介  | 
|  | Masahiro Ohkawa 是日本 IBM Yamato Software Development Laboratory (YSL) 的数据库工具开发团队的成员。 |
 | 
|  | Soh Kaijima 是日本 IBM Yamato Software Development Laboratory (YSL) 的数据库工具开发团队的成员。 |
 | 
|  | Gou Nakashima 是日本 IBM Yamato Software Development Laboratory (YSL) 的数据库工具开发团队的成员。 |
 | 
|  | Asuka Tokunaga 是日本 IBM Yamato Software Development Laboratory (YSL) 的数据库工具开发团队的成员。 |
对本文的评价
|