云网牛站
所在位置:首页 > Linux教程 > Azure Disk Encryption(Azure磁盘加密)能用在Linux和Windows下

Azure Disk Encryption(Azure磁盘加密)能用在Linux和Windows下

2018-08-05 15:34:36作者:ywnz整理稿源:系统极客

以下内容介绍 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 磁盘加密:

Linux 分发版 版本 支持加密的卷类型
Ubuntu 16.04/18.04-DAILY-LTS OS 和数据磁盘
Ubuntu 14.04.5-DAILY-LTS OS 和数据磁盘
RHEL 7.5 数据磁盘*
RHEL 7.4 数据磁盘*
RHEL 7.3 数据磁盘*
RHEL 7.2 数据磁盘*
RHEL 6.8 数据磁盘*
RHEL 6.7 数据磁盘*
CentOS 7.4 OS 和数据磁盘
CentOS 7.3 OS 和数据磁盘
CentOS 7.2n OS 和数据磁盘
CentOS 6.8 OS 和数据磁盘
CentOS 7.1 数据磁盘
CentOS 7.0 数据磁盘
CentOS 6.7 数据磁盘
CentOS 6.6 数据磁盘
CentOS 6.5 数据磁盘
openSUSE 13.2 数据磁盘
SLES 12 SP1 数据磁盘
SLES Priority:12-SP1 数据磁盘
SLES HPC 12 数据磁盘
SLES Priority:11-SP4 数据磁盘
SLES 11 SP4 数据磁盘

* 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;

Azure Disk Encryption(Azure磁盘加密)能用在Linux和Windows下

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

Azure Disk Encryption(Azure磁盘加密)能用在Linux和Windows下

二、列出已加密虚拟机

如果您的订阅中有很多虚拟机,并要分别查看虚拟机的系统盘的数据盘的加密状态,可以使用如下 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(Azure磁盘加密)能用在Linux和Windows下

三、列出加密磁盘对应密钥

要查看订阅中所有已使用 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}}

Azure Disk Encryption(Azure磁盘加密)能用在Linux和Windows下

 

相关主题

Linux中好用的加密文本编辑器-EncryptPad下载安装

精选文章
热门文章