Key Vault virtuellt datortillägg för Windows

Tillägget Key Vault virtuell dator tillhandahåller automatisk uppdatering av certifikat som lagras i ett Azure-nyckelvalv. Mer specifikt övervakar tillägget en lista över observerade certifikat som lagras i nyckelvalv och hämtar och installerar motsvarande certifikat när en ändring identifieras. Det här dokumentet beskriver de plattformar, konfigurationer och distributionsalternativ som stöds för Key Vault VM-tillägget för Windows.

Operativsystem

Det Key Vault VM-tillägget stöder nedanstående versioner av Windows:

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

Tillägget Key Vault virtuell dator stöds också på anpassade lokala virtuella datorer som laddas upp och konverteras till en specialiserad avbildning för användning i Azure med Windows Server 2019 Core-installation.

Certifikatinnehållstyper som stöds

  • PKCS #12
  • PEM

Förutsättningar

"identity": {
  "type": "UserAssigned",
  "userAssignedIdentities": {
    "[parameters('userAssignedIdentityResourceId')]": {}
  }
}
  • AKV-tillägget bör ha den här inställningen:
"authenticationSettings": {
  "msiEndpoint": "[parameters('userAssignedIdentityEndpoint')]",
  "msiClientId": "[reference(parameters('userAssignedIdentityResourceId'), variables('msiApiVersion')).clientId]"
}

Tilläggsschema

Följande JSON visar schemat för Key Vault VM-tillägget. Tillägget kräver inte skyddade inställningar – alla dess inställningar betraktas som offentlig information. Tillägget kräver en lista över övervakade certifikat, avsökningsfrekvens och målcertifikatarkiv. Specifikt:

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

Anteckning

Dina observerade certifikat-URL:er ska ha formen https://myVaultName.vault.azure.net/secrets/myCertName .

Det beror på att /secrets sökvägen returnerar det fullständiga certifikatet, inklusive den privata nyckeln, medan /certificates sökvägen inte gör det. Mer information om certifikat finns här: Key Vault certifikat

Viktigt

Egenskapen "authenticationSettings" krävs endast för virtuella datorer med användarautentiseringsidentiteter. Den anger identitet som ska användas för autentisering för att Key Vault.

Viktigt

Om du anger "msiClientId" krävs egenskapen "msiEndpoint". Vanligtvis ska värdet anges till http://169.254.169.254/metadata/identity/oauth2/token .

Egenskapsvärden

Name Värde/exempel Datatyp
apiVersion 2019-07-01 date
utgivare Microsoft.Azure.KeyVault sträng
typ KeyVaultForWindows sträng
typeHandlerVersion 1.0 int
pollingIntervalInS 3600 sträng
certificateStoreName MY sträng
linkOnRenewal falskt boolean
certificateStoreLocation LocalMachine eller CurrentUser (ärendekänsligt) sträng
requireInitialSync true boolean
observedCertificates ["https://myvault.vault.azure.net/secrets/mycertificate", "https://myvault.vault.azure.net/secrets/mycertificate2"] strängmatris
msiEndpoint http://169.254.169.254/metadata/identity sträng
msiClientId c7373ae5-91c2-4165-8ab6-7381d6e75619 sträng

Malldistribution

Azure VM-tillägg kan distribueras med Azure Resource Manager mallar. Mallar är idealiska när du distribuerar en eller flera virtuella datorer som kräver uppdatering av certifikat efter distributionen. Tillägget kan distribueras till enskilda virtuella datorer eller VM-skalningsuppsättningar. Schemat och konfigurationen är gemensamma för båda malltyperna.

JSON-konfigurationen för ett tillägg för en virtuell dator måste kapslas inuti mallens resursfragment för virtuella datorer, särskilt objektet för mallen för virtuella datorer och vid VM-skalningsuppsättning "resources": [] under "virtualMachineProfile":"extensionProfile":{"extensions" :[] -objektet.

Anteckning

VM-tillägget kräver att system- eller användar hanterad identitet tilldelas för att autentisera till Key Vault. Se Autentisera för att Key Vault och tilldela en Key Vault åtkomstprincip.

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

Beroendeordning för tillägg

Tillägget Key Vault stöder tilläggsordning om det har konfigurerats. Som standard rapporterar tillägget att det har startats så snart avsökning har påbörjats. Den kan dock konfigureras att vänta tills den har hämtat den fullständiga listan över certifikat innan en lyckad start har rapporterats. Om andra tillägg är beroende av att den fullständiga uppsättningen certifikat installeras innan de startas kan tillägget deklarera ett beroende på det Key Vault tillägget om du aktiverar den här inställningen. Detta förhindrar att dessa tillägg startar förrän alla certifikat som de är beroende av har installerats. Tillägget gör ett nytt försök att ladda ned på obestämd tid och förblir i ett Transitioning tillstånd.

Om du vill aktivera detta anger du följande:

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

Anteckning

Den här funktionen är inte kompatibel med en ARM-mall som skapar en system tilldelad identitet och uppdaterar en Key Vault åtkomstprincip med den identiteten. Om du gör det resulterar det i ett dödläge eftersom valvåtkomstprincipen inte kan uppdateras förrän alla tillägg har startats. Du bör i stället använda en enda användar tilldelad MSI-identitet och en för-ACL för dina valv med den identiteten innan du distribuerar.

Azure PowerShell distribution

Varning

PowerShell-klienter lägger ofta till i \ " settings.json, vilket gör att akvvm_service misslyckas med felet Extra tecken och visas i portalen [CertificateManagementConfiguration] Failed to parse the configuration settings with:not an object. i Tillägg \ under " Inställningar. För att undvika detta initierar $settings du som ett HashTable PowerShell:

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

Den Azure PowerShell kan användas för att distribuera Key Vault VM-tillägg till en befintlig virtuell dator eller VM-skalningsuppsättning.

  • Så här distribuerar du tillägget på en virtuell dator:

        # 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
    
    
  • Så här distribuerar du tillägget på en VM-skalningsuppsättning:

    
        # 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 CLI-distribution

Azure CLI kan användas för att distribuera Key Vault vm-tillägg till en befintlig virtuell dator eller VM-skalningsuppsättning.

  • Så här distribuerar du tillägget på en virtuell dator:

       # 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> \"] }}'
    
  • Så här distribuerar du tillägget på en VM-skalningsuppsättning:

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

Tänk på följande begränsningar/krav:

  • Key Vault begränsningar:

Felsökning och support

Vanliga frågor och svar

  • Finns det en gräns för hur många observeradecertificates som du kan konfigurera? Nej, Key Vault vm-tillägget har ingen gräns för antalet observeradecertificates.

Felsöka

Data om tillståndet för tilläggsdistributioner kan hämtas från Azure Portal och med hjälp av Azure PowerShell. Om du vill se distributionstillståndet för tillägg för en viss virtuell dator kör du följande kommando med hjälp av 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"

Loggar och konfiguration

De Key Vault vm-tilläggsloggarna finns bara lokalt på den virtuella datorn och är mest informativa när det gäller felsökning

Location Beskrivning
C:\WindowsAzure\Logs\WaAppAgent.log Visar när en uppdatering av tillägget inträffade.
C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.KeyVault.KeyVaultForWindows<most recent version>\ Visar status för nedladdning av certifikat. Nedladdningsplatsen kommer alltid att vara Windows datorns MY store (certlm.msc).
C:\Packages\Plugins\Microsoft.Azure.KeyVault.KeyVaultForWindows <most recent version> \RuntimeSettings\ Tjänstloggarna Key Vault vm-tillägg visar status för den akvvm_service tjänsten.
C:\Packages\Plugins\Microsoft.Azure.KeyVault.KeyVaultForWindows <most recent version> \Status\ Konfiguration och binärfiler för Key Vault VM Extension-tjänsten.

Support

Om du behöver mer hjälp när som helst i den här artikeln kan du kontakta Azure-experter på MSDN Azureoch Stack Overflow forumen . Du kan också skapa en Azure-supportincident. Gå till Azure-supportwebbplatsen och välj Få support. Information om hur du använder Azure Support finns i vanliga Microsoft Azure vanliga frågor och svar om support.