通过使用 zfs key –c 命令,可以更改加密文件系统的包装密钥。必须首先已通过以下方式装入了现有的包装密钥:在引导时、通过显式装入文件系统密钥 (zfs key –l) 或者通过挂载文件系统 (zfs mount filesystem)。例如:
# zfs key -c tank/home/darren Enter new passphrase for 'tank/home/darren': xxxxxxxx Enter again: xxxxxxxx
在以下示例中,更改了包装密钥,并更改了 keysource 属性值以指定包装密钥来自一个文件。
# zfs key -c -o keysource=raw,file:///media/stick/key tank/home/darren
通过使用 zfs key –K 命令,可以更改加密文件系统的数据加密密钥,但是新的加密密钥仅用于新写入的数据。此功能可用来满足针对数据加密密钥的时限的 NIST 800-57 准则。例如:
# zfs key -K tank/home/darren
在上面的示例中,数据加密密钥不可见,也不是由您直接管理的。此外,您需要具有 keychange 委托才能执行密钥更改操作。
有以下加密算法可用:
aes-128-ccm、aes-192-ccm、aes-256-ccm
aes-128-gcm、aes-192-gcm、aes-256-gcm
ZFS keysource 属性标识用来包装文件系统数据加密密钥的密钥的格式和位置。例如:
# zfs get keysource tank/home/darren NAME PROPERTY VALUE SOURCE tank/home/darren keysource passphrase,prompt local
ZFS rekeydate 属性标识上次执行 zfs key –K 操作的日期。例如:
# zfs get rekeydate tank/home/darren NAME PROPERTY VALUE SOURCE tank/home/darren rekeydate Wed Jul 25 16:54 2012 local
如果加密文件系统的 creation 和 rekeydate 属性具有相同的值,则表明从未通过 zfs key –K 操作为该文件系统重建密钥。
您可以采用不同方式管理 ZFS 加密密钥,具体取决于您的需求,您既可以在本地系统上进行管理,也可以远程管理(如果需要一个中央位置)。
本地-上述示例说明了包装密钥既可以是口令短语提示符,也可以是本地系统上文件中的存储的原始密钥。
远程-可以使用密钥集中管理系统(如 Oracle 密钥管理程序)或者使用支持对 http 或 https URI 的简单 GET 请求的 Web 服务远程存储密钥信息。通过使用 PKCS#11 令牌,Oracle Solaris 系统可以访问 Oracle 密钥管理程序的密钥信息。
有关管理 ZFS 加密密钥的更多信息,请参见: http://www.oracle.com/technetwork/articles/servers-storage-admin/manage-zfs-encryption-1715034.html
有关使用 Oracle 密钥管理程序管理密钥信息的信息,请参见:
http://docs.oracle.com/cd/E24472_02/
查看关于委托密钥操作的以下权限描述:
通过使用 zfs key –l 和 zfs key –u 命令装入或卸载文件系统密钥需要 key 权限。大多数情况下,还将需要 mount 权限。
通过使用 zfs key –c 和 zfs key –K 命令更改文件系统密钥需要 keychange 权限。
请考虑针对密钥使用(装入或卸载)和密钥更改授予单独的权限,这样您可以采用“两人”密钥操作模型。例如,确定哪些用户可以使用密钥,哪些用户可以更改这些密钥。或者,两种用户需要同时在场才能进行密钥更改。此模型还允许您构建密钥契约系统。