以下内容介绍 Azure Disk Encryption(Azure磁盘加密)的概念、使用场景、所支持的 Linux 发行版本及对Azure VM虚拟机进行磁盘加密操作。
Azure磁盘加密简介 Azure磁盘加密即Azure Disk Encryption是一个可加密 Azure IaaS VM 中 Linux 和 Windows 磁盘的新功能,Azure Disk Encryption 主要通过 Linux 操作系统的 DM-Crypt 特性和 Windows 的 BitLocker 功能等行业标准来加密操作系统和数据磁盘中的数据,以帮助用户保护数据安全和企业隐私。它可以帮助你满足企业安全与合规要求。 Azure磁盘加密与 Azure Key Vault 功能集成,以帮助你控制和管理磁盘的加密密钥,同时确保所有数据都以加密形式存储到 Azure Storage。
Azure磁盘加密场景 Azure Disk Encryption 解决方案主要支持如下 3 种用户的加密场景: 1.使用加密密钥生成新的 Azure VM VHD。 2.使用加密密钥从 Azure Gallery 创建 Azure VM。 3.加密已在线运行的 Azure VM。
Azure磁盘加密支持以下Linux发行版 在以下 Linux 服务器分发和版本上支持 Azure 磁盘加密:
* RHEL 支持将 ADE 用于数据磁盘。当前的 ADE 实现适用于 OS 磁盘,但当前并非联合支持。Microsoft 和 Red Hat 都在努力实现联合支持解决方案。
Azure磁盘加密常见问题解答 Q:哪些用户可以使用Azure磁盘加密? A:Azure Disk Encryption 支持使用 ARM 模板、Azure PowerShell 和 Azure CLI 的所有用户,提供了非常大的灵活性。 Q:Azure Disk Encryption 使用成本是多少? A:目前测试期间无使用费用,正式发布之后的定价将遵循市场一般准则。 Q:Azure Disk Encryption 是否与 Azure Key Vault 集成? A:是的,Azure Disk Encryption 使用 Azure Key Vault 进行密钥存储。 Q:Azure Disk Encryption 是否实现了「BYOK」能力? A:是的,你可以提供自己的加密密钥。 Q:Azure磁盘加密可以同时加密启动盘和数据磁盘吗? A:是的,可以。 Q:哪些 Azure 数据中心可以使用 Azure Disk Encryption? A:目前已在 Microsoft Azure(国际版)所有数据中心开始提供服务,但加密密钥必需与加密虚拟机存储在同一区域。 Q:是否可以使用 Azure 磁盘加密来加密引导卷和数据卷? A:是的,可以加密 Windows 和 Linux IaaS VM 的引导卷和数据卷。 对于 Windows VM,在不事先加密 OS 卷的情况下无法加密数据。 对于 Linux VM,可以在不事先加密 OS 卷的情况下加密数据卷。 加密 Linux 的 OS 卷之后,不支持针对 Linux IaaS VM 的 OS 卷禁用加密。 Q:是否可对自定义 Linux 映像应用 Azure 磁盘加密? A:不能对自定义 Linux 映像应用 Azure 磁盘加密。 仅支持上述受支持分发版的 Linux 库映像。目前不支持自定义 Linux 映像。 Q:对于 Linux,应使用哪种 Azure 磁盘加密工作流? A:为在 Linux 上获得最佳结果,建议使用以下工作流: 从与所需的 OS 发行版和版本相对应的未修改存储库映像启动 备份要加密的任何已装载的驱动器。 这是为了可在失败时进行恢复,例如 VM 在加密完成前重启。 加密(可能需要多个小时或甚至几天时间,具体取决于 VM 的特征和任何附加数据磁盘的大小) 根据需要自定义软件,并将其添加到映像。 如果此工作流不可用,可在平台存储帐户层使用存储服务加密 (SSE),作为通过 dm-crypt 实现完整磁盘加密的一个替代方法。 Q:是否可以向使用 yum 更新的 Linux Red Hat VM 应用更新? A:是的,可以对 Red Hat Linux VM 执行更新或修补。 Q:磁盘“Bek 卷”或“/mnt/azure_bek_disk”是什么? A:“Bek 卷”(适用于 Windows)或“/mnt/azure_bek_disk”(适用于 Linux)是安全存储用于加密 Azure IaaS VM 的加密密钥的本地数据卷。
对Azure VM虚拟机进行磁盘加密操作 前提条件: 为保证顺利实施 Azure VM 磁盘加密,需要大家的操作环境满足如下前提条件: 1.Azure 订阅。 2.Azure PowerShell:请务必使用最新版本的 Azure PowerShell 来配置 Azure Disk Encryption。 3.Azure 密钥保管库:Azure Disk Encryption 使用 Azure 密钥保管库进行密钥存储,为了保证加密密钥不能跨越 Azure 数据中心边界,所以 Azure Disk Encryption 需要密钥保管库与要加密的 VM 共存于同一区域。 4.Azure Active Directory:为将加密密钥写入特定的密钥保管库,Azure Disk Encryption 需要使用 Azure AD 的应用程序客户端 ID和密钥以保证有权限读写 Azure 密钥保管库。 5.Azure VM:Azure Disk Encryption 功能仅适用于使用 ARM 创建的 Azure VM。 一、加密Azure VM 满足以上列出的条件后,我们便可以开始着手加密一台 Azure VM。请按如下步骤在 Azure PowerShell 中进行操作: 1.登录 Azure 管理员账号 Login-AzureRmAccount 2.获取可用 Azure 订阅 Get-AzureRmSubscription 3.选择要加密 Azure VM 所在订阅 Select-AzureRmSubscription -SubscriptionName "<订阅名称>" 4.在正式加密 Azure VM 之前,我们先在 PowerShell 中预先初始化一些变量,诸如:资源组名称、指定要加密的虚拟机、密钥保管库、Azure AD 信息等。 $rgName = ‘资源组名称'; $vmName = ‘虚拟机名称'; $aadClientID = 'Azure AD 应用程序客户端ID'; $aadClientSecret = 'Azure AD 应用程序密钥'; $KeyVaultName = ‘KeyVault名称'; $KeyVault = Get-AzureRmKeyVault -VaultName $KeyVaultName -ResourceGroupName $rgname; $diskEncryptionKeyVaultUrl = $KeyVault.VaultUri; $KeyVaultResourceId = $KeyVault.ResourceId;
5.在虚拟机加密过程中,所产生的加密密钥将被写入到密钥保管库,因此 Azure AD 应用程序必需有将机密数据写入到密钥保管库的权限。大家可以使用如下命令来进行授权: Set-AzureRmKeyVaultAccessPolicy -VaultName $KeyVaultName -ServicePrincipalName $aadClientID -PermissionsToKeys all -PermissionsToSecrets all -ResourceGroupName $rgname; 6.使用如下命令启用 Azure 密钥保管库对 Azure Disk Encryption 磁盘加密的支持功能: Set-AzureRmKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $rgname –EnabledForDiskEncryption 在所有准备工作都完成之后,当然就是要实际对 Azure VM 进行加密操作了。使用 Set-AzureRmVmDiskEncryptionExtension 可直接启用 Azure VM 的加密选项,该 cmdlet 会使用指定 Azure AD 凭据将加密密钥写入到密钥保管库之后开始对虚拟机执行加密操作。 Set-AzureRmVMDiskEncryptionExtension -ResourceGroupName $rgname -VMName $vmName -AadClientID $aadClientID -AadClientSecret $aadClientSecret -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId; 由于加密操作过程会执行 10 至 15分钟,时间会比较长,而且可能会重启虚拟机,所以大家在操作前最好先保存正常执行的操作。 一旦你已经启用或部署加密的 Azure VM,可以使用 Get-AzureRmVmDiskEncryptionStatus cmdlet 查看系统盘、数据盘加密状态和加密密钥所在密钥保管库的实际 URL: Get-AzureRmVmDiskEncryptionStatus -ResourceGroupName $rgname -VMName $vmName
二、列出已加密虚拟机 如果您的订阅中有很多虚拟机,并要分别查看虚拟机的系统盘的数据盘的加密状态,可以使用如下 Powershell 脚本: $osVolEncrypted = {(Get-AzureRmVMDiskEncryptionStatus -ResourceGroupName $_.ResourceGroupName -VMName $_.Name).OsVolumeEncrypted} $dataVolEncrypted= {(Get-AzureRmVMDiskEncryptionStatus -ResourceGroupName $_.ResourceGroupName -VMName $_.Name).DataVolumesEncrypted} Get-AzureRmVm | Format-Table @{Label=”VM”; Expression={$_.Name}}, @{Label=”系统盘加密状态”; Expression=$osVolEncrypted}, @{Label=”数据盘加密状态”; Expression=$dataVolEncrypted} -AutoSize
三、列出加密磁盘对应密钥 要查看订阅中所有已使用 Azure Disk Encryption 功能加密的磁盘及其在密钥保管库中所对应的加密密钥,可以使用如下脚本: Get-AzureKeyVaultSecret -VaultName $KeyVaultName | where {$_.Tags.ContainsKey('DiskEncryptionKeyFileName')} | format-table @{Label='VM'; Expression={$_.Tags['MachineName']}}, @{Label='VolumeLetter'; Expression={$_.Tags['VolumeLetter']}}, @{Label='EncryptionKeyURL'; Expression={$_.Id}}
相关主题 |