Windows için Key Vault sanal makine uzantısı

Key Vault VM uzantısı, Azure Anahtar Kasası 'nda depolanan sertifikaların otomatik olarak yenilenmesini sağlar. Özellikle uzantı, anahtar kasalarında depolanan gözlemlenen sertifikaların listesini izler ve bir değişikliği tespit etmek için ilgili sertifikaları alır ve kurar. Bu belgede Windows için Key Vault VM uzantısı için desteklenen platformlar, konfigürasyonlar ve dağıtım seçenekleri ayrıntılı olarak bulunmaktadır.

İşletim sistemi

Key Vault VM uzantısı Windows sürümlerini destekler:

  • Windows Server 2019
  • Windows Server 2016
  • Windows Server 2012

Key Vault VM uzantısı, yüklenen ve Azure 'da Windows Server 2019 core yüklemesi kullanılarak kullanılmak üzere özelleştirilmiş bir görüntüye dönüştürülen özel yerel VM 'de de desteklenir.

Desteklenen sertifika içerik türleri

  • PKCS #12
  • PEM

Önkoşullar

"identity": {
  "type": "UserAssigned",
  "userAssignedIdentities": {
    "[parameters('userAssignedIdentityResourceId')]": {}
  }
}
  • AKV uzantısında Bu ayar olmalıdır:
"authenticationSettings": {
  "msiEndpoint": "[parameters('userAssignedIdentityEndpoint')]",
  "msiClientId": "[reference(parameters('userAssignedIdentityResourceId'), variables('msiApiVersion')).clientId]"
}

Uzantı şeması

Aşağıdaki JSON Key Vault VM uzantısının şemasını gösterir. Uzantı, korumalı ayarlar gerektirmez. tüm ayarları ortak bilgiler olarak kabul edilir. Uzantı, izlenen sertifikaların, yoklama sıklığının ve hedef sertifika deposunun bir listesini gerektirir. Özellikle:

    {
      "type": "Microsoft.Compute/virtualMachines/extensions",
      "name": "KVVMExtensionForWindows",
      "apiVersion": "2019-07-01",
      "location": "<location>",
      "dependsOn": [
          "[concat('Microsoft.Compute/virtualMachines/', <vmName>)]"
      ],
      "properties": {
      "publisher": "Microsoft.Azure.KeyVault",
      "type": "KeyVaultForWindows",
      "typeHandlerVersion": "1.0",
      "autoUpgradeMinorVersion": true,
      "settings": {
        "secretsManagementSettings": {
          "pollingIntervalInS": <string specifying polling interval in seconds, e.g: "3600">,
          "certificateStoreName": <certificate store name, e.g.: "MY">,
          "linkOnRenewal": <Only Windows. This feature ensures s-channel binding when certificate renews, without necessitating a re-deployment.  e.g.: false>,
          "certificateStoreLocation": <certificate store location, currently it works locally only e.g.: "LocalMachine">,
          "requireInitialSync": <initial synchronization of certificates e..g: true>,
          "observedCertificates": <list of KeyVault URIs representing monitored certificates, e.g.: "https://myvault.vault.azure.net/secrets/mycertificate"
        },
        "authenticationSettings": {
                "msiEndpoint":  <Optional MSI endpoint e.g.: "http://169.254.169.254/metadata/identity">,
                "msiClientId":  <Optional MSI identity e.g.: "c7373ae5-91c2-4165-8ab6-7381d6e75619">
        }
       }
      }
    }

Not

Gözlemlenen sertifikalarınızın URL 'Leri form olmalıdır https://myVaultName.vault.azure.net/secrets/myCertName .

Bunun nedeni, /secrets yol değil, özel anahtar dahil olmak üzere tam sertifikayı döndürmektedir /certificates . Sertifikalar hakkında daha fazla bilgi için şurada bulunabilir: Key Vault sertifikaları

Önemli

' AuthenticationSettings ' özelliği yalnızca Kullanıcı tarafından atanan kimlikleri olan VM 'ler için gereklidir . Key Vault kimlik doğrulaması için kullanılacak kimliği belirtir.

Önemli

' MsiClientId ' belirtirseniz, ' msiEndpoint ' özelliği gereklidir. Genellikle değer olarak ayarlanmalıdır http://169.254.169.254/metadata/identity/oauth2/token .

Özellik değerleri

Name Değer/örnek Veri Türü
apiVersion 2019-07-01 date
yayımcı Microsoft.Azure.KeyVault string
tür KeyVaultForWindows string
typeHandlerVersion 1.0 int
Pollingınterinterval bileşenleri 3600 string
certificateStoreName MY string
Linkonyenilemeye yanlış boolean
certificateStoreLocation LocalMachine veya CurrentUser (büyük/küçük harfe duyarlı) string
Requireınitialsync true boolean
observedCertificates ["https://myvault.vault.azure.net/secrets/mycertificate", "https://myvault.vault.azure.net/secrets/mycertificate2"] dize dizisi
Msıendpoint http://169.254.169.254/metadata/identity string
msiClientId c7373ae5-91c2-4165-8ab6-7381d6e75619 string

Şablon dağıtımı

Azure VM uzantıları, Azure Resource Manager şablonlarıyla dağıtılabilir. Sertifikaların dağıtım sonrası yenilenmesini gerektiren bir veya daha fazla sanal makine dağıtıldığında şablonlar idealdir. Uzantı ayrı VM 'lere veya sanal makine ölçek kümelerine dağıtılabilir. Şema ve yapılandırma her iki şablon türü için ortaktır.

Bir sanal makine uzantısının JSON yapılandırması, şablonun sanal makine kaynak parçasının içinde, özellikle de "resources": [] sanal makine şablonu için nesne ve nesne altında sanal makine ölçek kümesi olması halinde iç içe olmalıdır "virtualMachineProfile":"extensionProfile":{"extensions" :[] .

Not

VM uzantısı, Anahtar Kasası kimlik doğrulaması için sistem veya Kullanıcı tarafından yönetilen kimliğin atanmasını gerektirir. Key Vault için kimlik doğrulama ve Key Vault erişim ilkesi atama konusuna bakın.

    {
      "type": "Microsoft.Compute/virtualMachines/extensions",
      "name": "KeyVaultForWindows",
      "apiVersion": "2019-07-01",
      "location": "<location>",
      "dependsOn": [
          "[concat('Microsoft.Compute/virtualMachines/', <vmName>)]"
      ],
      "properties": {
      "publisher": "Microsoft.Azure.KeyVault",
      "type": "KeyVaultForWindows",
      "typeHandlerVersion": "1.0",
      "autoUpgradeMinorVersion": true,
      "settings": {
        "secretsManagementSettings": {
          "pollingIntervalInS": <string specifying polling interval in seconds, e.g: "3600">,
          "certificateStoreName": <certificate store name, e.g.: "MY">,
          "certificateStoreLocation": <certificate store location, currently it works locally only e.g.: "LocalMachine">,
          "observedCertificates": <list of KeyVault URIs representing monitored certificates, e.g.: ["https://myvault.vault.azure.net/secrets/mycertificate", "https://myvault.vault.azure.net/secrets/mycertificate2"]>
        }      
      }
      }
    }

Uzantı bağımlılığı sıralaması

Key Vault VM Uzantısı yapılandırıldıysa uzantı sıralamasını destekler. Varsayılan olarak, uzantı yoklamaya başladığı anda başarıyla başlatıldığını bildirir. Ancak, başarılı bir başlangıç raporlanmadan önce sertifikaların tüm listesini başarıyla indirene kadar bekleyecek şekilde yapılandırılabilir. Diğer uzantılar, başlamadan önce tam sertifika kümesine sahip olmaya bağımlıysa, bu ayarın etkinleştirilmesi, bu uzantının Key Vault uzantısında bir bağımlılık tanımlamasına olanak tanır. Bu, bağımlı oldukları tüm sertifikaların yüklenene kadar bu uzantıların başlamasını engeller. Uzantı ilk indirmeyi süresiz olarak yeniden dener ve bir Transitioning durumda kalır.

Bunu açmak için aşağıdakileri ayarlayın:

"secretsManagementSettings": {
    "requireInitialSync": true,
    ...
}

Not

Bu özelliğin kullanılması, sistem tarafından atanan bir kimlik oluşturan ve bu kimlikle Key Vault erişim ilkesini güncelleştiren bir ARM şablonuyla uyumlu değildir. Bunun yapılması, tüm uzantılar başlatılana kadar kasa erişimi ilkesi güncelleştirilene kadar kilitlenmeyle sonuçlanır. Bunun yerine, dağıtımını yapmadan önce tek bir kullanıcı tarafından atanmış BIR MSI kimliği ve bu kimlikle kasalar IÇIN bir ACL ön eki kullanmanız gerekir.

Azure PowerShell dağıtımı

Uyarı

PowerShell istemcileri, genellikle \ " [CertificateManagementConfiguration] Failed to parse the configuration settings with:not an object. \ " , Ayarlar altındaki uzantılar bölümünde ek ve karakterler portalda görünür hale gelmesine akvvm_service neden olan settings. json ' a eklenir. Bunu önlemek için $settings PowerShell olarak başlatın HashTable :

$settings = @{
    "secretsManagementSettings" = @{ 
        "pollingIntervalInS"       = "<pollingInterval>"; 
        "certificateStoreName"     = "<certStoreName>"; 
        "certificateStoreLocation" = "<certStoreLoc>"; 
        "observedCertificates"     = @("<observedCert1>", "<observedCert2>") } }

Azure PowerShell, Key Vault VM uzantısını var olan bir sanal makineye veya sanal makine ölçek kümesine dağıtmak için kullanılabilir.

  • Uzantıyı bir sanal makineye dağıtmak için:

        # Build settings
        $settings = '{"secretsManagementSettings": 
        { "pollingIntervalInS": "' + <pollingInterval> + 
        '", "certificateStoreName": "' + <certStoreName> + 
        '", "certificateStoreLocation": "' + <certStoreLoc> + 
        '", "observedCertificates": ["' + <observedCert1> + '","' + <observedCert2> + '"] } }'
        $extName =  "KeyVaultForWindows"
        $extPublisher = "Microsoft.Azure.KeyVault"
        $extType = "KeyVaultForWindows"
    
    
        # Start the deployment
        Set-AzVmExtension -TypeHandlerVersion "1.0" -ResourceGroupName <ResourceGroupName> -Location <Location> -VMName <VMName> -Name $extName -Publisher $extPublisher -Type $extType -SettingString $settings
    
    
  • Uzantıyı bir sanal makine ölçek kümesine dağıtmak için:

    
        # Build settings
        $settings = '{"secretsManagementSettings": 
        { "pollingIntervalInS": "' + <pollingInterval> + 
        '", "certificateStoreName": "' + <certStoreName> + 
        '", "certificateStoreLocation": "' + <certStoreLoc> + 
        '", "observedCertificates": ["' + <observedCert1> + '","' + <observedCert2> + '"] } }'
        $extName = "KeyVaultForWindows"
        $extPublisher = "Microsoft.Azure.KeyVault"
        $extType = "KeyVaultForWindows"
    
        # Add Extension to VMSS
        $vmss = Get-AzVmss -ResourceGroupName <ResourceGroupName> -VMScaleSetName <VmssName>
        Add-AzVmssExtension -VirtualMachineScaleSet $vmss  -Name $extName -Publisher $extPublisher -Type $extType -TypeHandlerVersion "1.0" -Setting $settings
    
        # Start the deployment
        Update-AzVmss -ResourceGroupName <ResourceGroupName> -VMScaleSetName <VmssName> -VirtualMachineScaleSet $vmss 
    
    

Azure CLı dağıtımı

Azure CLı, Key Vault VM uzantısını var olan bir sanal makineye veya sanal makine ölçek kümesine dağıtmak için kullanılabilir.

  • Uzantıyı bir VM'ye dağıtmak için:

       # Start the deployment
         az vm extension set --name "KeyVaultForWindows" `
         --publisher Microsoft.Azure.KeyVault `
         --resource-group "<resourcegroup>" `
         --vm-name "<vmName>" `
         --settings '{\"secretsManagementSettings\": { \"pollingIntervalInS\": \"<pollingInterval>\", \"certificateStoreName\": \"<certStoreName>\", \"certificateStoreLocation\": \"<certStoreLoc>\", \"observedCertificates\": [\" <observedCert1> \", \" <observedCert2> \"] }}'
    
  • Uzantıyı bir sanal makine ölçek kümesine dağıtmak için:

          # Start the deployment
          az vmss extension set --name "KeyVaultForWindows" `
           --publisher Microsoft.Azure.KeyVault `
           --resource-group "<resourcegroup>" `
           --vmss-name "<vmName>" `
           --settings '{\"secretsManagementSettings\": { \"pollingIntervalInS\": \"<pollingInterval>\", \"certificateStoreName\": \"<certStoreName>\", \"certificateStoreLocation\": \"<certStoreLoc>\", \"observedCertificates\": [\" <observedCert1> \", \" <observedCert2> \"] }}'
    

Lütfen aşağıdaki kısıtlamalara/gereksinimlere dikkat edin:

Sorun giderme ve destek

Sık Sorulan Sorular

  • Ayarlandırabilirsiniz gözlemlenenSerificates sayısına bir sınır var mı? Hayır Key Vault VM Uzantısı'nın gözlemlenenCertificates sayısıyla ilgili bir sınırı yoktur.

Sorun giderme

Uzantı dağıtımlarının durumuyla ilgili veriler, Azure portal ve Azure PowerShell. Verilen bir VM için uzantıların dağıtım durumunu görmek için aşağıdaki komutu çalıştırarak aşağıdaki komutu Azure PowerShell.

Azure PowerShell

Get-AzVMExtension -VMName <vmName> -ResourceGroupname <resource group name>

Azure CLI

 az vm get-instance-view --resource-group <resource group name> --name  <vmName> --query "instanceView.extensions"

Günlükler ve yapılandırma

Vm Key Vault günlüklerinin yalnızca vm'de yerel olarak mevcut olması ve sorun giderme söz konusu olduğunda en bilgilendirici olmasıdır

Konum Açıklama
C:\WindowsAzure\Logs\WaAppAgent.log Uzantıda bir güncelleştirmenin ne zaman meydana geldiği gösterir.
C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.KeyVault.KeyVaultForWindows<most recent version>\ Sertifika indirme durumunu gösterir. İndirme konumu her zaman bilgisayarın my Windows (certlm.msc) olur.
C:\Packages\Plugins\Microsoft.Azure.KeyVault.KeyVaultForWindows <most recent version> \RuntimeSettings\ Sanal Key Vault uzantısı hizmet günlükleri, sanal makine akvvm_service gösterir.
C:\Packages\Plugins\Microsoft.Azure.KeyVault.KeyVaultForWindows <most recent version> \Status\ VM Uzantısı hizmeti için yapılandırma Key Vault ikili dosyaları.

Destek

Bu makalenin herhangi bir noktasında daha fazla yardıma ihtiyacınız olursa MSDN Azure'daki Azure uzmanlarıyla iletişim kurabilirsiniz ve Stack Overflow bulabilirsiniz. Alternatif olarak, bir olay Azure desteği. Azure desteği'a gidin ve Destek al'ı seçin. Bu bilgileri kullanma hakkında daha Azure Desteği için destek SSS Microsoft Azure bölümünü okuyun.