你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure 机密虚拟机常见问题解答

本文解答了关于机密 VM 的一些最常见问题。

什么是机密 VM?

机密 VM 是 IaaS VM,尤其适用于具有高安全性和机密性要求的租户。 通过机密 VM 可以获得以下技术和权益:

  • 加密“正在使用的数据”,包括处理器状态和虚拟机内存。 密钥由处理器生成,始终加密。
  • 主机证明,用于在初始化机密 VM 之前验证服务器的完整运行状况和合规性。
  • 加密“静态数据”。硬件安全模块 (HSM) 可用于保护租户以独占方式拥有的密钥。
  • 支持来宾 OS 的新 UEFI 启动体系结构,用于增强安全设置和功能。
  • 受信任的平台模块 (TPM) 的专用虚拟实例。 认证 VM 的运行状况,并提供强化的密钥管理功能。 支持 BitLocker 等用例。

为什么应该使用机密 VM?

机密 VM 可解除客户对将敏感工作负载从远程转移到云中的担忧。 机密 VM 为底层基础结构和云操作员的客户数据提供显著提升的保护。 与其他方法和解决方案不同,你不必调整现有工作负载来满足平台的技术需求。

什么是 AMD SEV-SNP 技术,它们如何关联到 Azure 机密 VM?

AMD 安全加密虚拟化-安全嵌套分页 (SEV-SNP) 技术可提供多种保护。 例如,内存加密、唯一 CPU 密钥、处理器寄存器状态加密、强完整性保护、固件回滚防护、旁道强化以及中断和异常行为限制。 总体而言,AMD SEV 技术强化了来宾保护,可拒绝虚拟机监控程序和其他主机管理代码访问 VM 内存和状态。 机密 VM 结合使用 AMD SEV-SNP 与 Azure 技术(例如全磁盘加密和 Azure Key Vault 托管的 HSM)。 你可以使用你控制的密钥对使用中的、传输中的和静态的数据进行加密。 借助内置的 Azure 证明功能,你可以独立建立对机密 VM 的安全运行状况和底层基础结构的信任。

什么是 Intel TDX 技术?它们如何关联到 Azure 机密 VM?

Intel Trust Domain Extensions (Intel TDX) 提供多种保护。 Intel TDX 使用硬件扩展来管理和加密内存,并对 TD CPU 状态的机密性和完整性提供保护。 此外,Intel TDX 通过拒绝虚拟机监控程序、其他主机管理代码和管理员访问 VM 内存和状态,帮助强化虚拟化环境。 机密 VM 结合使用 Intel TDX 与 Azure 技术(例如全磁盘加密和 Azure Key Vault 托管的 HSM)。 你可以使用你控制的密钥对使用中的、传输中的和静态的数据进行加密。

Azure 机密 VM 如何更好地防范源自 Azure 云基础结构内外的威胁?

Azure VM 针对其他租户和恶意入侵者提供了行业领先的安全和保护。 Azure 机密 VM 增强了这些保护措施,它使用基于硬件的 TEE(受信任执行环境),该环境利用 AMD 的 SEV-SNP 和 Intel TDX 对数据机密性和完整性进行加密隔离和保护,即使数据正在使用也是如此。 这意味着主机管理员和服务(包括 Azure 虚拟机管理程序)都不能直接查看或修改 VM 的内存或 CPU 状态。 此外,借助完整证明功能、完全 OS 磁盘加密和受硬件保护的虚拟受信任平台模块,机密 VM 永久性状态可获得保护,这样既不会向托管环境公开私钥,也不会公开内存内容。

是否自动保护附加到机密 VM 的虚拟磁盘?

目前,可以对机密 VM 的 OS 磁盘进行加密和保护。 为了提高安全性,可以为所有数据驱动器启用来宾级加密(例如 BitLocker 或 dm-crypt)。

TEE 是否保护已写入 Windows 交换文件 (pagefile.sys) 的内存?

是,但前提是 pagefile.sys 位于加密的 OS 磁盘上。 在具有临时磁盘的机密 VM 上,可以将 pagefile.sys 文件移动到加密的 OS 中,请参阅将 pagefile.sys 移动到 c:\ 驱动器的提示

如何部署 Azure 机密 VM?

我是否可以为基于 AMD 的机密 VM 执行证明?

AMD SEV-SNP 上的 Azure 机密 VM 会在启动阶段的过程中进行证明。 此过程对于用户是不透明的,它与 Microsoft Azure 证明和 Azure Key Vault 服务一起在云操作系统中进行。 机密 VM 还允许用户为其机密 VM 执行独立证明。 此证明使用名为 Azure 机密 VM 来宾证明的新工具进行。 来宾证明允许客户证明其机密 VM 正在启用了 SEV-SNP 的 AMD 处理器上运行。

我是否可以为基于 Intel 的机密 VM 执行证明?

Intel TDX 上的 Azure 机密 VM 可选择在启动阶段执行证明。 此过程对于用户是不透明的,它与 Microsoft Azure 证明和 Azure Key Vault 服务一起在云操作系统中进行。 可通过 vTPM 获取对来宾内证明的支持。 可以使用此功能来验证从硬件平台到来宾应用程序层的整个堆栈。 此功能目前在 AMD SEV-SNP 上提供,很快将针对 Intel TDX 发布。 目前,只有来宾内平台证明可用于 Intel TDX。 这让你能够验证 VM 是否在 Intel TDX 硬件上运行。 若要访问此预览功能,请访问我们的预览分支。 此外,对于寻求运营商独立证明的企业,我们还支持 Intel® Trust Authority

是否所有 OS 映像都适用于机密 VM?

若要在机密 VM 上运行,OS 映像必须满足某些安全性和兼容性要求。 这样,机密 VM 便可以进行安全地装载、经过证明且独立于底层云基础结构。 将来,我们计划提供指导,说明如何采用自定义 Linux 内部版本,并应用一组开源修补程序以将其限定为机密 VM 映像。

我是否可以自定义一个可用的机密 VM 映像?

是的。 可以使用 Azure Compute Gallery 来修改机密 VM 映像(例如通过安装应用程序进行修改)。 然后,可以基于修改后的映像部署机密 VM。

是否必须使用全磁盘加密方案? 能否改用标准方案?

可选的全磁盘加密方案是 Azure 最安全的方案,它符合机密计算原则。 但是,你也可以在使用全磁盘加密的同时,使用其他磁盘加密方案,或者替代全磁盘加密。 如果使用多个磁盘加密方案,双重加密可能会对性能产生负面影响。

由于 Azure 机密 VM 支持虚拟 TPM,我是否可以将机密/密钥密封到机密 VM 虚拟 TPM?

每个 Azure 机密 VM 都有自己的虚拟 TPM,客户可在其中密封其机密/密钥。 建议客户验证 vTPM 状态(通过适用于 Windows VM 的 TPM.msc)。 如果状态尚未准备好使用,建议重启 VM,然后再将机密/密钥密封到 vTPM。

创建 VM 后,能否启用或禁用新的全磁盘加密方案?

错误。 创建机密 VM 后,无法停用或重新激活全磁盘加密。 请改为创建新的机密 VM。

我是否可以控制可信计算基的更多方面,来强制运营商不参与密钥管理、证明和磁盘加密?

寻求 TCB 服务与云服务提供商进一步“职责分离”的开发人员应使用“NonPersistedTPM”安全类型。

  • 此体验仅作为 Intel TDX 公共预览版的一部分提供。 它有免责声明:TCB 及随之而来的责任由使用它或随之提供服务的组织控制。
  • 此体验绕过本机 Azure 服务,让你能够自带磁盘加密、密钥管理和证明解决方案。
  • 每个 VM 仍有一个 vTPM,它应用于检索硬件证据,但是 vTPM 状态不会通过重新启动持久保存,这意味着此解决方案非常适合临时工作负载和寻求与云服务提供商进一步分离的组织。

能否将非机密 VM 转换为机密 VM?

错误。 出于安全原因,必须从一开始就创建机密 VM。

是否可以将 DCasv5/ECasv5 CVM 转换为 DCesv5/ECesv5 CVM,或者将 DCesv5/ECesv5 CVM 转换为 DCasv5/ECasv5 CVM?

是的,在共享的区域中的 DCasv5/ECasv5 和 DCesv5/ECesv5 上,可以从一个机密 VM 转换为另一个机密 VM。 如果你正在使用 Windows 映像,请确保你拥有所有最新的更新。 如果使用的是 Ubuntu Linux 映像,请确保使用 Ubuntu 22.04 LTS 机密映像和最低内核版本 6.2.0-1011-azure

为什么在 Azure 门户的大小选择器中找不到 DCasv5/ECasv5 或 DCesv5/ECesv5 VM?

请确保已为机密 VM 选择一个可用区域。 另外,请确保在大小选择器中选择“清除所有筛选器”。

能否在机密 VM 上启用 Azure 加速网络?

错误。 机密 VM 不支持加速网络。 无法为任何机密 VM 部署或任何在机密计算上运行的 Azure Kubernetes 服务群集部署启用加速网络。

此错误的含义是什么? “操作无法完成,因为此操作导致超出批准的标准 DCasV5/ECasv5 或 DCesv5/ECesv5 系列核心配额”

你可能会收到错误“操作无法完成,因为此操作导致超出批准的标准 DCasv5/ECasv5 系列核心配额”。 此 Azure 资源管理器模板(ARM 模板)错误表明部署因缺少 Azure 计算核心而失败。 Azure 免费试用订阅没有足够大的核心配额用于机密 VM。 创建支持请求以提高配额

DCasv5 系列/DCesv5 系列与 ECasv5 系列/ECesv5 VM 之间有何区别?

ECasv5 系列和 ECesv5 系列的 VM 大小经过内存优化,可提供更高的内存与 CPU 比率。 这些大小特别适用于关系数据库服务器、中到大型规模的缓存以及内存中分析。

机密 VM 是否全球可用?

错误。 目前,这些 VM 只能在特定的区域中使用。 有关当前可用区域的列表,请参阅 VM 产品(按区域)

如果我需要 Microsoft 来帮助我为机密 VM 上的数据提供服务或访问权限,会发生什么情况?

即使客户授予了机密 VM 的访问权限,Azure 也没有向员工授予访问权限的操作流程。 因此,各种恢复和支持方案都不适用于机密 VM。

机密 VM 是否支持虚拟化,例如 Azure VMware 解决方案?

否,机密 VM 当前不支持嵌套虚拟化,例如不支持在 VM 中运行虚拟机监控程序。

使用机密 VM 是否有额外费用?

机密 VM 的计费取决于 VM 的使用情况和存储,以及大小和使用区域。 机密 VM 使用几兆字节的小型加密虚拟机来宾状态 (VMGS) 磁盘。 VMGS 封装 vTPM 和 UEFI 引导加载程序等 VM 组件的安全状态。 此磁盘可能会产生每月存储费用。 此外,如果选择启用可选的全磁盘加密,则加密的 OS 磁盘会产生更高的成本。 有关存储费用的详细信息,请参阅托管磁盘定价指南。 最后,对于一些高安全性和隐私设置,你可能会选择创建链接资源,例如托管 HSM 池。 Azure 对此类资源的计费独立于机密 VM 成本。

如果 DCesv5/ECesv5 系列 VM 上的时间不同于 UTC,该怎么办?

一些 DCesv5/ECesv5 系列 VM 可能遇到与 UTC 的很小时间偏差,但这种情况很少见。 对于此问题,我们很快就将提供长期修补程序。 在此期间,可对 Windows VM 和 Ubuntu Linux VM 使用以下解决方法:

sc config vmictimesync start=disabled
sc stop vmictimesync

对于 Ubuntu Linux 映像,请运行以下脚本:

#!/bin/bash

# Backup the original chrony.conf file
cp /etc/chrony/chrony.conf /etc/chrony/chrony.conf.bak

# check chronyd.service status
status=$(systemctl is-active chronyd.service)

# check chronyd.service status is "active" or not
if [ "$status" == "active" ]; then
  echo "chronyd.service is active."
else
  echo "chronyd.service is not active. Exiting script."
  exit 1
fi

# Comment out the line with 'refclock PHC /dev/ptp_hyperv'
sed -i '/refclock PHC \/dev\/ptp_hyperv/ s/^/#/' /etc/chrony/chrony.conf

# Uncomment the lines with 'pool ntp.ubuntu.com' and other pool entries
sed -i '/#pool ntp.ubuntu.com/ s/^#//' /etc/chrony/chrony.conf
sed -i '/#pool 0.ubuntu.pool.ntp.org/ s/^#//' /etc/chrony/chrony.conf
sed -i '/#pool 1.ubuntu.pool.ntp.org/ s/^#//' /etc/chrony/chrony.conf
sed -i '/#pool 2.ubuntu.pool.ntp.org/ s/^#//' /etc/chrony/chrony.conf

echo "Changes applied to /etc/chrony/chrony.conf. Backup created at /etc/chrony/chrony.conf.bak."

echo "Restart chronyd service"
systemctl restart chronyd.service


echo "Check chronyd status"
systemctl status chronyd.service