Windows Azure Pack. Создание Shielded VM.
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_
Скачанные файлы копируем в каталог "C:\Shield".
Теперь нам надо сгенерировать файл содержащий данные экранирования, с использованием которых будет создана экранированная ВМ. Для этого мы можем воспользоваться скриптом. Он автоматически установит модуль GuardedFabricTools, а так же создаст все оставшиеся файлы, необходимые для генерации Shielding Data File (PDK).
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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 |
В начале скрипта заполняем значения переменных. Важно наличие только первых двух файлов, которые мы скачали из Windows Azure Pack. Остальные будут созданы, если их нет, в процессе. Подробнее про генирацию файла "unattend.xml" можно почитать в официальной документации. В нашем случае выбран самый простой и универсальный вариант.
После того, как PDK файл был создан, нам надо импортировать его в портал WAP:
После импортирования файл появится в списке данных экранирования на портале:
Когда все выполнено, можно создать Shielded VM из соответствующего шаблона:
Обратите внимание, что пароль запрашиваться не будет - он уже зашит в PDK. Так же к данной машине нет возможности подключиться через консоль - так что аккуратно с настройкой файрвола :) Сбросить пароль администратора при его утере тоже невозможно, доступ к данным в таком случае восстановить не получится.
Подробнее почитать про данную технологию можно тут. В момент написания статьи использовать Shielded VM можно только в тестовых средах. После выхода глобального обновления в декабре 2016 можно будет применять решение в продуктиве.
после выхода r2. когда не скажу =) но скоро...
ОтветитьУдалитьR2 на 2016? что-то они больно скоро...
ОтветитьУдалить