Key Vault tillägg för virtuella datorer för Linux
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. När du identifierar en ändring hämtar och installerar tillägget motsvarande certifikat. Tillägget Key Vault virtuell dator publiceras och stöds av Microsoft, för närvarande på virtuella Linux-datorer. Det här dokumentet beskriver de plattformar, konfigurationer och distributionsalternativ som stöds för Key Vault VM-tillägget för Linux.
Operativsystem
Tillägget Key Vault stöder följande Linux-distributioner:
- Ubuntu-1804
- Suse-15
- CBL-Havenr
Anteckning
För att få utökade säkerhetsfunktioner förbereder du uppgraderingen av Ubuntu-1604- och Debian-9-system när dessa versioner når slutet av den avsedda supportperioden.
Anteckning
Den Key Vault VM-tillägget laddar ned certifikaten på standardplatsen eller till den plats som tillhandahålls av egenskapen "certStoreLocation" i inställningarna för VM-tillägget. KeyValut VM-tillägget uppdaterar mappbehörigheten till 700 (drwx------) som tillåter läs-, skriv- och körningsbehörighet till endast ägaren av mappen
Certifikatinnehållstyper som stöds
- PKCS #12
- PEM
Förhandsförutseningar
Key Vault instans med certifikat. Se Skapa en Key Vault
VM/VMSS 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.VMSS 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]" }
Key Vault version av VM-tillägget
Ubuntu-18.04- och SUSE-15-användare kan välja att uppgradera sin version av nyckelvalvs-VM-tillägget till för att få tillgång till fullständig
V2.0nedladdningsfunktion för certifikatkedjan. Utfärdarcertifikat (mellanliggande och rot) läggs till i lövcertifikatet i PEM-filen.Om du föredrar att uppgradera
v2.0till måste du först ta bort och sedan installerav1.0v2.0.
az vm extension delete --name KeyVaultForLinux --resource-group ${resourceGroup} --vm-name ${vmName}
az vm extension set -n "KeyVaultForLinux" --publisher Microsoft.Azure.KeyVault --resource-group "${resourceGroup}" --vm-name "${vmName}" –settings .\akvvm.json –version 2.0
Flaggan --version 2.0 är valfri eftersom den senaste versionen installeras som standard.
- Om den virtuella datorn har certifikat som laddats ned av v1.0 tas inte de nedladdade certifikaten bort om du tar bort tillägget v1.0 AKVVM. När du har installerat v2.0 ändras inte de befintliga certifikaten. Du skulle behöva ta bort certifikatfilerna eller återställa certifikatet för att hämta PEM-filen med en fullständig kedja på den virtuella datorn.
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 information utan att säkerheten påverkas. Tillägget kräver en lista över övervakade hemligheter, avsökningsfrekvens och målcertifikatarkiv. Specifikt:
{
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "KVVMExtensionForLinux",
"apiVersion": "2019-07-01",
"location": "<location>",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', <vmName>)]"
],
"properties": {
"publisher": "Microsoft.Azure.KeyVault",
"type": "KeyVaultForLinux",
"typeHandlerVersion": "2.0",
"autoUpgradeMinorVersion": true,
"settings": {
"secretsManagementSettings": {
"pollingIntervalInS": <polling interval in seconds, e.g. "3600">,
"certificateStoreName": <It is ignored on Linux>,
"linkOnRenewal": <Not available on Linux e.g.: false>,
"certificateStoreLocation": <disk path where certificate is stored, default: "/var/lib/waagent/Microsoft.Azure.KeyVault">,
"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", "https://myvault.vault.azure.net/secrets/mycertificate2"]>
},
"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 för virtuella datorer med användarautentiseringsidentiteter. Ange msiClientId till den identitet som ska autentiseras för Key Vault.
Krävs även för Azure Arc-aktiverade virtuella datorer.
Ange msiEndpoint till http://localhost:40342/metadata/identity .
Egenskapsvärden
| Name | Värde/exempel | Datatyp |
|---|---|---|
| apiVersion | 2019-07-01 | date |
| utgivare | Microsoft.Azure.KeyVault | sträng |
| typ | KeyVaultForLinux | sträng |
| typeHandlerVersion | 2.0 | int |
| pollingIntervalInS | 3600 | sträng |
| certificateStoreName | Den ignoreras i Linux | sträng |
| linkOnRenewal | falskt | boolean |
| certificateStoreLocation | /var/lib/waagent/Microsoft.Azure.KeyVault | 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 Så här autentiserar du för Key Vault och tilldelar en Key Vault åtkomstprincip.
{
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "KeyVaultForLinux",
"apiVersion": "2019-07-01",
"location": "<location>",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', <vmName>)]"
],
"properties": {
"publisher": "Microsoft.Azure.KeyVault",
"type": "KeyVaultForLinux",
"typeHandlerVersion": "2.0",
"autoUpgradeMinorVersion": true,
"settings": {
"secretsManagementSettings": {
"pollingIntervalInS": <polling interval in seconds, e.g. "3600">,
"certificateStoreName": <ingnored on linux>,
"certificateStoreLocation": <disk path where certificate is stored, default: "/var/lib/waagent/Microsoft.Azure.KeyVault">,
"observedCertificates": <list of KeyVault URIs representing monitored certificates, e.g.: "https://myvault.vault.azure.net/secrets/mycertificate"
}
}
}
}
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 det här anger du följande:
"secretsManagementSettings": {
"requireInitialSync": true,
...
}
[Obs] 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örhands-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 akvvm_service misslyckas med felet: [CertificateManagementConfiguration] Failed to parse the configuration settings with:not an object.
Den Azure PowerShell kan användas för att distribuera Key Vault VM-tillägget 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 = "KeyVaultForLinux" $extPublisher = "Microsoft.Azure.KeyVault" $extType = "KeyVaultForLinux" # Start the deployment Set-AzVmExtension -TypeHandlerVersion "2.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 = "KeyVaultForLinux" $extPublisher = "Microsoft.Azure.KeyVault" $extType = "KeyVaultForLinux" # Add Extension to VMSS $vmss = Get-AzVmss -ResourceGroupName <ResourceGroupName> -VMScaleSetName <VmssName> Add-AzVmssExtension -VirtualMachineScaleSet $vmss -Name $extName -Publisher $extPublisher -Type $extType -TypeHandlerVersion "2.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ägget 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 -n "KeyVaultForLinux" ` --publisher Microsoft.Azure.KeyVault ` -g "<resourcegroup>" ` --vm-name "<vmName>" ` --version 2.0 ` --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 -n "KeyVaultForLinux" ` --publisher Microsoft.Azure.KeyVault ` -g "<resourcegroup>" ` --vmss-name "<vmssName>" ` --version 2.0 ` --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
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 |
|---|---|
| /var/log/waagent.log | Visar när en uppdatering av tillägget inträffade. |
| /var/log/azure/Microsoft.Azure.KeyVault.KeyVaultForLinux/* | Granska loggarna Key Vault VM-tillägget för att fastställa status för akvvm_service och certifikathämtning. Nedladdningsplatsen för PEM-filer finns också i dessa filer med en post som kallas certifikatfilnamn. Om certificateStoreLocation inte anges används som standard /var/lib/waagent/Microsoft.Azure.KeyVault.Store/ |
| /var/lib/waagent/Microsoft.Azure.KeyVault.KeyVaultForLinux- <most recent version> /config/* | Konfiguration och binärfiler för Key Vault VM Extension-tjänsten. |
Använda Symlink
Symboliska länkar eller Symlinks är i princip avancerade genvägar. För att undvika att övervaka mappen och hämta det senaste certifikatet automatiskt kan du använda den här symlinken för att hämta den ([VaultName].[CertificateName]) senaste versionen av certifikatet på Linux.
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.
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.