vSAN 从 6.6 开始增加了数据加密功能,在数据存储层对数据进行加密,这一操作对于上层的虚机而言是透明的,只要激活加密功能,vSAN 上存储的所有数据都会经过加密,不需要上层的虚机做任何的配置改变。
vSAN 采用对称加密算法 XTS-AES-256 来对虚机进行加密,对虚机文件和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密数据。高级加密标准 AES (Advanced Encryption Standard) 是美国联邦政府采用的一种区块加密标准。XTS-AES 算法是 2008 年发布的,是目前数据存储领域广泛使用的一种加密算法。AES 加密密钥长度可以是128比特、192比特、256比特中的任意一个,密钥长度越长越难破解,XTS-AES-256 采用的是256比特长度密钥。
值得一提的是,vSAN 可以利用 Intel CPU 的 AES-NI (Advanced Encryption Standard – New Instruction) 指令集来加密,通过硬件来加速加密算法,Intel 的 CPU 从 Westmere 开始就全面支持 ASE-NI 指令集。利用 Intel CPU 硬件来加速加密过程,可以节省加密过程对于 CPU 资源的占用,从而把更多的 CPU 资源留给正常的工作负载使用。
下面给大家看一段 vSAN 环境中配置和使用加密功能的演示视频 (提示:请选择视频下方的“高清 720P”选项来观看),演示内容分为以下几步:
1. 指定 KMS 系统
vSAN 加密采用的是客户自带密钥 (Bring-Your-Own-Key) 的策略,有这方面要求的客户大部分都已经部署了密钥管理服务器,我们只需要在 vSAN 中指定客户现有的 KMS 服务器就可以了。vSAN 支持兼容 KMIP (Key Management Interoperability Protocol) 1.1 的 KMS 服务器。
指定好 KMS 服务器之后,还需要建立 vSAN 和 KMS 服务器之间的信任关系,就是指定两者之间的安全通信机制。可以通过 CA 证书等方法来获得 KMS 服务的信任,在演示中我们是通过直接上传证书和私有密钥来建立 vSAN 和 KMS 之间的信任关系。
2. 激活 vSAN 加密功能
激活 vSAN 加密功能非常简单,只需要在 vSAN 的配置窗口中把加密功能选项打上勾就行了。在初始化加密功能时,有以下两个选项:
- Erase disks before use:vSAN 在加密之前,有一个硬盘格式化的操作,当然这个操作是多个硬盘逐个进行的,vSAN 上原有的数据会在硬盘间腾挪,原有的数据不会丢失。选上这个选项的话,vSAN 在格式化时会把硬盘上原有的未经加密的数据擦除掉,这个就像是 Windows 中的完全格式化(对应的是快速格式化)。勾选这一选项能够提高数据安全性,让别人无法读出硬盘上原来未经加密的数据,但是这个操作会消耗更多的时间。
- Allow Reduced Redundancy:对已有的 vSAN 环境进行加密,因为已经存在很多虚机,如果富余的空间不太多的话,可以勾选这个选项,允许 vSAN 在加密初始化过程中适当降低数据冗余的等级,例如在初始化的这段时间仅保存虚机的一个副本,从而减少对于硬件资源的占用。加密初始化操作结束后,还是会恢复原来设定的数据保护等级。对于全新安装的 vSAN 环境,因为没有数据存在,这个选项没有什么意义。
3. 在 vSAN 上创建虚机
vSAN 加密功能是针对整个 vSAN 集群的,一但激活之后,对于 vSAN 上存储的数据来说加密操作都是透明的,虚机的创建过程跟原来没有任何区别。在演示中,我们通过 SSH 登录到 vSAN 集群中的一台主机上,利用命令行 esxcli vsan storage list 来检查所有 vSAN 存储设备的状态,我们可以看到每一块磁盘都被加密了,包括高速缓存 SSD (cache)和容量磁盘 (capacity)。所以加密功能激活之后,vSAN 中存储的静态数据 (data at rest) 都是被加密的,在去重 (Deduplication) 和压缩 (Compression) 操作中,vSAN 先把加密数据读取出来解密,对数据进行去重和压缩,然后再经过加密后写入硬盘,从而保证较高的数据安全性。