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

适用于 Linux VM 的 Azure 磁盘加密

注意

本文引用了 CentOS,这是一个接近生命周期结束 (EOL) 状态的 Linux 发行版。 请相应地考虑你的使用和规划。 有关详细信息,请参阅 CentOS 生命周期结束指南

适用于:✔️ Linux VM ✔️ 灵活规模集

Azure 磁盘加密有助于保护数据,使组织能够信守在安全性与合规性方面作出的承诺。 它使用 Linux 的 DM-Crypt 功能为 Azure 虚拟机 (VM) 的 OS 和数据磁盘提供卷加密,并与 Azure Key Vault 集成,帮助你控制和管理磁盘加密密钥和机密。

Azure 磁盘加密可在区域内复原,与虚拟机的方式相同。 有关详细信息,请参阅支持可用性区域的 Azure 服务

如果使用 Microsoft Defender for Cloud,当 VM 未加密时,你会收到警报。 这些警报显示为“高严重性”,建议加密这些 VM。

Microsoft Defender for Cloud 磁盘加密警报

警告

  • 如果之前是结合使用 Azure 磁盘加密和 Microsoft Entra ID 来加密 VM,必须继续使用这种方式来加密 VM。 有关详细信息,请参阅结合使用 Azure 磁盘加密和 Microsoft Entra ID(以前的版本)
  • 某些建议可能会导致数据、网络或计算资源使用量增加,从而产生额外的许可或订阅成本。 必须具有有效的活动 Azure 订阅,才能在 Azure 的受支持区域中创建资源。

只需花几分钟时间学习使用 Azure CLI 创建 Linux VM 并对其进行加密快速入门或者使用 Azure PowerShell 创建 Linux VM 并对其进行加密快速入门,即可了解适用于 Linux 的 Azure 磁盘加密的基础知识。

支持的 VM 和操作系统

支持的 VM

Linux VM 具有各种大小。 Azure 磁盘加密在第 1 代和第 2 代 VM 上受支持。 Azure 磁盘加密还可用于使用高级存储的 VM。

请参阅无本地临时磁盘的 Azure VM 规格

Azure 磁盘加密在基本、A 系列 VM 或不满足以下最低内存要求的虚拟机上也不可用:

内存需求

虚拟机 最小内存要求
Linux VM(仅加密数据卷时) 2 GB
Linux VM(加密数据和 OS 卷,并且根 (/) 文件系统使用量为 4GB 或更低时) 8 GB
Linux VM(加密数据和 OS 卷,并且根 (/) 文件系统使用量大于 4GB 时) 根文件系统空间占用量 * 2。 例如,根文件系统使用量为 16 GB,则至少需要 32GB 的 RAM

在 Linux 虚拟机上完成 OS 磁盘加密进程后,可将 VM 配置为以更少的内存运行。

有关更多特例,请参阅 Azure 磁盘加密:限制

支持的操作系统

Azure 认可的 Linux 发行版的子集支持 Azure 磁盘加密,而 Linux 发行版本身就是所有 Linux 服务器可能的发行版的子集。

支持 Azure 磁盘加密的 Linux 服务器发行版的维恩图

未经 Azure 认可的 Linux 服务器发行版不支持 Azure 磁盘加密,而在认可的那些发行版中,只有以下发行版和版本支持 Azure 磁盘加密:

发布者 产品 SKU URN 支持加密的卷类型
Canonical Ubuntu 22.04-LTS Canonical:0001-com-ubuntu-server-jammy:22_04-lts:latest OS 和数据磁盘
Canonical Ubuntu 22.04-LTS Gen2 Canonical:0001-com-ubuntu-server-jammy:22_04-lts-gen2:latest OS 和数据磁盘
Canonical Ubuntu 20.04-LTS Canonical:0001-com-ubuntu-server-focal:20_04-lts:latest OS 和数据磁盘
Canonical Ubuntu 20.04-DAILY-LTS Canonical:0001-com-ubuntu-server-focal-daily:20_04-daily-lts:latest OS 和数据磁盘
Canonical Ubuntu 20.04-LTS Gen2 Canonical:0001-com-ubuntu-server-focal:20_04-lts-gen2:latest OS 和数据磁盘
Canonical Ubuntu 20.04-DAILY-LTS Gen2 Canonical:0001-com-ubuntu-server-focal-daily:20_04-daily-lts-gen2:latest OS 和数据磁盘
Canonical Ubuntu 18.04-LTS Canonical:UbuntuServer:18.04-LTS:latest OS 和数据磁盘
Canonical Ubuntu 18.04 18.04-DAILY-LTS Canonical:UbuntuServer:18.04-DAILY-LTS:latest OS 和数据磁盘
MicrosoftCBLMariner cbl-mariner cbl-mariner-2 MicrosoftCBLMariner:cbl-mariner:cbl-mariner-2:latest* OS 和数据磁盘
MicrosoftCBLMariner cbl-mariner cbl-mariner-2-gen2 MicrosoftCBLMariner:cbl-mariner:cbl-mariner-2-gen2:latest* OS 和数据磁盘
OpenLogic CentOS 8-LVM 8-LVM OpenLogic:CentOS-LVM:8-LVM:latest OS 和数据磁盘
OpenLogic CentOS 8.4 8_4 OpenLogic:CentOS:8_4:latest OS 和数据磁盘
OpenLogic CentOS 8.3 8_3 OpenLogic:CentOS:8_3:latest OS 和数据磁盘
OpenLogic CentOS 8.2 8_2 OpenLogic:CentOS:8_2:latest OS 和数据磁盘
OpenLogic CentOS 7-LVM 7-LVM OpenLogic:CentOS-LVM:7-LVM:7.9.2021020400 OS 和数据磁盘
OpenLogic CentOS 7.9 7_9 OpenLogic:CentOS:7_9:latest OS 和数据磁盘
OpenLogic CentOS 7.8 7_8 OpenLogic:CentOS:7_8:latest OS 和数据磁盘
OpenLogic CentOS 7.7 7.7 OpenLogic:CentOS:7.7:latest OS 和数据磁盘
OpenLogic CentOS 7.6 7.6 OpenLogic:CentOS:7.6:latest OS 和数据磁盘
OpenLogic CentOS 7.5 7.5 OpenLogic:CentOS:7.5:latest OS 和数据磁盘
OpenLogic CentOS 7.4 7.4 OpenLogic:CentOS:7.4:latest OS 和数据磁盘
OpenLogic CentOS 6.8 6.8 OpenLogic:CentOS:6.8:latest 仅数据磁盘
Oracle Oracle Linux 8.6 8.6 Oracle:Oracle-Linux:ol86-lvm:latest OS 和数据磁盘(请参阅下面的注释)
Oracle Oracle Linux 8.6 Gen 2 8.6 Oracle:Oracle-Linux:ol86-lvm-gen2:latest OS 和数据磁盘(请参阅下面的注释)
Oracle Oracle Linux 8.5 8.5 Oracle:Oracle-Linux:ol85-lvm:latest OS 和数据磁盘(请参阅下面的注释)
Oracle Oracle Linux 8.5 Gen 2 8.5 Oracle:Oracle-Linux:ol85-lvm-gen2:latest OS 和数据磁盘(请参阅下面的注释)
RedHat RHEL 9.2 9.2 RedHat:RHEL:9_2:latest OS 和数据磁盘(请参阅下面的注释)
RedHat RHEL 9.2 Gen 2 9.2 RedHat:RHEL:92-gen2:latest OS 和数据磁盘(请参阅下面的注释)
RedHat RHEL 9.0 9.0 RedHat:RHEL:9_0:latest OS 和数据磁盘(请参阅下面的注释)
RedHat RHEL 9.0 Gen 2 9.0 RedHat:RHEL:90-gen2:latest OS 和数据磁盘(请参阅下面的注释)
RedHat RHEL 9-lvm 9-lvm RedHat:RHEL:9-lvm:latest OS 和数据磁盘(请参阅下面的注释)
RedHat RHEL 9-lvm Gen 2 9-lvm-gen2 RedHat:RHEL:9-lvm-gen2:latest OS 和数据磁盘(请参阅下面的注释)
RedHat RHEL 8.9 8.9 RedHat:RHEL:8_9:latest OS 和数据磁盘(请参阅下面的注释)
RedHat RHEL 8.9 Gen 2 8.9 RedHat:RHEL:89-gen2:latest OS 和数据磁盘(请参阅下面的注释)
RedHat RHEL 8.8 8.8 RedHat:RHEL:8_8:latest OS 和数据磁盘(请参阅下面的注释)
RedHat RHEL 8.8 Gen 2 8.8 RedHat:RHEL:88-gen2:latest OS 和数据磁盘(请参阅下面的注释)
RedHat RHEL 8.7 8.7 RedHat:RHEL:8_7:latest OS 和数据磁盘(请参阅下面的注释)
RedHat RHEL 8.7 Gen 2 8.7 RedHat:RHEL:87-gen2:latest OS 和数据磁盘(请参阅下面的注释)
RedHat RHEL 8.6 8.6 RedHat:RHEL:8_6:latest OS 和数据磁盘(请参阅下面的注释)
RedHat RHEL 8.6 Gen 2 8.6 RedHat:RHEL:86-gen2:latest OS 和数据磁盘(请参阅下面的注释)
RedHat RHEL 8.5 8.5 RedHat:RHEL:8_5:latest OS 和数据磁盘(请参阅下面的注释)
RedHat RHEL 8.5 Gen 2 8.5 RedHat:RHEL:85-gen2:latest OS 和数据磁盘(请参阅下面的注释)
RedHat RHEL 8.4 8.4 RedHat:RHEL:8.4:latest OS 和数据磁盘(请参阅下面的注释)
RedHat RHEL 8.3 8.3 RedHat:RHEL:8.3:latest OS 和数据磁盘(请参阅下面的注释)
RedHat RHEL 8-LVM 8-LVM RedHat:RHEL:8-LVM:latest OS 和数据磁盘(请参阅下面的注释)
RedHat RHEL 8-LVM Gen 2 8-lvm-gen2 RedHat:RHEL:8-lvm-gen2:latest OS 和数据磁盘(请参阅下面的注释)
RedHat RHEL 8.2 8.2 RedHat:RHEL:8.2:latest OS 和数据磁盘(请参阅下面的注释)
RedHat RHEL 8.1 8.1 RedHat:RHEL:8.1:latest OS 和数据磁盘(请参阅下面的注释)
RedHat RHEL 7-LVM 7-LVM RedHat:RHEL:7-LVM:7.9.2020111202 OS 和数据磁盘(请参阅下面的注释)
RedHat RHEL 7.9 7_9 RedHat:RHEL:7_9:latest OS 和数据磁盘(请参阅下面的注释)
RedHat RHEL 7.8 7.8 RedHat:RHEL:7.8:latest OS 和数据磁盘(请参阅下面的注释)
RedHat RHEL 7.7 7.7 RedHat:RHEL:7.7:latest OS 和数据磁盘(请参阅下面的注释)
RedHat RHEL 7.6 7.6 RedHat:RHEL:7.6:latest OS 和数据磁盘(请参阅下面的注释)
RedHat RHEL 7.5 7.5 RedHat:RHEL:7.5:latest OS 和数据磁盘(请参阅下面的注释)
RedHat RHEL 7.4 7.4 RedHat:RHEL:7.4:latest OS 和数据磁盘(请参阅下面的注释)
RedHat RHEL 6.8 6.8 RedHat:RHEL:6.8:latest 数据磁盘(请参阅下面的注释)
RedHat RHEL 6.7 6.7 RedHat:RHEL:6.7:latest 数据磁盘(请参阅下面的注释)
SUSE openSUSE 42.3 42.3 SUSE:openSUSE-Leap:42.3:latest 仅数据磁盘
SUSE SLES 12-SP4 12-SP4 SUSE:SLES:12-SP4:latest 仅数据磁盘
SUSE SLES HPC 12-SP3 12-SP3 SUSE:SLES-HPC:12-SP3:latest 仅数据磁盘

* 适用于高于或等于 2023 年 5 月的映像版本。

注意

RHEL:

所有发行版:

  • ADE 对特定产品/服务类型的支持不会超过发布者提供的生命周期结束日期。
  • 旧版 ADE 解决方案(使用 Microsoft Entra 凭据)不建议用于新 VM,并且它与 RHEL 7.8 之后的 RHEL 版本或默认使用 Phyton 3 的 RHEL 版本不兼容。

其他 VM 要求

Azure 磁盘加密要求系统上存在 dm-crypt 和 vfat 模块。 在默认映像中删除或禁用 vfat 会阻止系统读取密钥卷,以及在后续重新启动时获取用于解锁磁盘的密钥。 从系统中删除 vfat 模块或强制扩展数据驱动器上的 OS 装入点/文件夹的系统强化步骤与 Azure 磁盘加密不兼容。

在启用加密之前,必须在 /etc/fstab 中正确列出要加密的数据磁盘。 创建条目时,请使用“nofail”选项,然后选择一个永久性的块设备名称(因为采用“/dev/sdX”格式的设备名称在重启期间可能不会与同一磁盘关联,尤其是在加密之后。有关此行为的更多详细信息,请参阅:排查 Linux VM 设备名称更改问题)。

确保正确配置用于装载的 /etc/fstab 设置。 若要配置这些设置,请运行 mount -a 命令,或重新启动 VM 并以这种方法触发重新装载。 装载完成后,检查 lsblk 命令的输出,以验证驱动器是否仍已装载。

  • 如果在启用加密之前 /etc/fstab 文件未正确装载该驱动器,则 Azure 磁盘加密无法将其正确装载。
  • 在加密过程中,Azure 磁盘加密进程会将装载信息移出 /etc/fstab,并移入其自身的配置文件中。 数据驱动器加密完成后,如果看到 /etc/fstab 中缺少条目,请不要担心。
  • 在开始加密之前,请务必停止可能正在向装载的数据磁盘写入数据的所有服务和进程并将其禁用,使其不会在重新引导后自动重启。 这可能会使文件在这些分区上保持打开状态,从而阻止加密过程重新装载这些分区,导致加密失败。
  • 重新启动后,Azure 磁盘加密进程需要花费一段时间来装载新加密的磁盘。 重新启动后,这些磁盘并不是立即可用。 该进程需要一段时间来启动、解锁然后装载加密的驱动器,然后,这些驱动器才可供其他进程访问。 重新启动后,此进程可能需要一分钟以上的时间,具体时间取决于系统特征。

下面是用于装载数据磁盘和创建必要的 /etc/fstab 条目的命令示例:

sudo UUID0="$(blkid -s UUID -o value /dev/sda1)"
sudo UUID1="$(blkid -s UUID -o value /dev/sda2)"
sudo mkdir /data0
sudo mkdir /data1
sudo echo "UUID=$UUID0 /data0 ext4 defaults,nofail 0 0" >>/etc/fstab
sudo echo "UUID=$UUID1 /data1 ext4 defaults,nofail 0 0" >>/etc/fstab
sudo mount -a

网络要求

若要启用 Azure 磁盘加密功能,Linux VM 必须符合以下网络终结点配置要求:

  • 要获取用于连接密钥保管库的令牌,Linux VM 必须能够连接到 Microsoft Entra 终结点 [login.microsoftonline.com]。
  • 要将加密密钥写入密钥保管库,Linux VM 必须能够连接到密钥保管库终结点。
  • Linux VM 必须能够连接到托管 Azure 扩展存储库的 Azure 存储终结点和托管 VHD 文件的 Azure 存储帐户。
  • 如果安全策略限制从 Azure VM 到 Internet 的访问,可以解析上述 URI,并配置特定的规则以允许与这些 IP 建立出站连接。 有关详细信息,请参阅防火墙后的 Azure Key Vault

加密密钥存储要求

Azure 磁盘加密需要 Azure Key Vault 来控制和管理磁盘加密密钥和机密。 密钥保管库和 VM 必须位于同一 Azure 区域和订阅中。

有关详细信息,请参阅创建和配置用于 Azure 磁盘加密的密钥保管库

术语

下表定义了 Azure 磁盘加密文档中使用的一些常用术语:

术语 定义
Azure Key Vault Key Vault 是基于联邦信息处理标准 (FIPS) 验证的硬件安全模块。 这些标准有助于保护加密密钥和敏感机密。 有关详细信息,请参阅 Azure 密钥保管库文档和创建和配置用于 Azure 磁盘加密的密钥保管库
Azure CLI Azure CLI 经过了优化,可从命令行管理 Azure 资源。
DM-Crypt DM-Crypt 是基于 Linux 的透明磁盘加密子系统,用于在 Linux VM 上启用磁盘加密。
密钥加密密钥 (KEK) 可用于保护或包装机密的非对称密钥 (RSA 2048)。 可提供硬件安全模块 (HSM) 保护的密钥或软件保护的密钥。 有关详细信息,请参阅 Azure 密钥保管库文档和创建和配置用于 Azure 磁盘加密的密钥保管库
PowerShell cmdlet 有关详细信息,请参阅 Azure PowerShell cmdlet

后续步骤