Windows Azure Pack. Создание Shielded VM

Автор: Автор: Артем Романчик, Системный архитектор, ActiveCloud

Shielded VM (экранированные виртуальные машины) – принципиально новая технология Windows Server 2016, которая позволяет владельцу виртуальной машины включить шифрование томов внутри гостевой ОС. Cодержимое ВМ становится недоступным как для вредоносного кода на узле Hyper-V, так и для администратора этого узла. В Windows Azure Pack возможность создания экранированных машин появилась начиная с версии Update Rollup 10.

Для создания защищенной виртуальной машины нам потребуется система с операционной системой Windows Server 2016 или Windows 10 и установленным компонентом "Shielded VM Tools".

Для установки компонента "Shielded VM Tools" на Windows Server 2016необходимо выполнить в PowerShell:

Add-WindowsFeature RSAT-Shielded-VM-Tools

Для Windows 10 необходимо cкачать и установить оснастку RSAT.

Далее нам необходимо скачать из пользовательского портала WAP два файла:

1. kpsmetadata.xml - содержит открытые ключи для шифрования данных

2. disk_.vsc - файл с данными подписи диска для защищенной ВМ.
 

Скачанные файлы копируем в каталог "C:\Shield".

Теперь нам надо сгенерировать файл содержащий данные экранирования, с использованием которых будет создана экранированная ВМ. Для этого мы можем воспользоваться скриптом. Он автоматически установит модуль GuardedFabricTools, а так же создаст все оставшиеся файлы, необходимые для генерации Shielding Data File (PDK).
 

  #VARS
  $HgsGuardian = "C:\Shield\kpsmetadata.xml"
  $vscPath = "C:\Shield\disk_ID.vsc"
  $unattendPath = "C:\Shield\unattend.xml" #Answer File (if not exists, will be create)
  $CRTPath = "C:\Shield\myrdpcert.pfx" #RDP certificate (if not exists, will be create)
  $pdkPath = "C:\Shield\MyShieldData.pdk" #New PDK Path (will be create)
   
  ###Optional. Need for creating unattend.xml
  $VMadminpwd = ConvertTo-SecureString "ServerAdminP$wd" -AsPlainText -Force #VM administrator password
  $RDPCRTpwd = ConvertTo-SecureString "SertPasswd" -AsPlainText -Force #CRT password
  ###Optional. Need for creating RDP self-signed certificate
  $DNSname = "rdp.contoso.local"
   
  ##BODY
   
  #If unattend.xml file not exixts, create
   
  if (!(test-path $unattendPath)) {
   
  #Install GuardedFabricTools module
   
  if (!(Get-Command New-ShieldingDataAnswerFile -ErrorAction SilentlyContinue)) {
   
  Install-Module -Name GuardedFabricTools -Force
   
  }
   
  # If RDP certificate file not exists, create and export
  if (!(test-path $CRTPath)) {
   
  $SelfSignedCert = New-SelfSignedCertificate -DnsName $DNSname -CertStoreLocation Cert:\CurrentUser\My
  Export-PfxCertificate -Cert $SelfSignedCert -FilePath $CRTPath -Password $RDPCRTpwd
   
  }
   
  #Create answer file without joining a domain
  New-ShieldingDataAnswerFile -AdminPassword $VMadminpwd -RDPCertificateFilePath $CRTPath -RDPCertificatePassword $RDPCRTpwd -Path $unattendPath
   
  }
   
  Import-Module ShieldedVMDataFile
   
  Set-HgsClientConfiguration –EnableLocalMode
  Import-HgsGuardian -FilePath $HgsGuardian -Name ActivecloudFabric -AllowUntrustedRoot –ErrorAction SilentlyContinue
  New-HgsGuardian –Name DefaultOwner –GenerateCertificates –ErrorAction SilentlyContinue
  $pdkOwner = Get-HgsGuardian -Name DefaultOwner
  $pdkGuardian = Get-HgsGuardian -Name ActivecloudFabric
  $volumeIDQualifier = @(New-VolumeIDQualifier -VolumeSignatureCatalogFilePath $vscpath -VersionRule Equals)
  New-ShieldingDataFile -ShieldingDataFilePath $pdkPath -Owner $pdkOwner -Guardian $pdkGuardian -VolumeIDQualifier $volumeIDQualifier -WindowsUnattendFile $unattendPath -OtherFile $CRTPath

view rawCreatePDK hosted with ❤ by GitHub



В начале скрипта заполняем значения переменных. Важно наличие только первых двух файлов, которые мы скачали из Windows Azure Pack. Остальные будут созданы, если их нет, в процессе. Подробнее про генирацию файла "unattend.xml" можно почитать в официальной документации. В нашем случае выбран самый простой и универсальный вариант.

После того, как PDK файл был создан, нам надо импортировать его в портал WAP:
 


После импортирования файл появится в списке данных экранирования на портале:
 


Когда все выполнено, можно создать Shielded VM из соответствующего шаблона:
 



Обратите внимание, что пароль запрашиваться не будет - он уже зашит в PDK. Так же к данной машине нет возможности подключиться через консоль - так что аккуратно с настройкой файрвола :) Сбросить пароль администратора при его утере тоже невозможно, доступ к данным в таком случае восстановить не получится.

Подробнее почитать про данную технологию можно тут. В момент написания статьи использовать Shielded VM можно только в тестовых средах. После выхода глобального обновления в декабре 2016 можно будет применять решение в продуктиве.

Наверх