Key Vault virtuálního počítače pro Windows

Rozšíření Key Vault virtuálního počítače poskytuje automatickou aktualizaci certifikátů uložených v trezoru klíčů Azure. Rozšíření konkrétně monitoruje seznam zjištěných certifikátů uložených v trezorech klíčů a při zjištění změny načte a nainstaluje odpovídající certifikáty. Tento dokument podrobně obsahuje informace o podporovaných platformách, konfiguracích a možnostech nasazení Key Vault virtuálního počítače pro Windows.

Operační systém

Rozšíření Key Vault virtuálního počítače podporuje následující verze Windows:

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

Rozšíření Key Vault virtuálního počítače se také podporuje na vlastním místním virtuálním počítači, který se nahrává a převádí na specializovanou image pro použití v Azure s využitím instalace jádra Windows Serveru 2019.

Podporované typy obsahu certifikátů

  • PKCS č. 12
  • PEM

Požadavky

"identity": {
  "type": "UserAssigned",
  "userAssignedIdentities": {
    "[parameters('userAssignedIdentityResourceId')]": {}
  }
}
  • Rozšíření AKV by mělo mít toto nastavení:
"authenticationSettings": {
  "msiEndpoint": "[parameters('userAssignedIdentityEndpoint')]",
  "msiClientId": "[reference(parameters('userAssignedIdentityResourceId'), variables('msiApiVersion')).clientId]"
}

Schéma rozšíření

Následující kód JSON ukazuje schéma pro rozšíření Key Vault virtuálního počítače. Rozšíření nevyžaduje chráněná nastavení – všechna jeho nastavení se považují za veřejné informace. Rozšíření vyžaduje seznam monitorovaných certifikátů, četnost dotazování a cílové úložiště certifikátů. Konkrétně se jedná o tyto:

    {
      "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">
        }
       }
      }
    }

Poznámka

Zjištěné adresy URL certifikátů by měly mít tvar https://myVaultName.vault.azure.net/secrets/myCertName .

Je to /secrets proto, že cesta vrací úplný certifikát, včetně privátního klíče, zatímco cesta /certificates ne. Další informace o certifikátech najdete tady: Key Vault Certifikáty

Důležité

Vlastnost authenticationSettings se vyžaduje jenom pro virtuální počítače s identitami přiřazenými uživatelem. Určuje identitu, která se má použít pro ověřování Key Vault.

Důležité

Pokud zadáte msiClientId, vyžaduje se vlastnost msiEndpoint . Obvykle by měla být hodnota nastavená na http://169.254.169.254/metadata/identity/oauth2/token .

Hodnoty vlastností

Name Hodnota / příklad Typ dat
apiVersion 2019-07-01 date
vydavatel Microsoft.Azure.KeyVault řetězec
typ KeyVaultForWindows řetězec
typeHandlerVersion 1.0 int
pollingIntervalInS 3600 řetězec
certificateStoreName MY řetězec
linkOnRenewal false (nepravda) boolean
certificateStoreLocation LocalMachine nebo CurrentUser (rozlišuje malá a velká písmena) řetězec
requireInitialSync true boolean
observedCertificates ["https://myvault.vault.azure.net/secrets/mycertificate", "https://myvault.vault.azure.net/secrets/mycertificate2"] pole řetězců
msiEndpoint http://169.254.169.254/metadata/identity řetězec
MSIClientId c7373ae5-91c2-4165-8ab6-7381d6e75619 řetězec

Nasazení šablon

Rozšíření virtuálních počítače Azure je možné nasadit pomocí Azure Resource Manager šablon. Šablony jsou ideální při nasazování jednoho nebo více virtuálních počítačů, které vyžadují aktualizaci certifikátů po nasazení. Toto rozšíření je možné nasadit na jednotlivé virtuální počítače nebo škálovací sady virtuálních počítačů. Schéma a konfigurace jsou společné pro oba typy šablon.

Konfigurace JSON pro rozšíření virtuálního počítače musí být vnořená do fragmentu prostředku virtuálního počítače šablony, konkrétně objektu pro šablonu virtuálního počítače a v případě škálovací sady virtuálních "resources": [] počítačů v rámci objektu "virtualMachineProfile":"extensionProfile":{"extensions" :[] .

Poznámka

Rozšíření virtuálního počítače by vyžadovalo přiřazení spravované identity systému nebo uživatele k ověření ve službě Key Vault. Viz Postup ověření pro Key Vault a přiřazení Key Vault přístupu.

    {
      "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"]>
        }      
      }
      }
    }

Řazení závislostí rozšíření

Rozšíření Key Vault podporuje řazení rozšíření, pokud je nakonfigurované. Ve výchozím nastavení rozšíření hlásí, že se úspěšně zahájilo ihned po zahájení dotazování. Můžete ho ale nakonfigurovat tak, aby před oznámením úspěšného spuštění počkal na úspěšné stažení kompletního seznamu certifikátů. Pokud ostatní rozšíření závisí na instalaci úplné sady certifikátů před jejich zahájením, povolení tohoto nastavení umožní deklarovat závislost na rozšíření Key Vault rozšíření. Zabráníte tak spuštění těchto rozšíření, dokud nebudou nainstalovány všechny certifikáty, na které jsou závislé. Rozšíření bude pokus o počáteční stažení opakovat po neomezenou dobu a zůstane ve Transitioning stavu .

Pokud chcete toto nastavení zapnout, nastavte následující:

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

Poznámka

Použití této funkce není kompatibilní se šablonou ARM, která vytvoří identitu přiřazenou systémem a aktualizuje Key Vault přístupu s touto identitou. Výsledkem bude zablokování, protože zásady přístupu k trezoru není možné aktualizovat, dokud se nezačala všechna rozšíření. Místo toho byste měli před nasazením použít jednu identitu MSI přiřazenou uživatelem a před seznamem ACL trezory s tuto identitou.

Azure PowerShell nasazení

Upozornění

Klienti PowerShellu často přidávají do souboru \ " settings.json, což způsobuje selhání akvvm_service s chybou. Další znaky a se zobrazí na portálu v rozšíření pod Nastavení [CertificateManagementConfiguration] Failed to parse the configuration settings with:not an object. \ " . Pokud se tomu chcete vyhnout, $settings inicializujte jako HashTable PowerShell:

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

Pomocí Azure PowerShell můžete nasadit rozšíření virtuálního Key Vault virtuálního počítače do existujícího virtuálního počítače nebo škálovací sady virtuálních počítačů.

  • Nasazení rozšíření na virtuální počítač:

        # 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
    
    
  • Nasazení rozšíření do škálovací sady virtuálních počítačů:

    
        # 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 
    
    

Nasazení Azure CLI

Azure CLI můžete použít k nasazení rozšíření virtuálního Key Vault virtuálního počítače do existujícího virtuálního počítače nebo škálovací sady virtuálních počítačů.

  • Nasazení rozšíření na virtuální počítač:

       # 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> \"] }}'
    
  • Nasazení rozšíření do sady škálování virtuálních počítačů:

          # 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> \"] }}'
    

Mějte na paměti následující omezení/požadavky:

Řešení potíží a podpora

Nejčastější dotazy

  • Existuje omezení počtu observedCertificates, která můžete nastavit? Ne, Key Vault rozšíření virtuálního počítače nemá omezení počtu observedCertificates.

Řešení potíží

Data o stavu nasazení rozšíření lze načíst z Azure Portal a pomocí Azure PowerShell. Pokud chcete zobrazit stav nasazení rozšíření pro daný virtuální počítač, spusťte následující příkaz pomocí 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"

Protokoly a konfigurace

Protokoly rozšíření Key Vault VM existují pouze lokálně na virtuálním počítači a jsou při řešení potíží velmi informativní.

Umístění Popis
C:\WindowsAzure\Logs\WaAppAgent.log Ukazuje, kdy došlo k aktualizaci rozšíření.
C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.KeyVault.KeyVaultForWindows<most recent version>\ Zobrazuje stav stahování certifikátu. umístění pro stahování bude vždycky Windows moje úložiště (certlm. msc) počítače.
C:\Packages\Plugins\Microsoft.Azure.KeyVault.KeyVaultForWindows <most recent version> \RuntimeSettings\ Protokol služby rozšíření virtuálních počítačů Key Vault zobrazuje stav služby akvvm_service.
C:\Packages\Plugins\Microsoft.Azure.KeyVault.KeyVaultForWindows <most recent version> \Status\ Konfigurace a binární soubory pro službu rozšíření virtuálního počítače Key Vault.

Podpora

Pokud potřebujete další podrobnější informace v jakémkoli bodě tohoto článku, můžete kontaktovat odborníky na Azure na webu MSDN Azure a Stack Overflow fóra. Případně můžete zasouborovat incident podpory Azure. Přejít na web podpory Azure a vyberte získat podporu. informace o použití podpory Azure najdete v tématu nejčastější dotazy k podpoře pro Microsoft Azure.