使用 AIX 加密文件系统 (EFS) 来进行数据库加密
如果要在 AIX® 操作系统上运行 Db2® 系统,那么可以选择使用 AIX 加密文件系统 (EFS) 来设置加密数据库。 有关 EFS的详细信息,请参阅 AIX 文档。
注: 如果您正在 分区数据库环境中工作,那么要使用 EFS,您的数据库应该位于单个数据库分区中。
通过将底层的 EFS 与 JFS2 文件系统配合使用,可以对包含数据库表中数据的操作系统文件进行加密。
设置加密的步骤如下所示:
- 在系统上启用 EFS。
- 为用来运行 DB2 数据库守护程序的用户帐户装入密钥库。
- 在数据库文件系统上启用 EFS。
- 确定要加密的操作系统文件。
- 对包含需要 EFS 保护的数据库表的文件进行加密。
在系统上启用 EFS
在启用 EFS 之前,必须安装 clic.rte 文件集。 可在扩展包 CD 上找到 clic.rte 安装映像。
以 root 用户身份运行下面的命令来在系统上启用 EFS:
% efsenable -a
仅需要运行 efsenable 命令一次。
装入密钥库
在下列配置示例中,用来运行 DB2 数据库守护程序的用户帐户称为
abst。 用户 abst 必须具有密钥库,并且 abst 所属的任何组也必须具有密钥库。
- 在启动 DB2 守护程序之前,所有密钥库都必须与
abst 进程相关联。可以通过使用 efskeymgr -V 命令来验证它们是否相关联,如以下示例所示:
# lsuser abst abst id=203 pgrp=abstgp groups=abstgp,staff ... # efskeymgr -V List of keys loaded in the current process: Key #0: Kind ..................... User key Id (uid / gid) ......... 203 Type ..................... Private key Algorithm ................ RSA_1024 Validity ................. Key is valid Fingerprint .............. 24c88df2:d91cb6a2:c3e11b6a:4c13f8b4:666fabd8 Key #1: Kind ..................... Group key Id (uid / gid) ......... 1 Type ..................... Private key Algorithm ................ RSA_1024 Validity ................. Key is valid Fingerprint .............. 03fead42:57e7646e:a1715626:cfa56c8e:8abed1c1 Key #2: Kind ..................... Group key Id (uid / gid) ......... 212 Type ..................... Private key Algorithm ................ RSA_1024 Validity ................. Key is valid Fingerprint .............. 339dfb19:bc850f4c:5551c975:7fe4961b:2dddf3bc
- 如果没有任何密钥库显示为与 abst 进程相关联,那么尝试使用以下命令来装入密钥库:
% efskeymgr -o ksh
此命令会提示用户提供密钥库密码,该密码最初设置为登录密码。
- 通过重新运行以下命令来确认已装入用户和组密钥:
% efskeymgr -V
应该会列示用户和组密钥。 如果仍然没有列示组密钥库,请继续执行步骤 4。
- 根据创建组的方式的不同,组密钥库可能不存在。 如果 efskeymgr -V 命令没有列示用户的组密钥库,那么必须创建组密钥库。请以 root 用户或 RBAC 角色 aix.efs_admin 身份创建组密钥库:
% efskeymgr -C group_name
- 将组密钥库访问权指定给每个合适的用户:
% efskeymgr -k group /group_name -s user/user_name
如果用户已登录,那么他们将不会立即对组密钥库具有访问权,他们应该使用 efskeymgr -o ksh 命令来重新装入其密钥库,或者重新登录。
在数据库文件系统上启用 EFS
EFS 仅在 JFS2 文件系统上运行,且必须专门启用。
如果数据库位于现有文件系统上,请运行
% chfs -a efs=yes filesystem
命令来启用 EFS,例如:% chfs -a efs=yes /test01
如果要创建新的文件系统,可以使用带有
-a efs=yes
选项的 smit 命令或 crfs 命令来启用 EFS 。 例如:% crfs -v jfs2 -a efs=yes -m mount_point -d device -A yes
现在,EFS 在文件系统上已启用但未打开。 仅对需要加密数据的特定数据库表开启 EFS (有关更多信息,请参阅有关 efsmgr 命令和继承的 AIX EFS 文档)。
确定要加密的文件
为了确定包含要使用 EFS 加密来保护的特定数据库表的文件,请遵循将 EMPLOYEE 表用作示例的这些步骤。
- 使用类似于以下示例的查询来查找表的 TBSPACEID:
SELECT TABNAME, TBSPACEID FROM syscat.tables WHERE tabname='EMPLOYEE'
假定此查询的结果如下所示:TABNAME TBSPACEID EMPLOYEE 2 - 使用类似于下面的示例的查询来在表空间中查找该 TBSPACEID:
LIST TABLESPACE CONTAINERS FOR 2
假定此查询的结果如下所示:容器标识 名称 类型 0 /test01/abst/NODE0000/BAR/T0000002/C0000000.LRG 文件 现在,您知道此表空间包含在称为 /test01/abst/NODE0000/BAR/T0000002/C0000000.LRG 的操作系统文件中。 这是需要加密的文件。
加密文件
首先,请按对数据或数据库进行任何重大更改之前的操作来备份数据库。
遵循下列步骤以加密文件:
- 列示文件,例如:
# ls -U /test01/abst/NODE0000/BAR/T0000002/C0000000.LRG -rw-------- 1 abst abstgp 33554432 Jul 30 18:01 /test01/abst/NODE0000/BAR/T0000002/C0000000.LRG
- 使用 efsmgr 命令来对文件进行加密,例如:
# efsmgr -e /test01/abst/NODE0000/BAR/T0000002/C0000000.LRG
如果您再次列出该文件,那么将在许可权字符串末尾看到e
(指示该文件已加密)。 例如:# ls -U /test01/abst/NODE0000/BAR/T0000002/C0000000.LRG -rw-------e 1 abst abstgp 33554432 Jul 30 18:03 /test01/abst/NODE0000/BAR/T0000002/C0000000.LRG
- 按正常方式启动并使用 DB2 数据库管理器。 在底层文件系统中,添加至 EMPLOYEE 表和此加密表空间的所有数据都将由 EFS 进行加密。 每当检索到数据时,都将通过 DB2 数据库管理器按正常方式解密并显示该数据。