AzureWindows云计算系统

微软Azure云 IAAS故障排除与实战101:基于AAD的ADE Dual-Pass双重加密与解密实战(加密篇)

使用Azure AD 对 VM 进行磁盘加密的方法属于古老的办法了,操作加密过程极其复杂,目前默认在Portal中已淘汰(但依然可以创建)。新版本的 Azure 磁盘加密无需提供 Azure AD 应用程序参数即可启用 VM 磁盘加密。使用新版本,在执行启用加密步骤时,不再需要提供 Azure AD 凭据。已使用 Azure AD 应用程序参数加密的 VM 仍受支持,应继续使用 AAD 语法进行维护。
当然这对于想要入门Azure AD以及想要挑战复杂Azure Disk Encryption过程的萌新们来说是最合适不过的锻炼了。本次实验以Azure云的Windows虚拟机为测试环境,进行ADE Dual-Pass双重加密与解密实验。

Banner_MS-Azure_logo_horiz_c-gray_rgb_andyx.net_.png插图

[本文由Tim撰写,AndyX修改。本文的“Azure Portal”门户界面以英文为主,仅供参考。]

[本人中所有涉及到 Azure 的实验均在 Azure Global 国际版中进行配置,部分功能可能在 Azure 世纪互联中受到限制]

[本文为AndyX.Net原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明!]

 

初始化实验环境

  • OS:Windows Server 2019 Datacenter
  • VMName:TimADEDual3
  • VMSize:Standard_D2_v3
  • OSDisk:128GB, Standard HDD
  • AAD APP:TimADE3

 

ADE Dual-Pass双重加密实战 – 加密篇

1. 创建AAD Application 和 Service Principal

  • 在搜索栏搜索Azure Active Directory
  • 选择App Registrations(应用注册)
  • 添加New Registration(新注册)

AndyX.Net_encryption_and_decryption_of_azure_disk_encryption_with_azure_ad_dual-pass0.png插图(1)

  • 输入自定义Application应用名称
  • 选择Support account types支持账户类型(默认:“仅此组织目录[仅 Microsoft – 单一租户]中的帐户”)
  • Redirect URI (重定向 URI) 是个可选项,暂时先不选。

AndyX.Net_encryption_and_decryption_of_azure_disk_encryption_with_azure_ad_dual-pass1.png插图(2)

 

2.给AAD Application分配权限

  • 导航至你的Subscription订阅页面

AndyX.Net_encryption_and_decryption_of_azure_disk_encryption_with_azure_ad_dual-pass2.png插图(3)

  • 选择Access Control IAM(访问控制[标识和访问管理])
  • 选择 Add a role assignment(添加角色分配)

AndyX.Net_encryption_and_decryption_of_azure_disk_encryption_with_azure_ad_dual-pass3.png插图(4)

  • 选择Role 默认情况下选择 Contributor (参与者)
  • “Assign access to” 一般选择默认的 “Azure AD user, group, dervice principal”
  • 输入application name应用名称,【这里注意是应用名称而不是Email地址哦】

AndyX.Net_encryption_and_decryption_of_azure_disk_encryption_with_azure_ad_dual-pass4.png插图(5)

 

3. 获取用于APP应用登录的Tenant ID和APP ID数值,并创建证书与密钥

  • 返回你的Azure Active Directory页面
  • 单击App Registrations(应用注册)
  • 找到你刚才创建的应用(比如本文的TimADE3),并且复制APP ID和 Tenant ID留作备用

AndyX.Net_encryption_and_decryption_of_azure_disk_encryption_with_azure_ad_dual-pass5.png插图(6)

关于“获取用于登录的租户和应用 ID 值”的微软官方文档(中文),请参见链接:获取用于登录的租户和应用 ID 值

  • 还是在这个APP应用的页面,选择Certificate&Secrets (证书与密钥)
  • 选择New Client Secret (新客户端密钥)

AndyX.Net_encryption_and_decryption_of_azure_disk_encryption_with_azure_ad_dual-pass7.png插图(7)

  • 输入自定义描述,选择期限

AndyX.Net_encryption_and_decryption_of_azure_disk_encryption_with_azure_ad_dual-pass8.png插图(8)

  • 保存Value F4Iv0R9jZ-LJ~Zubfn4~74wL~yuxeRzf-P 【注意Value值在页面关闭后不可见!!!请及时保存】

AndyX.Net_encryption_and_decryption_of_azure_disk_encryption_with_azure_ad_dual-pass9.png插图(9)

 

4. 创建Key Vault (密钥保管库)

  • 例常创建Key Vault (密钥保管库)即可,【需要注意: 确保你的Key Vault 和VM 在同一Region(区域)】
  • 本文中创建的名为“TimADE”的Key Vault,Regio在东南亚,其他默认即可。

AndyX.Net_encryption_and_decryption_of_azure_disk_encryption_with_azure_ad_dual-pass10.png插图(10)

  • 进入生成好的Key Vault (密钥保管库)
  • 选择Access Policies  (访问策略)
  • 将“Enable Access to (启用对以下对象的访问权限)”中的三个选项全部勾选

AndyX.Net_encryption_and_decryption_of_azure_disk_encryption_with_azure_ad_dual-pass11.png插图(11)

  • 单击add Access Policy (添加访问策略)
  • 配置Key Permission(密钥权限)  选择  Wrap Key(KEK封装密钥)
  • 配置Secret Permission(机密权限)  选择 Set (设置)

AndyX.Net_encryption_and_decryption_of_azure_disk_encryption_with_azure_ad_dual-pass24.jpg插图(12)

  • 配置Service Principal(服务主体) 选择 你创建的AAD APP名称,例如本次实验的TimADE3
  • 最后别忘了点左下角的Add来完成权限的添加。

AndyX.Net_encryption_and_decryption_of_azure_disk_encryption_with_azure_ad_dual-pass14.png插图(13)

 

5. 使用Powershell加密VM虚拟机

  • 此处为了节省时间,已经创建了一台未加密的VM(名称:TimADEDual3)
  • 输入以下Cloud Shell/Powershell脚本开始加密
  • 注意:$VMRGName $KVRGname $vmName $aadClientID $aadClientSecret $KeyVaultName 变量需要自己按需修改!
  • 注意:此处的 -VolumeType 参数可以包含ALL(全部),OS(仅加密系统盘),Data(仅加密数据盘)
###注意:$VMRGName $KVRGname $vmName $aadClientID $aadClientSecret $KeyVaultName 变量需要自己按需修改!!!! 

    $VMRGName = 'MyVirtualMachineResourceGroup';
    $KVRGname = 'MyKeyVaultResourceGroup';
    $vmName = 'MySecureVM';
    $aadClientID = 'My-AAD-client-ID';
    $aadClientSecret = 'My-AAD-client-secret';
    $KeyVaultName = 'MySecureVault';
    $KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname; 
    $diskEncryptionKeyVaultUrl = $KeyVault.VaultUri; 
    $KeyVaultResourceId = $KeyVault.ResourceId; 
    $sequenceVersion = [Guid]::NewGuid(); 
 
    Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $vmName -AadClientID $aadClientID -AadClientSecret $aadClientSecret -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -VolumeType 'All' -SequenceVersion $sequenceVersion -skipVmBackup; 

###注意:此处的 -VolumeType 参数可以包含ALL(全部),OS(仅加密系统盘),Data(仅加密数据盘)
  • 加密需要一些时间,请耐心等待

AndyX.Net_encryption_and_decryption_of_azure_disk_encryption_with_azure_ad_dual-pass18.png插图(14)

  • 当加密完成之后你可以到Portal门户中查看改VM的磁盘状态,显示为“True (Encryption using AAD Credentials)”即为加密成功!

AndyX.Net_encryption_and_decryption_of_azure_disk_encryption_with_azure_ad_dual-pass19.png插图(15)

 

更多关于“基于AAD的ADE Dual-Pass双重加密VM的AzureCLI/Powershell操作方法”,请参见微软官方文档:

 

(全文完)

 

文章撰写:Tim,来自AndyX.Net ,由AndyX修改并发布。

文章遵循 CC 4.0 BY-SA 版权协议,若需转载本文,请标注来源与链接:原创内容AndyX.Net版权所有

https://andyx.net/azurelab_101_encryption_and_decryption_of_azure_disk_encryption_with_azure_ad_dual-pass/