Aracılığıyla paylaş


Microsoft Entra Id (önceki sürüm) ile Azure Disk Şifrelemesi için anahtar kasası oluşturma ve yapılandırma

Şunlar için geçerlidir: ✔️ Windows VM'leri

yeni Azure Disk Şifrelemesi sürümü, VM disk şifrelemesini etkinleştirmek için bir Microsoft Entra uygulama parametresi sağlama gereksinimini ortadan kaldırır. Yeni sürümle birlikte, şifrelemeyi etkinleştirme adımı sırasında artık Microsoft Entra kimlik bilgilerini sağlamanız gerekmez. Tüm yeni VM'ler, yeni sürüm kullanılarak Microsoft Entra uygulama parametreleri olmadan şifrelenmelidir. Yeni sürümü kullanarak VM disk şifrelemesini etkinleştirme yönergelerini görüntülemek için bkz. Azure Disk Şifrelemesi. Microsoft Entra uygulama parametreleriyle zaten şifrelenmiş vm'ler hala desteklenir ve Microsoft Entra söz dizimi ile korunmaya devam etmelidir.

Azure Disk Şifrelemesi, disk şifreleme anahtarlarını ve gizli dizilerini denetlemek ve yönetmek için Azure Key Vault kullanır. Anahtar kasaları hakkında daha fazla bilgi için bkz . Azure Key Vault ile çalışmaya başlama ve Anahtar kasanızın güvenliğini sağlama.

Microsoft Entra ID (önceki sürüm) ile Azure Disk Şifrelemesi kullanmak üzere bir anahtar kasası oluşturma ve yapılandırma üç adımdan oluşur:

  1. Anahtar kasası oluşturma.
  2. Bir Microsoft Entra uygulaması ve hizmet sorumlusu ayarlayın.
  3. Microsoft Entra uygulaması için anahtar kasası erişim ilkesini ayarlayın.
  4. Anahtar kasası gelişmiş erişim ilkelerini ayarlama.

Ayrıca isterseniz bir anahtar şifreleme anahtarı (KEK) oluşturabilir veya içeri aktarabilirsiniz.

Araçları yükleme ve Azure'a bağlanma adımları için Azure Disk Şifrelemesi için anahtar kasası oluşturma ve yapılandırma ana makalesine bakın.

Not

Bu makaledeki adımlar Azure Disk Şifrelemesi önkoşullar CLI betiğinde otomatikleştirilmiştir ve önkoşullar PowerShell betiği Azure Disk Şifrelemesi.

Anahtar kasası oluşturma

Azure Disk Şifrelemesi ile tümleştirilmiştirAzure Key Vault, anahtar kasası aboneliğinizdeki disk şifreleme anahtarlarını ve gizli dizilerini denetlemenize ve yönetmenize yardımcı olur. Azure Disk Şifrelemesi için bir anahtar kasası oluşturabilir veya mevcut bir kasayı kullanabilirsiniz. Anahtar kasaları hakkında daha fazla bilgi için bkz . Azure Key Vault ile çalışmaya başlama ve Anahtar kasanızın güvenliğini sağlama. Anahtar kasası oluşturmak için Resource Manager şablonu, Azure PowerShell veya Azure CLI kullanabilirsiniz.

Uyarı

Şifreleme gizli dizilerinin bölgesel sınırları aşmadığından emin olmak için Azure Disk Şifrelemesi Key Vault'un ve VM'lerin aynı bölgede birlikte bulunması gerekir. Şifrelenecek VM ile aynı bölgede yer alan bir Key Vault oluşturun ve kullanın.

PowerShell ile anahtar kasası oluşturma

New-AzKeyVault cmdlet'ini kullanarak Azure PowerShell ile bir anahtar kasası oluşturabilirsiniz. Key Vault'a yönelik başka cmdlet'ler için bkz . Az.KeyVault.

  1. New-AzResourceGroup ile gerekirse yeni bir kaynak grubu oluşturun. Veri merkezi konumlarını listelemek için Get-AzLocation kullanın.

    # Get-AzLocation
    New-AzResourceGroup –Name 'MyKeyVaultResourceGroup' –Location 'East US'
    
  2. New-AzKeyVault kullanarak yeni bir anahtar kasası oluşturma

    New-AzKeyVault -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -Location 'East US'
    
  3. Diskleri şifrelerken daha sonra kullanmak üzere döndürülen Kasa Adı, Kaynak Grubu Adı, Kaynak Kimliği, Kasa URI'si ve Nesne Kimliği'ne dikkat edin.

Azure CLI ile anahtar kasası oluşturma

Az keyvault komutlarını kullanarak Azure CLI ile anahtar kasanızı yönetebilirsiniz. Anahtar kasası oluşturmak için az keyvault create komutunu kullanın.

  1. Gerekirse az group create ile yeni bir kaynak grubu oluşturun. Konumları listelemek için az account list-locations kullanın

    # To list locations: az account list-locations --output table
    az group create -n "MyKeyVaultResourceGroup" -l "East US"
    
  2. az keyvault create komutunu kullanarak yeni bir anahtar kasası oluşturun.

    az keyvault create --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --location "East US"
    
  3. Kasa Adı (ad), Kaynak Grubu Adı, Kaynak Kimliği (KIMLIK), Kasa URI'si ve daha sonra kullanılmak üzere döndürülen Nesne Kimliği'ne dikkat edin.

Resource Manager şablonuyla anahtar kasası oluşturma

Resource Manager şablonunu kullanarak anahtar kasası oluşturabilirsiniz.

  1. Azure Hızlı Başlangıç Şablonu'nda Azure'a Dağıt'ı seçin.
  2. Aboneliği, kaynak grubunu, kaynak grubu konumunu, Key Vault adını, Nesne Kimliğini, yasal koşulları ve sözleşmeyi ve ardından Satın Al'ı seçin.

Microsoft Entra uygulaması ve hizmet sorumlusu ayarlama

Azure'da çalışan bir VM'de şifrelemenin etkinleştirilmesi gerektiğinde Azure Disk Şifrelemesi şifreleme anahtarlarını oluşturur ve anahtar kasanıza yazar. Anahtar kasanızdaki şifreleme anahtarlarını yönetmek için Microsoft Entra kimlik doğrulaması gerekir. Bu amaçla bir Microsoft Entra uygulaması oluşturun. Kimlik doğrulaması amacıyla, gizli dizi tabanlı istemci kimlik doğrulamasını veya istemci sertifikası tabanlı Microsoft Entra kimlik doğrulamasını kullanabilirsiniz.

Azure PowerShell ile Microsoft Entra uygulaması ve hizmet sorumlusu ayarlama

Aşağıdaki komutları yürütmek için Azure PowerShell modülünü alın ve kullanın.

  1. Bir Microsoft Entra uygulaması oluşturmak için New-AzADApplication PowerShell cmdlet'ini kullanın. MyApplicationHomePage ve MyApplicationUri istediğiniz herhangi bir değer olabilir.

    $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
    
  2. $azureAdApplication.ApplicationId, Microsoft Entra ClientID'dir ve $aadClientSecret daha sonra Azure Disk Şifrelemesi etkinleştirmek için kullanacağınız istemci gizli dizisidir. Kasa Microsoft Entra istemci gizli dizisini uygun şekilde koruma. Komutunu çalıştırdığınızda $azureAdApplication.ApplicationId ApplicationID gösterilir.

Azure CLI ile Microsoft Entra uygulaması ve hizmet sorumlusu ayarlama

Az ad sp komutlarını kullanarak Azure CLI ile hizmet sorumlularınızı yönetebilirsiniz. Daha fazla bilgi için bkz . Azure hizmet sorumlusu oluşturma.

  1. Yeni bir hizmet sorumlusu oluşturun.

    az ad sp create-for-rbac --name "ServicePrincipalName" --password "My-AAD-client-secret" --role Contributor --scopes /subscriptions/<subscription_id>
    
  2. Döndürülen appId, diğer komutlarda kullanılan Microsoft Entra ClientID'dir. Ayrıca az keyvault set-policy için kullanacağınız SPN'dir. Parola, daha sonra Azure Disk Şifrelemesi etkinleştirmek için kullanmanız gereken istemci gizli dizisidir. Kasa Microsoft Entra istemci gizli dizisini uygun şekilde koruma.

Azure portalı aracılığıyla bir Microsoft Entra uygulaması ve hizmet sorumlusu ayarlama

Microsoft Entra uygulaması oluşturmak için kaynaklara erişebilen bir Microsoft Entra uygulaması ve hizmet sorumlusu oluşturmak için portalı kullanma makalesindeki adımları kullanın. Bu adımların her biri, tamamlamanız için sizi doğrudan makale bölümüne götürür.

  1. Gerekli izinleri doğrulama
  2. Microsoft Entra uygulaması oluşturma
    • Uygulamayı oluştururken istediğiniz ad ve oturum açma URL'sini kullanabilirsiniz.
  3. Uygulama kimliğini ve kimlik doğrulama anahtarını alın.
    • Kimlik doğrulama anahtarı istemci gizli anahtarıdır ve Set-AzVMDiskEncryptionExtension için AadClientSecret olarak kullanılır.
      • Kimlik doğrulama anahtarı, uygulama tarafından Microsoft Entra Kimliği'nde oturum açmak için kimlik bilgisi olarak kullanılır. Azure portalında bu gizli dizi anahtar olarak adlandırılır ancak anahtar kasalarıyla hiçbir ilişkisi yoktur. Bu gizli diziyi uygun şekilde koruyun.
    • Uygulama kimliği daha sonra Set-AzVMDiskEncryptionExtension için AadClientId olarak ve Set-AzKeyVaultAccessPolicy için ServicePrincipalName olarak kullanılacaktır.

Microsoft Entra uygulaması için anahtar kasası erişim ilkesini ayarlama

Şifreleme gizli dizilerini belirtilen bir Key Vault'a yazmak için Azure Disk Şifrelemesi, Key Vault'a gizli dizi yazma izinlerine sahip Microsoft Entra uygulamasının İstemci Kimliği ve İstemci Gizli Anahtarı gerekir.

Not

Azure Disk Şifrelemesi, Microsoft Entra istemci uygulamanıza aşağıdaki erişim ilkelerini yapılandırmanızı gerektirir: WrapKey ve Set izinleri.

Azure PowerShell ile Microsoft Entra uygulaması için anahtar kasası erişim ilkesini ayarlama

Microsoft Entra uygulamanızın kasadaki anahtarlara veya gizli dizilere erişme haklarına sahip olması gerekir. –ServicePrincipalName parametre değeri olarak istemci kimliğini (uygulama kaydedildiğinde oluşturulan) kullanarak uygulamaya izin vermek için Set-AzKeyVaultAccessPolicy cmdlet'ini kullanın. Daha fazla bilgi edinmek için Azure Key Vault - Adım Adım blog gönderisine bakın.

  1. PowerShell ile AD uygulaması için anahtar kasası erişim ilkesini ayarlayın.

    $keyVaultName = 'MySecureVault'
    $aadClientID = 'MyAadAppClientID'
    $KVRGname = 'MyKeyVaultResourceGroup'
    Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadClientID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName $KVRGname
    

Azure CLI ile Microsoft Entra uygulaması için anahtar kasası erişim ilkesini ayarlama

Erişim ilkesini ayarlamak için az keyvault set-policy kullanın. Daha fazla bilgi için bkz . CLI 2.0 kullanarak Key Vault'ı yönetme.

Aşağıdaki komutla gizli dizileri almak ve anahtarları sarmalamak için Azure CLI aracılığıyla oluşturduğunuz hizmet sorumlusuna erişim verin:

az keyvault set-policy --name "MySecureVault" --spn "<spn created with CLI/the Azure AD ClientID>" --key-permissions wrapKey --secret-permissions set

Portal ile Microsoft Entra uygulaması için anahtar kasası erişim ilkesini ayarlama

  1. Anahtar kasanızla kaynak grubunu açın.
  2. Anahtar kasanızı seçin, Erişim İlkeleri'ne gidin ve yeni ekle'yi seçin.
  3. Sorumlu seç'in altında, oluşturduğunuz Microsoft Entra uygulamasını arayın ve seçin.
  4. Anahtar izinleri için Şifreleme İşlemleri'nin altında Anahtarı Sarmala'yı işaretleyin.
  5. Gizli dizi izinleri için Gizli Dizi Yönetimi İşlemleri altında Ayarla'yıişaretleyin.
  6. Erişim ilkesini kaydetmek için Tamam'ı seçin.

Azure Key Vault cryptographic operations - Wrap Key

Azure Key Vault Secret permissions - Set

Anahtar kasası gelişmiş erişim ilkelerini ayarlama

Azure platformunun, birimlerin önyüklenmesi ve şifresinin çözülmesi için sanal makinede kullanılabilir hale getirmek için anahtar kasanızdaki şifreleme anahtarlarına veya gizli dizilere erişmesi gerekir. Anahtar kasasında disk şifrelemesini etkinleştirme veya dağıtımlar başarısız olur.

Azure PowerShell ile anahtar kasası gelişmiş erişim ilkeleri ayarlama

Anahtar kasası için disk şifrelemesini etkinleştirmek için Set-AzKeyVaultAccessPolicy anahtar kasası PowerShell cmdlet'ini kullanın.

  • Anahtar Kasası'nı disk şifrelemesi için etkinleştirme: Azure Disk şifrelemesi için EnabledForDiskEncryption gereklidir.

    Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDiskEncryption
    
  • Gerekirse Key Vault'u dağıtım için etkinleştirin: Microsoft'u etkinleştirir. Bu anahtar kasasına kaynak oluşturma sırasında başvurulduğunda , örneğin bir sanal makine oluştururken bu anahtar kasasından gizli dizileri almak için işlem kaynağı sağlayıcısı.

     Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDeployment
    
  • Gerekirse Anahtar Kasası'nı şablon dağıtımı için etkinleştirin: Azure Resource Manager'ın bu anahtar kasasına bir şablon dağıtımında başvurulduğunda bu anahtar kasasından gizli diziler almasını sağlar.

    Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForTemplateDeployment
    

Azure CLI kullanarak anahtar kasası gelişmiş erişim ilkelerini ayarlama

Az keyvault update komutunu kullanarak anahtar kasası için disk şifrelemesini etkinleştirin.

  • Disk şifrelemesi için Key Vault'un etkinleştirilmesi: Disk için etkin şifreleme gereklidir.

    az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-disk-encryption "true"
    
  • Gerekirse Key Vault'un dağıtım için etkinleştirilmesi: Sanal Makineler kasadan gizli dizi olarak depolanan sertifikaları almasına izin verin.

    az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-deployment "true"
    
  • Gerekirse şablon dağıtımı için Key Vault'un etkinleştirilmesi: Resource Manager'ın kasadan gizli dizileri almasına izin verin.

    az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-template-deployment "true"
    

Azure portalı aracılığıyla anahtar kasası gelişmiş erişim ilkeleri ayarlama

  1. Keyvault'unuzu seçin, Erişim İlkeleri'ne gidin ve Gelişmiş erişim ilkelerini göstermek için tıklayın.
  2. Birim şifrelemesi için Azure Disk Şifrelemesi erişimi etkinleştir etiketli kutuyu seçin.
  3. Dağıtım için Azure Sanal Makineler erişimini etkinleştir'i ve/veya gerekirse şablon dağıtımı için Azure Resource Manager'a Erişimi Etkinleştir'i seçin.
  4. Kaydet'i seçin.

Azure key vault advanced access policies

Anahtar şifreleme anahtarı ayarlama (isteğe bağlı)

Şifreleme anahtarları için ek bir güvenlik katmanı için anahtar şifreleme anahtarı (KEK) kullanmak istiyorsanız anahtar kasanıza bir KEK ekleyin. Anahtar kasasında anahtar şifreleme anahtarı oluşturmak için Add-AzKeyVaultKey cmdlet'ini kullanın. Ayrıca, şirket içi anahtar yönetimi HSM'nizden bir KEK içeri aktarabilirsiniz. Daha fazla bilgi için bkz . Key Vault Belgeleri. Anahtar şifreleme anahtarı belirtildiğinde, Azure Disk Şifrelemesi Key Vault'a yazmadan önce şifreleme gizli dizilerini sarmak için bu anahtarı kullanır.

Azure PowerShell ile anahtar şifreleme anahtarı ayarlama

PowerShell betiğini kullanmadan önce betikteki adımları anlamak için Azure Disk Şifrelemesi önkoşulları hakkında bilgi sahibi olmanız gerekir. Örnek betikte ortamınız için değişiklikler gerekebilir. Bu betik tüm Azure Disk Şifrelemesi önkoşullarını oluşturur ve mevcut bir IaaS VM'sini şifreler ve anahtar şifreleme anahtarı kullanarak disk şifreleme anahtarını sarmalar.

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

Sertifika tabanlı kimlik doğrulaması (isteğe bağlı)

Sertifika kimlik doğrulamasını kullanmak isterseniz, anahtar kasanıza bir tane yükleyebilir ve istemciye dağıtabilirsiniz. PowerShell betiğini kullanmadan önce betikteki adımları anlamak için Azure Disk Şifrelemesi önkoşulları hakkında bilgi sahibi olmanız gerekir. Örnek betikte ortamınız için değişiklikler gerekebilir.


# 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

Sertifika tabanlı kimlik doğrulaması ve KEK (isteğe bağlı)

Sertifika kimlik doğrulaması kullanmak ve şifreleme anahtarını bir KEK ile sarmak isterseniz, örnek olarak aşağıdaki betiği kullanabilirsiniz. PowerShell betiğini kullanmadan önce, betikteki adımları anlamak için önceki Azure Disk Şifrelemesi önkoşullarının tümünü biliyor olmanız gerekir. Örnek betikte ortamınız için değişiklikler gerekebilir.

# 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

Sonraki adımlar

Windows VM'lerinde Microsoft Entra ID ile Azure Disk Şifrelemesi etkinleştirme (önceki sürüm)