Kulcstartó létrehozása és konfigurálása Az Azure Disk Encryptionhez Microsoft Entra ID azonosítóval (korábbi kiadás) Linux rendszerű virtuális gépekhez
A következőkre vonatkozik: ✔️ Linux rendszerű virtuális gépek rugalmas méretezési ✔️ csoportjai
Az Azure Disk Encryption új kiadása szükségtelenné teszi a Microsoft Entra alkalmazásparaméter biztosítását a virtuálisgép-lemez titkosításának engedélyezéséhez. Az új kiadással már nem kell megadnia a Microsoft Entra hitelesítő adatait az engedélyezési titkosítási lépés során. Az új kiadással minden új virtuális gépet titkosítani kell a Microsoft Entra alkalmazásparaméterei nélkül. A virtuálisgép-lemeztitkosítás új kiadással történő engedélyezésére vonatkozó utasításokat az Azure Disk Encryption című témakörben tekintheti meg. A Microsoft Entra alkalmazásparaméterekkel már titkosított virtuális gépek továbbra is támogatottak, és továbbra is a Microsoft Entra szintaxissal kell fenntartani őket.
Az Azure Disk Encryption az Azure Key Vault használatával szabályozza és kezeli a lemeztitkosítási kulcsokat és titkos kulcsokat. A kulcstartókkal kapcsolatos további információkért tekintse meg az Azure Key Vault használatának első lépéseit és a kulcstartó biztonságossá tételét ismertető témakört.
Az Azure Disk Encryption és a Microsoft Entra ID (korábbi kiadás) használatával használható kulcstartó létrehozása és konfigurálása három lépésből áll:
- Kulcstartó létrehozása.
- Microsoft Entra-alkalmazás és szolgáltatásnév beállítása.
- Állítsa be a Key Vault hozzáférési szabályzatát a Microsoft Entra alkalmazáshoz.
- A kulcstartó speciális hozzáférési szabályzatainak beállítása.
Szükség esetén kulcstitkosítási kulcsot (KEK) is létrehozhat vagy importálhat.
Az eszközök telepítésével és az Azure-hoz való csatlakozással kapcsolatos lépésekről az Azure Disk Encryption kulcstartójának létrehozásáról és konfigurálásáról szóló cikkből tájékozódhat.
Feljegyzés
A cikkben szereplő lépések automatizáltak az Azure Disk Encryption előfeltételeinek cli-szkriptjében és az Azure Disk Encryption előfeltételeiben a PowerShell-szkriptben.
Kulcstartó létrehozása
Az Azure Disk Encryption integrálva van az Azure Key Vaulttal, így szabályozhatja és kezelheti a kulcstartó-előfizetés lemeztitkosítási kulcsait és titkos kulcsait. Létrehozhat egy kulcstartót, vagy használhat egy meglévőt az Azure Disk Encryptionhez. A kulcstartókkal kapcsolatos további információkért tekintse meg az Azure Key Vault használatának első lépéseit és a kulcstartó biztonságossá tételét ismertető témakört. Kulcstartó létrehozásához resource Manager-sablont, Azure PowerShellt vagy Azure CLI-t használhat.
Figyelmeztetés
Annak érdekében, hogy a titkosítási titkos kódok ne léphessék át a regionális határokat, az Azure Disk Encryptionnek a Key Vaultnak és a virtuális gépeknek ugyanabban a régióban kell lenniük. Hozzon létre és használjon egy Key Vaultot, amely ugyanabban a régióban található, mint a titkosítandó virtuális gép.
Kulcstartó létrehozása a PowerShell-lel
A New-AzKeyVault parancsmaggal kulcstartót hozhat létre az Azure PowerShell használatával. További parancsmagok a Key Vaulthoz: Az.KeyVault.
Szükség esetén hozzon létre egy új erőforráscsoportot a New-AzResourceGroup használatával. Az adatközpontok helyeinek listázásához használja a Get-AzLocation parancsot.
# Get-AzLocation New-AzResourceGroup –Name 'MyKeyVaultResourceGroup' –Location 'East US'
Új kulcstartó létrehozása a New-AzKeyVault használatával
New-AzKeyVault -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -Location 'East US'
Jegyezze fel a tároló nevét, az erőforráscsoport nevét, az erőforrás-azonosítót, a tároló URI-ját és a lemezek titkosításakor később visszaadott objektumazonosítót .
Kulcstartó létrehozása az Azure CLI-vel
A key vaultot az az keyvault parancsokkal kezelheti az Azure CLI-vel. Kulcstartó létrehozásához használja az az keyvault create parancsot.
Szükség esetén hozzon létre egy új erőforráscsoportot az az group create használatával. Helyek listázásához használja az az account list-locations
# To list locations: az account list-locations --output table az group create -n "MyKeyVaultResourceGroup" -l "East US"
Hozzon létre egy új kulcstartót az keyvault create használatával.
az keyvault create --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --location "East US"
Jegyezze fel a tároló nevét (nevét), az erőforráscsoport nevét, az erőforrás-azonosítót (azonosítót), a tároló URI-ját és a későbbi használatra visszaadott objektumazonosítót.
Kulcstartó létrehozása Resource Manager-sablonnal
Kulcstartót a Resource Manager-sablonnal hozhat létre.
- Az Azure rövid útmutatósablonján válassza az Üzembe helyezés az Azure-ban lehetőséget.
- Válassza ki az előfizetést, az erőforráscsoportot, az erőforráscsoport helyét, a Key Vault nevét, az objektumazonosítót, a jogi feltételeket és a szerződést, majd válassza a Vásárlás lehetőséget.
Microsoft Entra-alkalmazás és szolgáltatásnév beállítása
Ha engedélyeznie kell a titkosítást egy futó azure-beli virtuális gépen, az Azure Disk Encryption létrehozza és beírja a titkosítási kulcsokat a kulcstartóba. A kulcstartóban lévő titkosítási kulcsok kezeléséhez Microsoft Entra-hitelesítés szükséges. Ehhez hozzon létre egy Microsoft Entra-alkalmazást. Hitelesítési célokra használhat titkos ügyfélalapú hitelesítést vagy ügyféltanúsítvány-alapú Microsoft Entra-hitelesítést.
Microsoft Entra-alkalmazás és szolgáltatásnév beállítása az Azure PowerShell-lel
Az alábbi parancsok végrehajtásához szerezze be és használja az Azure PowerShell-modult.
Microsoft Entra-alkalmazás létrehozásához használja a New-AzADApplication PowerShell-parancsmagot. A MyApplicationHomePage és a MyApplicationUri tetszőleges érték lehet.
$aadClientSecret = "My AAD client secret" $aadClientSecretSec = ConvertTo-SecureString -String $aadClientSecret -AsPlainText -Force $azureAdApplication = New-AzADApplication -DisplayName "My Application Display Name" -HomePage "https://MyApplicationHomePage" -IdentifierUris "https://MyApplicationUri" -Password $aadClientSecretSec $servicePrincipal = New-AzADServicePrincipal –ApplicationId $azureAdApplication.ApplicationId -Role Contributor
A $azureAdApplication.ApplicationId a Microsoft Entra ClientID, a $aadClientSecret pedig az az ügyfélkulcs, amelyet később az Azure Disk Encryption engedélyezéséhez fog használni. A Microsoft Entra ügyféltitkának megfelelő védelme. A futtatás
$azureAdApplication.ApplicationId
megjeleníti az ApplicationID azonosítót.
Microsoft Entra-alkalmazás és szolgáltatásnév beállítása az Azure CLI-vel
Az Azure CLI-vel az az ad sp parancsokkal kezelheti szolgáltatásneveit. További információ: Azure-szolgáltatásnév létrehozása.
Hozzon létre egy új szolgáltatásnevet.
az ad sp create-for-rbac --name "ServicePrincipalName" --password "My-AAD-client-secret" --role Contributor --scopes /subscriptions/<subscription_id>
A visszaadott appId a Más parancsokban használt Microsoft Entra ClientID. Az az keyvault set-policy-hez használt egyszerű szolgáltatásnév is. A jelszó az az ügyfélkulcs, amelyet később az Azure Disk Encryption engedélyezéséhez kell használnia. A Microsoft Entra ügyféltitkának megfelelő védelme.
Microsoft Entra-alkalmazás és szolgáltatásnév beállítása az Azure Portalon
A Használati portál lépéseit követve hozzon létre egy Microsoft Entra-alkalmazást és -szolgáltatásnevet, amely hozzáfér az erőforrások cikkéhez egy Microsoft Entra-alkalmazás létrehozásához. Az alábbiakban felsorolt minden lépés közvetlenül a cikk szakaszához viszi a befejezéshez.
- A szükséges engedélyek ellenőrzése
- Microsoft Entra-alkalmazás létrehozása
- Az alkalmazás létrehozásakor bármilyen nevet és bejelentkezési URL-címet használhat.
- Kérje le az alkalmazásazonosítót és a hitelesítési kulcsot.
- A hitelesítési kulcs az ügyfél titkos kódja, és a Set-AzVMDiskEncryptionExtension AadClientSecretjaként használatos.
- A hitelesítési kulcsot az alkalmazás hitelesítő adatként használja a Microsoft Entra ID-ba való bejelentkezéshez. Az Azure Portalon ezt a titkos kulcsot kulcsoknak nevezzük, de nincs kapcsolata a kulcstartókkal. A titkos kulcs megfelelő védelme.
- Az alkalmazásazonosítót később a Set-AzVMDiskEncryptionExtension AadClientId azonosítójaként, a Set-AzKeyVaultAccessPolicy ServicePrincipalName azonosítójaként fogja használni.
- A hitelesítési kulcs az ügyfél titkos kódja, és a Set-AzVMDiskEncryptionExtension AadClientSecretjaként használatos.
A Key Vault hozzáférési szabályzatának beállítása a Microsoft Entra alkalmazáshoz
Titkosítási titkos kulcsok adott Key Vaultba való írásához az Azure Disk Encryptionnek szüksége van a Microsoft Entra alkalmazás ügyfél-azonosítójára és ügyféltitkára, amely rendelkezik a titkos kulcsok Key Vaultba való írásához szükséges engedélyekkel.
Feljegyzés
Az Azure Disk Encryptionhez a következő hozzáférési szabályzatokat kell konfigurálnia a Microsoft Entra-ügyfélalkalmazáshoz: WrapKey és Az engedélyek beállítása .
A Key Vault hozzáférési szabályzatának beállítása a Microsoft Entra alkalmazáshoz az Azure PowerShell használatával
A Microsoft Entra-alkalmazásnak jogosultságra van szüksége a tároló kulcsainak vagy titkos kulcsainak eléréséhez. A Set-AzKeyVaultAccessPolicy parancsmaggal engedélyeket adhat az alkalmazásnak a –ServicePrincipalName paraméterértékként létrehozott ügyfélazonosítóval (amely az alkalmazás regisztrálásakor jött létre). További információért tekintse meg az Azure Key Vault – Lépésről lépésre című blogbejegyzést.
Állítsa be az AD-alkalmazás kulcstartó-hozzáférési szabályzatát a PowerShell-lel.
$keyVaultName = 'MySecureVault' $aadClientID = 'MyAadAppClientID' $KVRGname = 'MyKeyVaultResourceGroup' Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadClientID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName $KVRGname
A Key Vault hozzáférési szabályzatának beállítása a Microsoft Entra alkalmazáshoz az Azure CLI-vel
A hozzáférési szabályzat beállításához használja az az keyvault set-policyt . További információ: Key Vault kezelése a CLI 2.0 használatával.
Adjon hozzáférést az Azure CLI-vel létrehozott szolgáltatásnévnek a titkos kulcsok lekéréséhez és a kulcsok körbefuttatásához a következő paranccsal:
az keyvault set-policy --name "MySecureVault" --spn "<spn created with CLI/the Azure AD ClientID>" --key-permissions wrapKey --secret-permissions set
A Key Vault hozzáférési szabályzatának beállítása a Microsoft Entra alkalmazáshoz a portálon
- Nyissa meg az erőforráscsoportot a kulcstartóval.
- Válassza ki a kulcstartót, nyissa meg az Access-szabályzatokat, majd válassza az Új hozzáadása lehetőséget.
- Az Egyszerű kiválasztása csoportban keresse meg a létrehozott Microsoft Entra-alkalmazást, és válassza ki.
- Kulcsengedélyek esetén ellenőrizze a Titkosítási műveletek területen a Wrap Key (Tördelés) elemet.
- Titkos kódokra vonatkozó engedélyek esetén jelölje be a Beállítás jelölőnégyzetet a Titkos kódok kezelése műveletek területen.
- A hozzáférési szabályzat mentéséhez kattintson az OK gombra .
A kulcstartó speciális hozzáférési szabályzatainak beállítása
Az Azure-platformnak hozzá kell férnie a kulcstartó titkosítási kulcsaihoz vagy titkos kulcsaihoz, hogy elérhetővé tegye őket a virtuális gép számára a kötetek indításához és visszafejtéséhez. Sikertelen lesz a lemeztitkosítás engedélyezése a kulcstartón vagy az üzemelő példányokon.
A Key Vault speciális hozzáférési szabályzatainak beállítása az Azure PowerShell-lel
A Kulcstartó PowerShell-parancsmagja , a Set-AzKeyVaultAccessPolicy használatával engedélyezheti a lemeztitkosítást a kulcstartóhoz.
A Key Vault engedélyezése lemeztitkosításhoz: Az Azure Disk titkosításához engedélyezve van az EnabledForDiskEncryption.
Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDiskEncryption
Szükség esetén engedélyezze a Key Vaultot az üzembe helyezéshez: Engedélyezi a Microsoftot. Számítási erőforrás-szolgáltató, amely titkos kulcsokat kér le ebből a kulcstartóból, amikor erre a kulcstartóra hivatkozik az erőforrás létrehozásakor, például virtuális gép létrehozásakor.
Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDeployment
Szükség esetén engedélyezze a Key Vaultot a sablon üzembe helyezéséhez: Lehetővé teszi, hogy az Azure Resource Manager titkos kulcsokat szerezzen be ebből a kulcstartóból, amikor a kulcstartóra hivatkozik egy sablontelepítés.
Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForTemplateDeployment
A Key Vault speciális hozzáférési szabályzatainak beállítása az Azure CLI használatával
Az az keyvault update használatával engedélyezze a lemeztitkosítást a kulcstartóhoz.
A Key Vault engedélyezése lemeztitkosításhoz: Engedélyezve van a lemeztitkosítás.
az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-disk-encryption "true"
Szükség esetén engedélyezze a Key Vault üzembe helyezését: Engedélyezi a virtuális gépek számára, hogy titkos kódként tárolt tanúsítványokat kérjenek le a tárolóból.
az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-deployment "true"
Szükség esetén engedélyezze a Key Vaultot a sablon üzembe helyezéséhez: Engedélyezze a Resource Manager számára a titkos kulcsok lekérését a tárolóból.
az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-template-deployment "true"
A Key Vault speciális hozzáférési szabályzatainak beállítása az Azure Portalon
- Válassza ki a kulcsvaultot, lépjen a Hozzáférési szabályzatok elemre, és kattintson ide a speciális hozzáférési szabályzatok megjelenítéséhez.
- Jelölje be az Azure Disk Encryption hozzáférésének engedélyezése kötettitkosításhoz feliratú jelölőnégyzetet.
- Válassza az Azure-beli virtuális gépekhez való hozzáférés engedélyezése üzembe helyezéshez és/vagy az Azure Resource Managerhez való hozzáférés engedélyezése sablontelepítéshez, ha szükséges.
- Válassza a Mentés lehetőséget.
Kulcstitkosítási kulcs beállítása (nem kötelező)
Ha kulcstitkosítási kulcsot (KEK) szeretne használni a titkosítási kulcsok további biztonsági rétegéhez, adjon hozzá egy KEK-t a kulcstartóhoz. Az Add-AzKeyVaultKey parancsmaggal hozzon létre egy kulcstitkosítási kulcsot a kulcstartóban. A helyszíni kulcskezelési HSM-ből is importálhat KEK-t. További információt a Key Vault dokumentációjában talál. Kulcstitkosítási kulcs megadásakor az Azure Disk Encryption ezzel a kulccsal csomagolja be a titkosítási titkos kulcsokat, mielőtt a Key Vaultba ír.
Kulcsok létrehozásakor használjon RSA-kulcstípust. Az Azure Disk Encryption még nem támogatja az elliptikus görbekulcsok használatát.
A kulcstartó titkos kódját és A KEK URL-címeit verziószámba kell venni. Az Azure kikényszeríti a verziószámozás korlátozását. Érvényes titkos kódok és KEK URL-címek esetén tekintse meg a következő példákat:
- Példa egy érvényes titkos URL-címre: https://contosovault.vault.azure.net/secrets/EncryptionSecretWithKek/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- Példa érvényes KEK URL-címre: https://contosovault.vault.azure.net/keys/diskencryptionkek/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Az Azure Disk Encryption nem támogatja a portszámok megadását a kulcstartó titkos kulcsainak és a KEK URL-címeknek részeként. A kulcstartó nem támogatott ÉS támogatott URL-címeit a következő példákban tekinti meg:
- Nem elfogadható kulcstartó URL-címe https://contosovault.vault.azure.net:443/secrets/contososecret/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- Elfogadható kulcstartó URL-címe: https://contosovault.vault.azure.net/secrets/contososecret/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Kulcstitkosítási kulcs beállítása az Azure PowerShell-lel
A PowerShell-szkript használata előtt ismernie kell az Azure Disk Encryption előfeltételeit a szkript lépéseinek megértéséhez. Előfordulhat, hogy a mintaszkriptnek módosítania kell a környezetét. Ez a szkript létrehozza az Összes Azure Disk Encryption-előfeltételt, és titkosít egy meglévő IaaS virtuális gépet, és kulcstitkosítási kulccsal burkolja a lemeztitkosítási kulcsot.
# Step 1: Create a new resource group and key vault in the same location.
# Fill in 'MyLocation', 'MyKeyVaultResourceGroup', and 'MySecureVault' with your values.
# Use Get-AzLocation to get available locations and use the DisplayName.
# To use an existing resource group, comment out the line for New-AzResourceGroup
$Loc = 'MyLocation';
$KVRGname = 'MyKeyVaultResourceGroup';
$KeyVaultName = 'MySecureVault';
New-AzResourceGroup –Name $KVRGname –Location $Loc;
New-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname -Location $Loc;
$KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname;
$KeyVaultResourceId = (Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname).ResourceId;
$diskEncryptionKeyVaultUrl = (Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname).VaultUri;
# Step 2: Create the AD application and service principal.
# Fill in 'MyAADClientSecret', "<My Application Display Name>", "<https://MyApplicationHomePage>", and "<https://MyApplicationUri>" with your values.
# MyApplicationHomePage and the MyApplicationUri can be any values you wish.
$aadClientSecret = 'MyAADClientSecret';
$aadClientSecretSec = ConvertTo-SecureString -String $aadClientSecret -AsPlainText -Force;
$azureAdApplication = New-AzADApplication -DisplayName "<My Application Display Name>" -HomePage "<https://MyApplicationHomePage>" -IdentifierUris "<https://MyApplicationUri>" -Password $aadClientSecretSec
$servicePrincipal = New-AzADServicePrincipal –ApplicationId $azureAdApplication.ApplicationId -Role Contributor;
$aadClientID = $azureAdApplication.ApplicationId;
#Step 3: Enable the vault for disk encryption and set the access policy for the Microsoft Entra application.
Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDiskEncryption;
Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadClientID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName $KVRGname;
#Step 4: Create a new key in the key vault with the Add-AzKeyVaultKey cmdlet.
# Fill in 'MyKeyEncryptionKey' with your value.
$keyEncryptionKeyName = 'MyKeyEncryptionKey';
Add-AzKeyVaultKey -VaultName $KeyVaultName -Name $keyEncryptionKeyName -Destination 'Software';
$keyEncryptionKeyUrl = (Get-AzKeyVaultKey -VaultName $KeyVaultName -Name $keyEncryptionKeyName).Key.kid;
#Step 5: Encrypt the disks of an existing IaaS VM
# Fill in 'MySecureVM' and 'MyVirtualMachineResourceGroup' with your values.
$VMName = 'MySecureVM';
$VMRGName = 'MyVirtualMachineResourceGroup';
Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $vmName -AadClientID $aadClientID -AadClientSecret $aadClientSecret -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -KeyEncryptionKeyUrl $keyEncryptionKeyUrl -KeyEncryptionKeyVaultId $KeyVaultResourceId;
Tanúsítványalapú hitelesítés (nem kötelező)
Ha tanúsítványhitelesítést szeretne használni, feltölthet egyet a kulcstartóba, és üzembe helyezheti az ügyfélen. A PowerShell-szkript használata előtt ismernie kell az Azure Disk Encryption előfeltételeit a szkript lépéseinek megértéséhez. Előfordulhat, hogy a mintaszkriptnek módosítania kell a környezetét.
# Fill in "MyKeyVaultResourceGroup", "MySecureVault", and 'MyLocation' ('My location' only if needed)
$KVRGname = 'MyKeyVaultResourceGroup'
$KeyVaultName= 'MySecureVault'
# Create a key vault and set enabledForDiskEncryption property on it.
# Comment out the next three lines if you already have an existing key vault enabled for encryption. No need to set 'My location' in this case.
$Loc = 'MyLocation'
New-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname -Location $Loc
Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDiskEncryption
#Setting some variables with the key vault information
$KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname
$DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri
$KeyVaultResourceId = $KeyVault.ResourceId
# Create the Microsoft Entra application and associate the certificate with it.
# Fill in "C:\certificates\mycert.pfx", "Password", "<My Application Display Name>", "<https://MyApplicationHomePage>", and "<https://MyApplicationUri>" with your values.
# MyApplicationHomePage and the MyApplicationUri can be any values you wish
$CertPath = "C:\certificates\mycert.pfx"
$CertPassword = "Password"
$Cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($CertPath, $CertPassword)
$CertValue = [System.Convert]::ToBase64String($cert.GetRawCertData())
$AzureAdApplication = New-AzADApplication -DisplayName "<My Application Display Name>" -HomePage "<https://MyApplicationHomePage>" -IdentifierUris "<https://MyApplicationUri>" -CertValue $CertValue
$ServicePrincipal = New-AzADServicePrincipal -ApplicationId $AzureAdApplication.ApplicationId -Role Contributor
$AADClientID = $AzureAdApplication.ApplicationId
$aadClientCertThumbprint= $cert.Thumbprint
Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadClientID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName $KVRGname
# Upload the pfx file to the key vault.
# Fill in "MyAADCert".
$KeyVaultSecretName = "MyAADCert"
$FileContentBytes = get-content $CertPath -Encoding Byte
$FileContentEncoded = [System.Convert]::ToBase64String($fileContentBytes)
$JSONObject = @"
{
"data" : "$filecontentencoded",
"dataType" : "pfx",
"password" : "$CertPassword"
}
"@
$JSONObjectBytes = [System.Text.Encoding]::UTF8.GetBytes($jsonObject)
$JSONEncoded = [System.Convert]::ToBase64String($jsonObjectBytes)
#Set the secret and set the key vault policy for -EnabledForDeployment
$Secret = ConvertTo-SecureString -String $JSONEncoded -AsPlainText -Force
Set-AzKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName -SecretValue $Secret
Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDeployment
# Deploy the certificate to the VM
# Fill in 'MySecureVM' and 'MyVirtualMachineResourceGroup' with your values.
$VMName = 'MySecureVM'
$VMRGName = 'MyVirtualMachineResourceGroup'
$CertUrl = (Get-AzKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName).Id
$SourceVaultId = (Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGName).ResourceId
$VM = Get-AzVM -ResourceGroupName $VMRGName -Name $VMName
$VM = Add-AzVMSecret -VM $VM -SourceVaultId $SourceVaultId -CertificateStore "My" -CertificateUrl $CertUrl
Update-AzVM -VM $VM -ResourceGroupName $VMRGName
#Enable encryption on the VM using Microsoft Entra client ID and the client certificate thumbprint
Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $VMName -AadClientID $AADClientID -AadClientCertThumbprint $AADClientCertThumbprint -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId
Tanúsítványalapú hitelesítés és KEK (nem kötelező)
Ha tanúsítványhitelesítést szeretne használni, és a titkosítási kulcsot egy KEK-vel szeretné becsomagolni, az alábbi szkriptet használhatja példaként. A PowerShell-szkript használata előtt ismernie kell az Összes korábbi Azure Disk Encryption-előfeltételt a szkript lépéseinek megértéséhez. Előfordulhat, hogy a mintaszkriptnek módosítania kell a környezetét.
Fontos
A Microsoft Entra tanúsítványalapú hitelesítés jelenleg nem támogatott Linux rendszerű virtuális gépeken.
# Fill in 'MyKeyVaultResourceGroup', 'MySecureVault', and 'MyLocation' (if needed)
$KVRGname = 'MyKeyVaultResourceGroup'
$KeyVaultName= 'MySecureVault'
# Create a key vault and set enabledForDiskEncryption property on it.
# Comment out the next three lines if you already have an existing key vault enabled for encryption.
$Loc = 'MyLocation'
New-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname -Location $Loc
Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDiskEncryption
# Create the Azure AD application and associate the certificate with it.
# Fill in "C:\certificates\mycert.pfx", "Password", "<My Application Display Name>", "<https://MyApplicationHomePage>", and "<https://MyApplicationUri>" with your values.
# MyApplicationHomePage and the MyApplicationUri can be any values you wish
$CertPath = "C:\certificates\mycert.pfx"
$CertPassword = "Password"
$Cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($CertPath, $CertPassword)
$CertValue = [System.Convert]::ToBase64String($cert.GetRawCertData())
$AzureAdApplication = New-AzADApplication -DisplayName "<My Application Display Name>" -HomePage "<https://MyApplicationHomePage>" -IdentifierUris "<https://MyApplicationUri>" -CertValue $CertValue
$ServicePrincipal = New-AzADServicePrincipal -ApplicationId $AzureAdApplication.ApplicationId -Role Contributor
$AADClientID = $AzureAdApplication.ApplicationId
$aadClientCertThumbprint= $cert.Thumbprint
## Give access for setting secrets and wraping keys
Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadClientID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName $KVRGname
# Upload the pfx file to the key vault.
# Fill in "MyAADCert".
$KeyVaultSecretName = "MyAADCert"
$FileContentBytes = get-content $CertPath -Encoding Byte
$FileContentEncoded = [System.Convert]::ToBase64String($fileContentBytes)
$JSONObject = @"
{
"data" : "$filecontentencoded",
"dataType" : "pfx",
"password" : "$CertPassword"
}
"@
$JSONObjectBytes = [System.Text.Encoding]::UTF8.GetBytes($jsonObject)
$JSONEncoded = [System.Convert]::ToBase64String($jsonObjectBytes)
#Set the secret and set the key vault policy for deployment
$Secret = ConvertTo-SecureString -String $JSONEncoded -AsPlainText -Force
Set-AzKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName -SecretValue $Secret
Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDeployment
#Setting some variables with the key vault information and generating a KEK
# FIll in 'KEKName'
$KEKName ='KEKName'
$KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname
$DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri
$KeyVaultResourceId = $KeyVault.ResourceId
$KEK = Add-AzKeyVaultKey -VaultName $KeyVaultName -Name $KEKName -Destination "Software"
$KeyEncryptionKeyUrl = $KEK.Key.kid
# Deploy the certificate to the VM
# Fill in 'MySecureVM' and 'MyVirtualMachineResourceGroup' with your values.
$VMName = 'MySecureVM';
$VMRGName = 'MyVirtualMachineResourceGroup';
$CertUrl = (Get-AzKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName).Id
$SourceVaultId = (Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGName).ResourceId
$VM = Get-AzVM -ResourceGroupName $VMRGName -Name $VMName
$VM = Add-AzVMSecret -VM $VM -SourceVaultId $SourceVaultId -CertificateStore "My" -CertificateUrl $CertUrl
Update-AzVM -VM $VM -ResourceGroupName $VMRGName
#Enable encryption on the VM using Azure AD client ID and the client certificate thumbprint
Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $VMName -AadClientID $AADClientID -AadClientCertThumbprint $AADClientCertThumbprint -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -KeyEncryptionKeyUrl $keyEncryptionKeyUrl -KeyEncryptionKeyVaultId $KeyVaultResourceId