Key Vault virtuálisgép-bővítmény Linuxhoz
A Key Vault virtuálisgép-bővítmény automatikusan frissíti az Azure Key Vaultban tárolt tanúsítványokat. A bővítmény a key vaultokban tárolt megfigyelt tanúsítványok listáját figyeli. A bővítmény a módosítás észlelése után lekéri és telepíti a megfelelő tanúsítványokat. Ez a dokumentum a LinuxHoz készült Key Vault virtuálisgép-bővítmény támogatott platformjait, konfigurációit és üzembehelyezési lehetőségeit ismerteti.
Operációs rendszer
A Key Vault virtuálisgép-bővítmény támogatja ezeket a Linux-disztribúciókat:
- Ubuntu 20.04, 22.04
- Azure Linux
Feljegyzés
A Key Vault virtuálisgép-bővítmény letölti a tanúsítványokat az alapértelmezett helyre vagy a virtuálisgép-bővítmény beállításai között található "certStoreLocation" tulajdonság által megadott helyre. A Key Vault virtuálisgép-bővítmény 700-ra (drwx------) frissíti a mappaengedélyt, amely csak a mappa tulajdonosának olvasási, írási és végrehajtási engedélyt tesz lehetővé
Támogatott tanúsítványtartalom-típusok
- PKCS #12
- PEM
Előfeltételek
Key Vault-példány tanúsítvánnyal. Lásd: Kulcstartó létrehozása
Hozzárendelt felügyelt identitás a virtuális gépen/VMSS-en
A Key Vault titkos kulcsainak felhasználói szerepköre a Key Vault hatókörszintjén a virtuális gépekhez és az Azure Virtual Machine Scale Sets felügyelt identitásához. Ez a szerepkör lekéri egy tanúsítvány titkos részét. További információért tekintse át az alábbi cikkeket:
A VMSS-nek a következő identitásbeállítással kell rendelkeznie:
"identity": { "type": "UserAssigned", "userAssignedIdentities": { "[parameters('userAssignedIdentityResourceId')]": {} } }
Az AKV-bővítménynek a következő beállítással kell rendelkeznie:
"authenticationSettings": { "msiEndpoint": "[parameters('userAssignedIdentityEndpoint')]", "msiClientId": "[reference(parameters('userAssignedIdentityResourceId'), variables('msiApiVersion')).clientId]" }
Key Vault virtuálisgép-bővítmény verziója
A felhasználók úgy is dönthetnek, hogy frissítik a Key Vault virtuálisgép-bővítmény verziószámát a
V2.0
teljes tanúsítványlánc letöltési funkciójára. A kiállítói tanúsítványok (köztes és gyökér) a levéltanúsítvány részét képezik a PEM-fájlban.Ha inkább a frissítésre szeretne frissíteni
v2.0
, először törölniev1.0
kell, majd telepíteniev2.0
kell.
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
A --version 2.0 jelző nem kötelező, mert a legújabb verzió alapértelmezés szerint telepítve van.
- Ha a virtuális gép 1.0-s verzióval letöltött tanúsítványokkal rendelkezik, a v1.0 AKVVM bővítmény törlése nem törli a letöltött tanúsítványokat. A 2.0-s verzió telepítése után a meglévő tanúsítványok nem módosulnak. A teljes láncú PEM-fájl lekéréséhez törölnie kell a tanúsítványfájlokat, vagy át kell helyeznie a tanúsítványt.
Bővítményséma
Az alábbi JSON a Key Vault virtuálisgép-bővítmény sémáját mutatja be. A bővítmény nem igényel védett beállításokat – az összes beállítás biztonsági hatással nem járó információnak minősül. A bővítményhez a figyelt titkos kódok, a lekérdezési gyakoriság és a céltanúsítvány-tároló listája szükséges. Ezek konkrétan a következők:
{
"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".>
}
}
}
}
Feljegyzés
A megfigyelt tanúsítványok URL-címeinek űrlapnak https://myVaultName.vault.azure.net/secrets/myCertName
kell lenniük.
Ennek az az oka, hogy az /secrets
elérési út a teljes tanúsítványt adja vissza, beleértve a titkos kulcsot is, míg az /certificates
elérési út nem. További információ a tanúsítványokról: Key Vault-tanúsítványok
Fontos
A "authentication Gépház" tulajdonság minden felhasználó által hozzárendelt identitással rendelkező virtuális géphez szükséges. Még ha rendszer által hozzárendelt identitást is szeretne használni, akkor is szükség van rá, különben a virtuálisgép-bővítmény nem tudja, melyik identitást kell használnia. E szakasz nélkül a felhasználó által hozzárendelt identitásokkal rendelkező virtuális gép a Key Vault-bővítmény sikertelen lesz, és nem tudja letölteni a tanúsítványokat. Állítsa az msiClientId azonosítót a Key Vaultban hitelesítendő identitásra.
Az Azure Arc-kompatibilis virtuális gépekhez is szükséges.
Az msiEndpoint beállítása a következőre http://localhost:40342/metadata/identity
: .
Tulajdonságértékek
Név | Érték/ Példa | Adattípus |
---|---|---|
apiVersion | 2022-07-01 | dátum: |
Publisher | Microsoft.Azure.KeyVault | húr |
típus | KeyVaultForLinux | húr |
typeHandlerVersion | 2,0 | egész |
pollingIntervalInS | 3600 | húr |
certificateStoreName | Linuxon figyelmen kívül hagyja | húr |
linkOnRenewal | false | Logikai |
certificateStoreLocation | /var/lib/waagent/Microsoft.Azure.KeyVault.Store | húr |
requireInitialSync | true | Logikai |
observedCertificates | ["https://myvault.vault.azure.net/secrets/mycertificate"; "https://myvault.vault.azure.net/secrets/mycertificate2"] | sztringtömb |
msiEndpoint | http://169.254.169.254/metadata/identity | húr |
msiClientId | c7373ae5-91c2-4165-8ab6-7381d6e75619 | húr |
Sablonalapú telepítés
Az Azure-beli virtuálisgép-bővítmények Azure Resource Manager-sablonokkal telepíthetők. A sablonok ideálisak egy vagy több olyan virtuális gép üzembe helyezésekor, amely a tanúsítványok üzembe helyezését követően szükséges. A bővítmény üzembe helyezhető egyes virtuális gépeken vagy virtuálisgép-méretezési csoportokban. A séma és a konfiguráció mindkét sablontípus esetében gyakori.
A virtuálisgép-bővítmény JSON-konfigurációját a sablon virtuálisgép-erőforrástöredékében kell beágyazni, különösen "resources": []
a virtuálisgép-sablonhoz és az objektum alatti virtuálisgép-méretezési csoporthoz tartozó objektumba "virtualMachineProfile":"extensionProfile":{"extensions" :[]
.
Feljegyzés
A virtuálisgép-bővítményhez rendszer- vagy felhasználó által felügyelt identitást kellene hozzárendelni a Key Vaulthoz való hitelesítéshez. Tekintse meg a Key Vaulthoz való hitelesítést és a Key Vault hozzáférési szabályzatának hozzárendelését.
{
"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": <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"
}
}
}
}
Bővítményfüggőség-rendezés
A Key Vault virtuálisgép-bővítmény támogatja a bővítmények sorrendjét, ha konfigurálva van. Alapértelmezés szerint a bővítmény a lekérdezés indításakor azonnal sikeres kezdést jelez. Konfigurálhatja azonban úgy, hogy megvárja, amíg sikeresen letölti a tanúsítványok teljes listáját, mielőtt sikeres kezdést jelentene. Ha más bővítmények a telepített tanúsítványoktól függnek a kezdés előtt, akkor a beállítás engedélyezésével ezek a bővítmények függőséget deklarálhatnak a Key Vault-bővítménytől. Ez megakadályozza, hogy ezek a bővítmények elindulnak, amíg az összes olyan tanúsítvány telepítve nem lesz, amelytől függenek. A bővítmény határozatlan ideig újra megkísérli a kezdeti letöltést, és állapotban Transitioning
marad.
A bővítményfüggőség bekapcsolásához állítsa be a következőket:
"secretsManagementSettings": {
"requireInitialSync": true,
...
}
Feljegyzés
A funkció használata nem kompatibilis egy olyan ARM-sablonnal, amely rendszer által hozzárendelt identitást hoz létre, és frissíti a Key Vault hozzáférési szabályzatát az identitással. Ez holtpontot eredményez, mivel a tároló hozzáférési szabályzata nem frissíthető, amíg az összes bővítmény el nem indul. Az üzembe helyezés előtt ehelyett egyetlen felhasználó által hozzárendelt MSI-identitást kell használnia, és a tárolók előzetes ACL-jével kell rendelkeznie ezzel az identitással.
Azure PowerShell üzembe helyezése
Figyelmeztetés
A PowerShell-ügyfelek gyakran hozzáadnak \
"
a settings.json, ami akvvm_service hibát okoz: [CertificateManagementConfiguration] Failed to parse the configuration settings with:not an object.
Az Azure PowerShell használatával üzembe helyezheti a Key Vault virtuálisgép-bővítményt egy meglévő virtuális gépre vagy virtuálisgép-méretezési csoportra.
A bővítmény üzembe helyezése virtuális gépen:
# 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" -EnableAutomaticUpgrade true -ResourceGroupName <ResourceGroupName> -Location <Location> -VMName <VMName> -Name $extName -Publisher $extPublisher -Type $extType -SettingString $settings
A bővítmény üzembe helyezése virtuálisgép-méretezési csoportban:
# 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" -EnableAutomaticUpgrade true -Setting $settings # Start the deployment Update-AzVmss -ResourceGroupName <ResourceGroupName> -VMScaleSetName <VmssName> -VirtualMachineScaleSet $vmss
Azure CLI üzemelő példány
Az Azure CLI-vel üzembe helyezheti a Key Vault virtuálisgép-bővítményt egy meglévő virtuális gépre vagy virtuálisgép-méretezési csoportra.
A bővítmény üzembe helyezése virtuális gépen:
# Start the deployment az vm extension set -n "KeyVaultForLinux" ` --publisher Microsoft.Azure.KeyVault ` -g "<resourcegroup>" ` --vm-name "<vmName>" ` --version 2.0 ` --enable-auto-upgrade true ` --settings '{\"secretsManagementSettings\": { \"pollingIntervalInS\": \"<pollingInterval>\", \"certificateStoreName\": \"<certStoreName>\", \"certificateStoreLocation\": \"<certStoreLoc>\", \"observedCertificates\": [\" <observedCert1> \", \" <observedCert2> \"] }}'
A bővítmény üzembe helyezése virtuálisgép-méretezési csoportban:
# Start the deployment az vmss extension set -n "KeyVaultForLinux" ` --publisher Microsoft.Azure.KeyVault ` -g "<resourcegroup>" ` --vmss-name "<vmssName>" ` --version 2.0 ` --enable-auto-upgrade true ` --settings '{\"secretsManagementSettings\": { \"pollingIntervalInS\": \"<pollingInterval>\", \"certificateStoreName\": \"<certStoreName>\", \"certificateStoreLocation\": \"<certStoreLoc>\", \"observedCertificates\": [\" <observedCert1> \", \" <observedCert2> \"] }}'
Vegye figyelembe a következő korlátozásokat/követelményeket:
- Key Vault-korlátozások:
- Az üzembe helyezéskor léteznie kell
- A Key Vault hozzáférési szabályzatát egy felügyelt identitással rendelkező virtuálisgép-/VMSS-identitáshoz kell beállítani. Tekintse meg a Key Vaulthoz való hitelesítést és a Key Vault hozzáférési szabályzatának hozzárendelését.
Hibaelhárítás és támogatás
A bővítménytelepítések állapotával kapcsolatos adatok az Azure Portalról és az Azure PowerShell használatával kérhetők le. Egy adott virtuális gép bővítményeinek üzembehelyezési állapotának megtekintéséhez futtassa az alábbi parancsot az Azure PowerShell használatával.
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"
Az Azure CLI több rendszerhéj-környezetben is futtatható, de kisebb formátumváltozatokkal. Ha az Azure CLI-parancsokkal nem várt eredményeket kap, olvassa el az Azure CLI sikeres használatát ismertető témakört.
Naplók és konfiguráció
A Key Vault virtuálisgép-bővítménynaplói csak helyileg léteznek a virtuális gépen, és a hibaelhárítás során a leginformatívabbak.
Hely | Leírás |
---|---|
/var/log/waagent.log | Megjeleníti, hogy mikor történt frissítés a bővítményre. |
/var/log/azure/Microsoft.Azure.KeyVault.KeyVaultForLinux/* | Vizsgálja meg a Key Vault virtuálisgép-bővítmény szolgáltatásnaplóit a akvvm_service szolgáltatás és a tanúsítvány letöltésének állapotának meghatározásához. A PEM-fájlok letöltési helyét a tanúsítványfájl neve nevű bejegyzéssel rendelkező fájlokban találja. Ha a certificateStoreLocation nincs megadva, az alapértelmezés szerint a /var/lib/waagent/Microsoft.Azure.KeyVault.Store/ lesz. |
/var/lib/waagent/Microsoft.Azure.KeyVault.KeyVaultForLinux-legújabb< verzió>/config/* | A Key Vault virtuálisgép-bővítmény szolgáltatás konfigurációja és bináris fájljai. |
A Symlink használata
A szimbolikus hivatkozások vagy symlinkek speciális billentyűparancsok. A mappa figyelésének elkerülése és a legújabb tanúsítvány automatikus lekérése érdekében ezzel a szimlinkel ([VaultName].[CertificateName])
lekérheti a tanúsítvány legújabb verzióját Linux rendszeren.
Gyakori kérdések
- Korlátozva van a konfigurálható megfigyelt értékek száma? Nem, a Key Vault virtuálisgép-bővítmény nem korlátozza a megfigyeltcertificates számát.
Támogatás
Ha a cikk bármely pontján további segítségre van szüksége, forduljon az Azure szakértőihez az MSDN Azure és a Stack Overflow fórumain. Másik lehetőségként Azure-támogatás incidenst is beszedhet. Lépjen a Azure-támogatás webhelyre, és válassza a Támogatás kérése lehetőséget. Az Azure-támogatás használatáról a Microsoft Azure-támogatás GYIK-ben talál további információt.