Key Vault-extensie voor virtuele machines voor Linux
De Key Vault VM-extensie biedt automatische vernieuwing van certificaten die zijn opgeslagen in een Azure-sleutelkluis. Met name de extensie bewaakt een lijst met waargenomen certificaten die zijn opgeslagen in sleutelkluizen. Bij het detecteren van een wijziging haalt de extensie de bijbehorende certificaten op en installeert deze. De Key Vault VM-extensie wordt gepubliceerd en ondersteund door Microsoft, momenteel op Linux-VM's. In dit document worden de ondersteunde platformen, configuraties en implementatieopties voor de Key Vault VM-extensie voor Linux besturingssysteem be detailleert.
Besturingssysteem
De Key Vault VM-extensie ondersteunt deze Linux-distributies:
- Ubuntu-1804
- Suse-15
- CBL-Wordter
Notitie
Als u uitgebreide beveiligingsfuncties wilt krijgen, bereidt u de upgrade van Ubuntu-1604- en Debian-9-systemen voor, aangezien deze versies het einde van de aangewezen ondersteuningsperiode bereiken.
Notitie
De Key Vault VM-extensie downloadt de certificaten op de standaardlocatie of naar de locatie die is opgegeven door de eigenschap certStoreLocation in de instellingen van de VM-extensie. Met de KeyValut VM-extensie wordt de mapmachtiging bijgewerkt naar 700 (drwx------) zodat alleen de eigenaar van de map lees-, schrijf- en uitvoermachtigingen heeft
Ondersteunde typen certificaatinhoud
- PKCS #12
- PEM
Prerequisities
Key Vault met certificaat. Zie Een Key Vault
VM/VMSS moet een beheerde identiteit hebben toegewezen
Het Key Vault-toegangsbeleid moet worden ingesteld met geheimen en machtigingen voor de beheerde identiteit van
getVM/VMSS om het deel van het certificaat van een geheimlistop te halen. Zie How to Authenticate to Key Vault and Assign a Key Vault access policy (Een Key Vault-toegangsbeleid toewijzen).VMSS moet de volgende identiteitsinstelling hebben:
"identity": { "type": "UserAssigned", "userAssignedIdentities": { "[parameters('userAssignedIdentityResourceId')]": {} } }De AKV-extensie moet deze instelling hebben:
"authenticationSettings": { "msiEndpoint": "[parameters('userAssignedIdentityEndpoint')]", "msiClientId": "[reference(parameters('userAssignedIdentityResourceId'), variables('msiApiVersion')).clientId]" }
Key Vault VM-extensieversie
Gebruikers van Ubuntu-18.04 en SUSE-15 kunnen ervoor kiezen om de versie van hun key vault vm-extensie bij te werken om gebruik te maken van de downloadfunctie voor de volledige
V2.0certificaatketen. Certificaatverkennen (tussenliggend en basiscertificaat) worden toegevoegd aan het leaf-certificaat in het PEM-bestand.Als u liever upgradet naar
v2.0, moet u eerst verwijderen en vervolgensv1.0v2.0installeren.
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
De vlag --versie 2.0 is optioneel omdat de meest recente versie standaard wordt geïnstalleerd.
- Als de VM certificaten heeft die zijn gedownload door v1.0, worden de gedownloade certificaten NIET verwijderd als de v1.0 AKVVM-extensie wordt verwijderd. Na de installatie van v2.0 worden de bestaande certificaten NIET gewijzigd. U moet de certificaatbestanden verwijderen of het certificaat overrollen om het PEM-bestand met de volledige keten op de VM op te halen.
Extensieschema
De volgende JSON toont het schema voor de Key Vault VM-extensie. Voor de extensie zijn geen beveiligde instellingen vereist. Alle instellingen worden beschouwd als informatie zonder dat dit gevolgen heeft voor de beveiliging. Voor de extensie is een lijst met bewaakte geheimen, pollingfrequentie en het doelcertificaatopslag vereist. Met name:
{
"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">
}
}
}
}
Notitie
De URL's van uw waargenomen certificaten moeten de vorm https://myVaultName.vault.azure.net/secrets/myCertName hebben.
Dit komt doordat het pad het volledige certificaat, met inbegrip van de persoonlijke sleutel, retourneert, terwijl /secrets het pad dat niet /certificates doet. Meer informatie over certificaten vindt u hier: Key Vault Certificaten
Belangrijk
De eigenschap authenticationSettings is vereist voor VM's met door de gebruiker toegewezen identiteiten. Stel msiClientId in op de identiteit die wordt geverifieerd voor Key Vault.
Ook vereist voor Azure Arc VM's met ingeschakelde .
Stel msiEndpoint in op http://localhost:40342/metadata/identity .
Eigenschapswaarden
| Name | Waarde/voorbeeld | Gegevenstype |
|---|---|---|
| apiVersion | 2019-07-01 | date |
| publisher | Microsoft.Azure.KeyVault | tekenreeks |
| type | KeyVaultForLinux | tekenreeks |
| typeHandlerVersion | 2,0 | int |
| pollingIntervalIns | 3600 | tekenreeks |
| certificateStoreName | Dit wordt genegeerd in Linux | tekenreeks |
| linkOnRenewal | onjuist | booleaans |
| certificateStoreLocation | /var/lib/waagent/Microsoft.Azure.KeyVault | tekenreeks |
| requireInitialSync | true | booleaans |
| observedCertificates | ["https://myvault.vault.azure.net/secrets/mycertificate", "https://myvault.vault.azure.net/secrets/mycertificate2"] | tekenreeksmatrice |
| msiEndpoint | http://169.254.169.254/metadata/identity | tekenreeks |
| msiClientId | c7373ae5-91c2-4165-8ab6-7381d6e75619 | tekenreeks |
Sjabloonimplementatie
Azure VM-extensies kunnen worden geïmplementeerd met Azure Resource Manager sjablonen. Sjablonen zijn ideaal bij het implementeren van een of meer virtuele machines waarvoor het vernieuwen van certificaten na de implementatie is vereist. De extensie kan worden geïmplementeerd op afzonderlijke VM's of virtuele-machineschaalsets. Het schema en de configuratie zijn gemeenschappelijk voor beide sjabloontypen.
De JSON-configuratie voor een virtuele-machine-extensie moet zijn genest in het resourcefragment van de virtuele machine van de sjabloon, met name het object voor de virtuele-machinesjabloon en in het geval van een "resources": [] virtuele-machineschaalset onder "virtualMachineProfile":"extensionProfile":{"extensions" :[] object.
Notitie
Voor de VM-extensie moet een door het systeem of de gebruiker beheerde identiteit worden toegewezen voor verificatie bij Key Vault. Zie How to authenticate to Key Vault and assign a Key Vault access policy (Verificatie Key Vault toegangsbeleid toewijzen).
{
"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"
}
}
}
}
Afhankelijkheidsorder voor extensies
De Key Vault VM-extensie ondersteunt het bestellen van extensies als deze is geconfigureerd. De extensie meldt standaard dat deze is gestart zodra polling is gestart. Het kan echter worden geconfigureerd om te wachten totdat de volledige lijst met certificaten is gedownload voordat een geslaagde start wordt gemeld. Als andere extensies afhankelijk zijn van de installatie van de volledige set certificaten voordat ze worden begonnen, kan deze extensie door het inschakelen van deze instelling een afhankelijkheid declareer van de Key Vault extensie. Hiermee voorkomt u dat deze extensies worden starten totdat alle certificaten die ze nodig hebben, zijn geïnstalleerd. De extensie zal de eerste download voor onbepaalde tijd opnieuw proberen en in een status Transitioning blijven.
Stel het volgende in om dit in te stellen:
"secretsManagementSettings": {
"requireInitialSync": true,
...
}
[Opmerking] Het gebruik van deze functie is niet compatibel met een ARM-sjabloon waarmee een door het systeem toegewezen identiteit wordt gemaakt en een Key Vault toegangsbeleid met die identiteit wordt bijgewerkt. Dit leidt tot een impasse omdat het toegangsbeleid voor de kluis pas kan worden bijgewerkt als alle extensies zijn gestart. Gebruik in plaats daarvan één door de gebruiker toegewezen MSI-identiteit en pre-ACL voor uw kluizen met die identiteit voordat u implementeert.
Azure PowerShell implementatie
Waarschuwing
PowerShell-clients voegen vaak \ toe aan in settings.json, wat ervoor zorgt dat " akvvm_service mislukt met fout: [CertificateManagementConfiguration] Failed to parse the configuration settings with:not an object.
De Azure PowerShell kan worden gebruikt om de VM-extensie Key Vault te implementeren op een bestaande virtuele machine of virtuele-machineschaalset.
De extensie implementeren op een VM:
# 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 $settingsDe extensie implementeren op een virtuele-machineschaalset:
# 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-implementatie
De Azure CLI kan worden gebruikt voor het implementeren van Key Vault VM-extensie op een bestaande virtuele machine of virtuele-machineschaalset.
De extensie implementeren op een VM:
# 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> \"] }}'De extensie implementeren op een virtuele-machineschaalset:
# 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> \"] }}'
Houd rekening met de volgende beperkingen/vereisten:
- Key Vault beperkingen:
- Deze moet bestaan op het moment van de implementatie
- Het Key Vault toegangsbeleid moet worden ingesteld voor VM/VMSS-identiteit met behulp van een beheerde identiteit. Zie How to Authenticate to Key Vault and Assign a Key Vault access policy (Een Key Vault-toegangsbeleid toewijzen).
Problemen oplossen en ondersteuning
Gegevens over de status van extensie-implementaties kunnen worden opgehaald uit de Azure Portal en met behulp van de Azure PowerShell. Als u de implementatietoestand van extensies voor een bepaalde VM wilt bekijken, moet u de volgende opdracht uitvoeren met behulp van de 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"
Logboeken en configuratie
De logboeken Key Vault VM-extensies bestaan alleen lokaal op de VM en zijn het meest informatief als het gaat om het oplossen van problemen.
| Locatie | Beschrijving |
|---|---|
| /var/log/waagent.log | Geeft aan wanneer er een update van de extensie is uitgevoerd. |
| /var/log/azure/Microsoft.Azure.KeyVault.KeyVaultForLinux/* | Bekijk de logboeken Key Vault VM-extensieservice om de status van de akvvm_service service en het downloaden van certificaten te bepalen. De downloadlocatie van PEM-bestanden vindt u ook in deze bestanden met een vermelding met de naam certificaatbestandsnaam. Als certificateStoreLocation niet is opgegeven, wordt de standaardwaarde /var/lib/waagent/Microsoft.Azure.KeyVault.Store/ |
| /var/lib/waagent/Microsoft.Azure.KeyVault.KeyVaultForLinux- <most recent version> /config/* | De configuratie en binaire bestanden voor Key Vault VM-extensieservice. |
Symlink gebruiken
Symbolische koppelingen of Symlinks zijn in feite geavanceerde snelkoppelingen. U kunt deze symlink gebruiken om de nieuwste versie van het certificaat in Linux op te halen om te voorkomen dat de map wordt gecontroleerd en om het meest recente certificaat ([VaultName].[CertificateName]) automatisch op te halen.
Veelgestelde vragen
- Is er een limiet voor het aantal waargenomen certificaten dat u kunt instellen? Nee, Key Vault VM-extensie heeft geen limiet voor het aantal waargenomen certificaten.
Ondersteuning
Als u op enig moment in dit artikel meer hulp nodig hebt, kunt u contact opnemen met de Azure-experts op de MSDN Azure- en Stack Overflow forums. U kunt ook een incident ondersteuning voor Azure indienen. Ga naar de ondersteuning voor Azure site en selecteer Ondersteuning krijgen. Lees de veelgestelde vragen Microsoft Azure ondersteuning voor meer Ondersteuning voor Azure over het gebruik van een Microsoft Azure.