受保护Hyper-V环境和受保护虚拟机Guarded fabric and shielded VMs

不管是企业内部仍是托管在IDC或云服务商的虚拟机,如何保障运行的环境是安全的,虚拟机是安全的(虚拟机文件里的数据以及看到的监视器画面)成为此篇文章和你们探讨研究的。shell

好比您正在运行的虚拟机,管理员是能够经过虚拟化平台经过监视器看到您的系统并操做的,好比关机,开启,重启等等操做,其次若是有别有用心的管理员或者不法分子在拿到您虚拟机的虚拟磁盘文件后拷贝到本身的电脑展开查看等,那么虚拟机里的数据一览无遗,甚至严重一点的拿到您AD虚拟机的虚拟磁盘后对域控用户数据库解密,获取到企业用户的登陆信息及密码,那么后果就至关严重了。数据库

其次若是有人把虚拟机的虚拟磁盘拷贝出来放到竞争对手的虚拟机环境里导入运行,那么是否会有虚拟机业务成果的山寨呢?安全

固然我这里只是列举可能出现的风险和案例,针对这样的问题而展开如何确保虚拟机运行安全以及虚拟机运行所处的环境是可信任的展开话题讨论。服务器

针对以上的痛点,在Windows Server 2016开始提供了一个新的技术叫“受保护者服务”可使用受保护的结构(Hyper-V主机环境)为VM提供更安全的运行环境。受保护的结构主要有三个部分组成:ide

  • 由一个主机保护者服务(HGS)组成 (一般是三个节点的集群)加密

  • 一个或多个受保护的主机spa

  • 一组受保护的虚拟机(VM)3d

在Windows Server 2016里只支持Windows系统的虚拟机保护,而在Windows Server 2019里还新增支持了Linux系统的虚拟机保护。日志

那么整个受保护的虚拟机运行在受保护的结构环境中,拓扑以下:orm

image  

对于工做模式只要分为2中:TPM模式和主机密钥模式

用到的安全手段主要大体能够为四种:TPM(vTPM)、签名证书、加密证书、Bitlocker

从受保护的主机来判断是否受信任和安全主要是根据这3点来衡量:提取主机的系统特征,硬件基准,以及当前运行环境做为代码完整性策略

从受保护的虚拟机来判断虚拟机是否安全主要是根据这4点来衡量:虚拟磁盘模板是否加密,卷签名目录,受保护的数据文件PDK(监护人证书:签名和加密;防御数据文件全部者:签名和加密),vTPM

受保护的虚拟机工做关系结构是这样的:

clip_image002  

受保护的虚拟机在受保护的Hyper-V主机工做关系结构是这样的:

clip_image003  

  1. 请求开启受保护的虚拟机VM01
    在受保护的主机能够启动受保护的VM以前,首先必须证实它是可信任的。为了证实它是可信任的,它必须向密钥保护服务(KPS)提供受信任证实。受信任证书经过证实过程得到。

主机请求证实。
受保护的主机请求证实。认证模式由受保护主机服务群集决定:
TPM可信证实:Hyper-V主机发送的信息包括:

  • TPM识别信息(承认密钥)

  • 最近的启动引导顺序的进程信息(TCG日志)

  • 主机上应用的代码完整性策略信息(CI)

备注:受保护的Hyper-V主机启动后每8小时进行一次验证,若是因为某种缘由,当受保护的VM尝试启动时收保护的主机没有认证证书也会触发请求。

主机密钥证实:Hyper-V主机发送密钥对的公钥。HGS验证主机密钥是否已注册。
管理员信任的证实:Hyper-V主机发送Kerberos票证,该票证标识主机所在的安全组。HGS验证主机属于先前由受信任的HGS管理员配置的安全组。(在Windows Server 2019中该模式已经取消)

  1. 证实成功(或失败)
    成功证实主机受信任所需的检查:

    • 经过TPM可信证实,验证主机的TPM标识,引导验证和代码完整性策略。

    • 使用主机密钥证实,仅验证主机密钥的注册。

  2. 认证证书已发送给主机
    假设证实成功,则向主机发送受信任证书,而且主机被视为“被保护”(被受权运行受保护的VM)。主机使用信任证书受权密钥保护服务安全地发放使用受保护虚拟机所需的密钥

  3. 主机请求VM密钥
    受保护的主机没有启动受保护的VM(本例中为VM01)所需的密钥。要得到必要的密钥,受保护的主机必须向KPS提供如下内容:

    • 目前的受信任证实

    • 加密密钥(密钥保护程序或KPS),包含启动VM01所需的密钥。密钥是使用只有KPS知道的其余密钥加密的。

  4. 发布密钥
    KPS检查受信任证书以肯定其有效性。证书不得过时,KPS必须信任颁发证书的证实服务。

  5. 密钥返回给主机
    若是受信任证书有效,KPS会尝试解密该密钥并安全地返回启动VM所需的密钥。请注意,密钥已加密到受保护主机的VBS。

  6. 主机启动VM01

那么部署这样一套受保护的结构须要多少步骤呢?下面这张图列了关键步骤:

clip_image004  

部署这样一套受保护的Hyper-V环境和受保护的虚拟机最后是能够经过Powershell来管理,也或者使用SCVMM或Windows Azure Pack来管理的。

过程不复杂,但要注意的点和涉及的知识是比较复杂的。

简单来讲怎么实现虚拟机安全以及达到的效果,个人总结是:

  • 以签名证书和加密证书构建独立的监护域(监护人)

  • 扫描认为合格的Hyper-V硬件及系统环境做为基准存放在另外一个独立域中做为基准校验,其中能够以TPM为安全芯片加固

  • 虚拟机磁盘进行证书Bitlocker加密,也能够结合vTPM加固,虚拟磁盘再进行证书签名绑定惟一性,让在独立域中做为基准校验

  • 设置虚拟机的全部者和监护域(人)进行定向校验

  • 虚拟机的每一次启动都会进行全方位多维度基准校验,缺一都将致使启动失败

  • 虚拟机的虚拟磁盘也是全方位360度无死角加密,不管是网路复制传输仍是拷贝都没法获取虚拟磁盘内容

  • 受保护的虚拟机在受保护的Hyper-V主机以前移动或传输数据也是全加密状态

  • 若是恶意人员要获取虚拟机里的数据,须要具有3大块:受保护的Hyper-V主机,监护域(人)以及虚拟机文件,想一想都不现实能够同时拿到这么多才能获取到vhdx里的内容

这项功能我以为针对业务场景也解决以下需求:

  • 在加域的虚拟机(域成员服务器),从外围增长了虚拟机的安全加固,但对内使用域管理员帐号进行访问还须要多种约束手段以及其余的技术手段作安全辅助;

  • 若是虚拟机是不加域的托管在企业虚拟化平台上,那么业务人员直接管理该虚拟机:从外保障了恶意的IT管理员没法进行数据的窃取和窥窃,从内由直接的使用者放心的使用管理本身的系统。

后续如何实现主要核心三个章节:

    最后感谢王泽和高毅的功能介绍,让我有更深刻的研究与实践把这样一个好的技术和功能分享给你们。

    相关文章
    相关标签/搜索