面对越来越猖獗的黑客攻击,企业数据安全已经成为 CIO 们日程表中头等重要的大事。数据安全是一个系统性的工程,从用户终端到后台数据中心有着几十个环节,防火墙、身份认证、应用数据加密每一种技术都只能解决某些环节的安全问题,只要有一个环节没有做好安全防护,还是会留下安全隐患。

vsphere 虚拟机自动启动(vSphere虚拟机加密)(1)

虚机加密工作原理

vSphere 采用对称加密算法 XTS-AES-256 来对虚机进行加密,对虚机文件和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密数据。高级加密标准 AES (Advanced Encryption Standard) 是美国联邦政府采用的一种区块加密标准。XTS-AES 算法是 2008 年发布的,是目前数据存储领域广泛使用的一种加密算法。AES 加密密钥长度可以是128比特、192比特、256比特中的任意一个,密钥长度越长越难破解,XTS-AES-256 采用的是256比特长度密钥。

虚机加密是通过 ESXi 内核完成的,为了优化性能,ESXi 会调用 CPU 的 AES-NI (Advanced encryption Standard – New Instruction) 指令集,通过硬件来加速加密算法,Intel 的 CPU 从 Westmere 开始就全面支持 ASE-NI 指令集。

对一个虚机进行加密是通过修改存储策略来完成的,虚机本身不需要做任何修改和配置。管理员可以很方便地把一个现有的虚机进行加密,或者是把已经加密的虚机改成不加密的。

vsphere 虚拟机自动启动(vSphere虚拟机加密)(2)

密钥管理

对称加密算法 XTS-AES-256 需要两个密钥:

vsphere 虚拟机自动启动(vSphere虚拟机加密)(3)

vSphere 在虚拟机加密和解密过程中对于密钥的管理流程是这样的:1. 未加密虚机(必须是处于关机状态)在对应的服务器上随机生成一个数据密钥 DEK;通过 vCenter 从 KMS 上获得租户密钥 KEK;使用租户密钥 KEK 对数据密钥 DEK 进行加密,并写入虚机的 vmx 文件;使用数据密钥 DEK 来加密整个虚机数据文件。

2. 已经加密的虚机从虚机的 vmx 文件中获得 KEK ID 和加密的数据密钥;通过 vCenter 从第三方密钥服务器上根据 KEK ID 获得租户密钥 KEK;利用 KEK 解密获得数据密钥 DEK;利用数据密钥 DEK 来解密虚机数据文件。

vsphere 虚拟机自动启动(vSphere虚拟机加密)(4)

下面就是一个存放在 vmx 文件中的数据密钥例子,其中 encryption.keySafe 那一行是 KEY ID,下一行 encryption.data 是被加密的数据密钥的数据部分。

vsphere 虚拟机自动启动(vSphere虚拟机加密)(5)

指定第三方 KMS 服务器

vSphere 虚机加密采用的是客户自带密钥 (Bring-Your-Own-Key) 的策略,有这方面要求的客户大部分都已经部署了密钥管理服务器,我们只需要在 vCenter 中指定客户现有的 KMS 服务器就可以了。当然必须要考虑 KMS 服务器高可靠和灾备的方案,不然一旦发生故障,取不到 KEK 密钥,所有的加密虚机可就启动不起来了。

理论上,凡是兼容 KMIP (Key Management Interoperability Protocol) 1.1 的 KMS 服务器都可以接入 vCenter,以下是 vSphere 6.5 支持的部分 KMS 厂商。

vsphere 虚拟机自动启动(vSphere虚拟机加密)(6)

加密的 VMOTION

虚机加密了,自然引入了一个新的概念 - “加密的 vMotion”,虚机数据不但在存储里面是加密的,而且在 vMotion 的过程中也是加密的。vCenter 中关于虚机的配置也多了一个加密的 vMotion 选项,总共有三个选择:

vsphere 虚拟机自动启动(vSphere虚拟机加密)(7)

,