Migrera till Innovate Summit:
Lär dig hur migrering och modernisering till Azure kan öka företagets prestanda, motståndskraft och säkerhet, så att du kan använda AI fullt ut.Registrera dig nu
Den här webbläsaren stöds inte längre.
Uppgradera till Microsoft Edge och dra nytta av de senaste funktionerna och säkerhetsuppdateringarna, samt teknisk support.
Tillägget för den virtuella Key Vault-datorn ger automatisk uppdatering av certifikat som lagras i ett Azure-nyckelvalv. Mer specifikt övervakar tillägget en lista över observerade certifikat som lagras i nyckelvalv. Tillägget hämtar och installerar motsvarande certifikat när en ändring har upptäckts. 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 för den virtuella Key Vault-datorn stöder följande Linux-distributioner:
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 (version 1/2) eller enskilda certifikatinställningar (version 3). Tillägget för den virtuella Key Vault-datorn uppdaterar mappbehörigheten till 700 (drwx------) som tillåter läs-, skriv- och körningsbehörighet till mappens ägare endast
Innehållstyper för certifikat som stöds
PKCS #12
PEM
Uppdateringar i version 3.0+
Version 3.0+ av Key Vault VM-tillägget för Linux lägger till stöd för följande funktioner:
Lägga till ACL-behörigheter för nedladdade certifikat för att ge läsbehörighet för användare och grupper
Platskonfiguration för certifikatinstallation
Stöd för anpassat symboliskt namn
Integreringsstöd för vm-tilläggsloggning via Fluentd
Tilldelad hanterad identitet på virtuell dator/VMSS
Rollen Key Vault Secrets User på Key Vault-omfångsnivå för virtuella datorer och azure virtual machine scale sets managed identity. Den här rollen hämtar en hemlighets del av ett certifikat. Mer information finns i följande artiklar:
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 VM-tilläggsversion
Användare kan välja att uppgradera sin befintliga version av Key Vault VM-tillägget till en nyare version.
Om du föredrar att uppgradera till en nyare version måste du först ta bort den tidigare versionen och sedan installera nyare version.
Azure CLI
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 3.0
Flaggan --version 3.0 är valfri eftersom den senaste versionen är installerad som standard.
Om den virtuella datorn har certifikat som laddats ned av tidigare version tar du inte bort de nedladdade certifikaten om du tar bort VM-tillägget. När du har installerat en nyare version ändras inte de befintliga certifikaten. Du skulle behöva ta bort certifikatfilerna eller rulla över certifikatet för att hämta PEM-filen med fullständig kedja på den virtuella datorn.
Tilläggsschema
Följande JSON visar schemat för tillägget för den virtuella Key Vault-datorn. Tillägget kräver inte skyddade inställningar – alla dess inställningar betraktas som information utan säkerhetspåverkan. Tillägget kräver en lista över övervakade hemligheter, avsökningsfrekvens och målcertifikatarkivet. Specifikt:
{
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "KVVMExtensionForLinux",
"apiVersion": "2022-11-01",
"location": "<location>",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', <vmName>)]"
],
"properties": {
"publisher": "Microsoft.Azure.KeyVault",
"type": "KeyVaultForLinux",
"typeHandlerVersion": "3.0",
"autoUpgradeMinorVersion": true,
"enableAutomaticUpgrade": true,
"settings": {
"loggingSettings": <Optional logging settings, e.g.:
{
"logger": <Logger engine name. e.g.: "fluentd">,
"endpoint": <Logger listening endpoint "tcp://localhost:24224">,
"format": <Logging format. e.g.: "forward">,
"servicename": <Service name used in logs. e.g.: "akvvm_service">
}>,
"secretsManagementSettings": {
"pollingIntervalInS": <polling interval in seconds, e.g. "3600">,
"linkOnRenewal": <Not available on Linux e.g.: false>,
"requireInitialSync": <initial synchronization of certificates e..g: true>,
"aclEnabled": <Enables ACLs for downloaded certificates, e.g.: true>,
"observedCertificates": <An array of KeyVault URIs that represent monitored certificates, including certificate store location, ACL permission to certificate private key, and custom symbolic name. e.g.:
[
{
"url": <A Key Vault URI to the secret portion of the certificate. e.g.: "https://myvault.vault.azure.net/secrets/mycertificate1">,
"certificateStoreLocation": <disk path where certificate is stored, e.g.: "/var/lib/waagent/Microsoft.Azure.KeyVault/app1">,
"customSymbolicLinkName": <symbolic name for the certificate. e.g.: "app1Cert1">,
"acls": [
{
"user": "app1",
"group": "appGroup1"
},
{
"user": "service1"
}
]
},
{
"url": <Example: "https://myvault.vault.azure.net/secrets/mycertificate2">,
"certificateStoreLocation": <disk path where the certificate is stored, e.g.: "/var/lib/waagent/Microsoft.Azure.KeyVault/app2">,
"acls": [
{
"user": "app2",
}
]
}
]>
},
"authenticationSettings": <Optional msi settings, e.g.:
{
"msiEndpoint": <Required when msiClientId is provided. MSI endpoint e.g. for most Azure VMs: "http://169.254.169.254/metadata/identity">,
"msiClientId": <Required when VM has any user assigned identities. MSI identity e.g.: "c7373ae5-91c2-4165-8ab6-7381d6e75619".>
}>
}
}
}
JSON
{
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "KVVMExtensionForLinux",
"apiVersion": "2022-11-01",
"location": "<location>",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', <vmName>)]"
],
"properties": {
"publisher": "Microsoft.Azure.KeyVault",
"type": "KeyVaultForLinux",
"typeHandlerVersion": "2.0",
"autoUpgradeMinorVersion": true,
"enableAutomaticUpgrade": true,
"settings": {
"secretsManagementSettings": {
"pollingIntervalInS": <polling interval in seconds, e.g. "3600">,
"certificateStoreName": <It's 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": <Required when msiClientId is provided. MSI endpoint e.g. for most Azure VMs: "http://169.254.169.254/metadata/identity">,
"msiClientId": <Required when VM has any user assigned identities. MSI identity e.g.: "c7373ae5-91c2-4165-8ab6-7381d6e75619".>
}
}
}
}
Anteckning
Dina observerade certifikat-URL:er ska vara i formuläret 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 alla användartilldelade identiteter. Även om du vill använda en systemtilldelad identitet krävs detta fortfarande, annars vet inte VM-tillägget vilken identitet som ska användas. Utan det här avsnittet leder en virtuell dator med användartilldelade identiteter till att Key Vault-tillägget misslyckas och inte kan ladda ned certifikat.
Ange msiClientId till den identitet som ska autentiseras till Key Vault.
Krävs även för Azure Arc-aktiverade virtuella datorer.
Ange msiEndpoint till http://localhost:40342/metadata/identity.
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 efter distributionen av certifikat. 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 vara kapslad i mallens resursfragment för den virtuella datorn, specifikt "resources": [] objekt för mallen för den virtuella datorn och för en vm-skalningsuppsättning under "virtualMachineProfile":"extensionProfile":{"extensions" :[] objekt.
{
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "KeyVaultForLinux",
"apiVersion": "2022-11-01",
"location": "<location>",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', <vmName>)]"
],
"properties": {
"publisher": "Microsoft.Azure.KeyVault",
"type": "KeyVaultForLinux",
"typeHandlerVersion": "3.0",
"autoUpgradeMinorVersion": true,
"enableAutomaticUpgrade": true,
"settings": {
"secretsManagementSettings": {
"pollingIntervalInS": <polling interval in seconds, e.g. "3600">,
"requireInitialSync": <initial synchronization of certificates e..g: false>,
"aclEnabled": <enables/disables acls on defined certificates e.g.: true>,
"observedCertificates": <An array of KeyVault URIs that represent monitored certificates, including certificate store location and ACL permission to certificate private key. Example:
[
{
"url": <A Key Vault URI to the secret portion of the certificate. Example: "https://myvault.vault.azure.net/secrets/mycertificate1">,
"certificateStoreLocation": <The certificate store location, which currently works locally only. Example: "/var/lib/waagent/Microsoft.Azure.KeyVault.Store">,
"acls": <Optional. An array of preferred acls with read access to certificate private keys. Example:
[
{
"user": "app1",
"group": "appGroup1"
},
{
"user": "service1"
}
]>
},
{
"url": <Example: "https://myvault.vault.azure.net/secrets/mycertificate2">,
"certificateStoreName": <ignored on linux>,
"certificateStoreLocation": <The certificate store location, which currently works locally only. Example: "/var/lib/waagent/Microsoft.Azure.KeyVault.Store">,
"acls": <Optional. An array of preferred acls with read access to certificate private keys. Example:
[
{
"user": "app2"
}
]>
}
]>
},
"authenticationSettings": {
"msiEndpoint": <Required when msiClientId is provided. MSI endpoint e.g. for most Azure VMs: "http://169.254.169.254/metadata/identity">,
"msiClientId": <Required when VM has any user assigned identities. MSI identity e.g.: "c7373ae5-91c2-4165-8ab6-7381d6e75619">
}
}
}
}
JSON
{
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "KeyVaultForLinux",
"apiVersion": "2022-11-01",
"location": "<location>",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', <vmName>)]"
],
"properties": {
"publisher": "Microsoft.Azure.KeyVault",
"type": "KeyVaultForLinux",
"typeHandlerVersion": "2.0",
"autoUpgradeMinorVersion": true,
"enableAutomaticUpgrade": true,
"settings": {
"secretsManagementSettings": {
"pollingIntervalInS": <polling interval in seconds, e.g. "3600">,
"certificateStoreName": <ignored 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"
},
"authenticationSettings": {
"msiEndpoint": <Required when msiClientId is provided. MSI endpoint e.g. for most Azure VMs: "http://169.254.169.254/metadata/identity">,
"msiClientId": <Required when VM has any user assigned identities. MSI identity e.g.: "c7373ae5-91c2-4165-8ab6-7381d6e75619">
}
}
}
}
Beställning av tilläggsberoende
Tillägget för den virtuella Key Vault-datorn stöder tilläggsordning om det har konfigurerats. Som standard rapporterar tillägget lyckad start så snart avsökningen startar. Du kan dock konfigurera den så att den väntar tills den har laddat ned den fullständiga listan med certifikat innan en lyckad start rapporteras. Om andra tillägg är beroende av installerade certifikat innan de startas kan dessa tillägg deklarera ett beroende av Key Vault-tillägget genom att aktivera den här inställningen. Detta förhindrar att dessa tillägg startar tills alla certifikat som de är beroende av har installerats. Tillägget försöker ladda ned den första nedladdningen på obestämd tid och förblir i ett Transitioning tillstånd.
Om du vill aktivera tilläggsberoende anger du följande:
Att använda den här funktionen är inte kompatibelt med en ARM-mall som skapar en systemtilldelad identitet och uppdaterar en Key Vault-åtkomstprincip med den identiteten. Detta resulterar i ett dödläge eftersom åtkomstprincipen för valvet inte kan uppdateras förrän alla tillägg har startats. Du bör i stället använda en enskild användartilldelad MSI-identitet och pre-ACL dina valv med den identiteten innan du distribuerar.
Azure PowerShell-distribution
Varning
PowerShell-klienter lägger ofta till \" i i settings.json vilket orsakar akvvm_service misslyckas med fel: [CertificateManagementConfiguration] Failed to parse the configuration settings with:not an object.
Azure PowerShell kan användas för att distribuera tillägget för den virtuella Key Vault-datorn till en befintlig virtuell dator eller vm-skalningsuppsättning.
Så här distribuerar du tillägget på en virtuell dator:
Azure CLI kan användas för att distribuera tillägget för den virtuella Key Vault-datorn till en befintlig virtuell dator eller vm-skalningsuppsättning.
Så här distribuerar du tillägget på en virtuell dator:
Den måste finnas vid tidpunkten för distributionen
Användarrollen Key Vault-hemligheter måste tilldelas till Key Vault för VM-identitet
Felsökning och support
Data om tillståndet för tilläggsdistributioner kan hämtas från Azure-portalen 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
PowerShell
Get-AzVMExtension -VMName <vmName> -ResourceGroupname <resource group name>
Azure CLI
Azure CLI
az vm get-instance-view--resource-group<resource group name>--name<vmName>--query"instanceView.extensions"
Azure CLI kan köras i flera gränssnittsmiljöer, men med små formatvariationer. Om du har oväntade resultat med Azure CLI-kommandon kan du läsa Så här använder du Azure CLI.
Loggar och konfiguration
Key Vault VM-tilläggsloggarna finns lokalt på den virtuella datorn och är mest informativa när det gäller felsökning. Du kan använda det valfria loggningsavsnittet för att integrera med loggningsprovidern via fluentd
Granska tjänstloggarna för Key Vault VM-tillägg för att fastställa status för akvvm_service-tjänsten och certifikatnedladdningen. Du hittar nedladdningsplatsen för PEM-filer i filer med en post som kallas certifikatfilnamn. Om certificateStoreLocation inte har angetts är standardvärdet /var/lib/waagent/Microsoft.Azure.KeyVault.Store/
Konfigurationen och binärfilerna för key vault VM-tilläggstjänsten.
Använda Symlink
Symboliska länkar eller Symlinks är avancerade genvägar. Om du vill undvika att övervaka mappen och hämta det senaste certifikatet automatiskt kan du använda den här symlänken ([VaultName].[CertificateName]) för att hämta den senaste versionen av certifikatet i Linux.
Vanliga frågor och svar
Finns det en gräns för antalet observeradecertifikat som du kan konfigurera?
Nej, Key Vault VM-tillägget har ingen gräns för antalet observeradeCertifikat.
Lär dig att felsöka konfigurationsproblem som påverkar anslutningen till dina virtuella Windows Server-datorer med Azure-värd (VM). Utforska metoder för att lösa problem med start av virtuella datorer, tillägg, prestanda, lagring och kryptering.
Lär dig hur du distribuerar en agent för automatisk uppdatering av Azure Key Vault-hemligheter på virtuella datorer med ett tillägg för virtuella datorer.