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
- Key Vault instans med certifikat. Se Skapa en Key Vault
- Den virtuella datorn måste ha tilldelats en hanterad identitet
- Principen Key Vault åtkomst måste anges med hemligheter och behörighet för
getlistVM/VMSS-hanterad identitet för att hämta en hemlighets del av certifikatet. Se Autentisera för att Key Vault och Tilldela en Key Vault åtkomstprincip. - Virtual Machine Scale Sets bör ha följande identitetsinställning:
"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 $settingsSå 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:
- Den måste finnas vid tidpunkten för distributionen
- Principen Key Vault måste anges för VM/VMSS-identitet med hjälp av en hanterad identitet. Se Autentisera för att Key Vault och Tilldela en Key Vault åtkomstprincip.
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.