Key Vault rozšíření virtuálního počítače pro Linux
Rozšíření Key Vault virtuálních počítačů poskytuje automatickou aktualizaci certifikátů uložených ve službě Azure Key Vault. Rozšíření konkrétně monitoruje seznam pozorovaných certifikátů uložených v trezorech klíčů. Rozšíření načte a nainstaluje odpovídající certifikáty po zjištění změny. Rozšíření Key Vault virtuálních počítačů publikuje a podporuje Microsoft, v současné době na virtuálních počítačích s Linuxem. Tento dokument podrobně popisuje podporované platformy, konfigurace a možnosti nasazení rozšíření Key Vault virtuálních počítačů pro Linux.
Operační systém
Rozšíření Key Vault virtuálních počítačů podporuje tyto linuxové distribuce:
- Ubuntu 20.04, 22.04
- Azure Linux
Poznámka
Rozšíření Key Vault virtuálního počítače stáhne certifikáty ve výchozím umístění nebo do umístění poskytnutého vlastností certStoreLocation v nastavení rozšíření virtuálního počítače. Rozšíření Key Vault virtuálního počítače aktualizuje oprávnění ke složce na 700 (drwx------), což umožňuje oprávnění ke čtení, zápisu a spouštění pouze pro vlastníka složky.
Podporované typy obsahu certifikátů
- PKCS č. 12
- PEM
Požadavky
Key Vault instanci s certifikátem. Viz Vytvoření Key Vault.
Virtuální počítač nebo škálovací sada virtuálních počítačů musí mít přiřazenou spravovanou identitu.
Zásady Key Vault přístupu musí být nastaveny s tajnými kódy
get
alist
oprávněními pro identitu spravovanou virtuálním počítačem nebo VMSS, aby načetla část certifikátu tajného kódu. Viz Postup ověřování pro Key Vault a Přiřazení zásad Key Vault přístupu.Škálovací sada virtuálních počítačů by měla mít následující nastavení identity:
"identity": { "type": "UserAssigned", "userAssignedIdentities": { "[parameters('userAssignedIdentityResourceId')]": {} } }
Rozšíření AKV by mělo mít toto nastavení:
"authenticationSettings": { "msiEndpoint": "[parameters('userAssignedIdentityEndpoint')]", "msiClientId": "[reference(parameters('userAssignedIdentityResourceId'), variables('msiApiVersion')).clientId]" }
verze rozšíření Key Vault virtuálního počítače
Uživatelé můžou upgradovat verzi rozšíření Key Vault virtuálního počítače na
V2.0
, aby mohli používat funkci stažení úplného řetězu certifikátů. Certifikáty vystavitele (zprostředkující a kořenové) se připojí k listovém certifikátu v souboru PEM.Pokud dáváte přednost upgradu na
v2.0
, musíte nejprve odstranitv1.0
a pak nainstalovatv2.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
Příznak --version 2.0 je volitelný, protože ve výchozím nastavení se nainstaluje nejnovější verze.
- Pokud má virtuální počítač certifikáty stažené pomocí verze 1.0, odstraněním rozšíření AKVVM verze 1.0 se stažené certifikáty neodstraní. Po instalaci verze 2.0 nebudou stávající certifikáty změněny. Pokud chcete na virtuálním počítači získat soubor PEM s úplným řetězem, budete muset odstranit soubory certifikátů nebo certifikát převést.
Schéma rozšíření
Následující kód JSON ukazuje schéma pro rozšíření Key Vault virtuálního počítače. Rozšíření nevyžaduje chráněné nastavení – všechna jeho nastavení jsou považována za informace bez dopadu na zabezpečení. Rozšíření vyžaduje seznam monitorovaných tajných kódů, frekvenci dotazování a cílové úložiště certifikátů. Konkrétně se jedná o tyto:
{
"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 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": <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".>
}
}
}
}
Poznámka
Adresy URL pozorovaných certifikátů by měly být ve formátu https://myVaultName.vault.azure.net/secrets/myCertName
.
Důvodem je to, že /secrets
cesta vrátí úplný certifikát včetně privátního /certificates
klíče, zatímco cesta ne. Další informace o certifikátech najdete tady: Key Vault certifikáty.
Důležité
Vlastnost authenticationSettings se vyžaduje pro virtuální počítače s libovolnými identitami přiřazenými uživatelem. I když chcete použít identitu přiřazenou systémem, je to stále nutné, jinak rozšíření virtuálního počítače nebude vědět, kterou identitu použít. Bez této části způsobí virtuální počítač s identitami přiřazenými uživatelem selhání rozšíření Key Vault a nebude možné stáhnout certifikáty. MsiClientId nastavte na identitu, která se bude ověřovat Key Vault.
Vyžaduje se také pro virtuální počítače s podporou Azure Arc.
Nastavte msiEndpoint na http://localhost:40342/metadata/identity
.
Hodnoty vlastností
Name | Hodnota / příklad | Typ dat |
---|---|---|
apiVersion | 2022-07-01 | date |
vydavatel | Microsoft.Azure.KeyVault | řetězec |
typ | KeyVaultForLinux | řetězec |
typeHandlerVersion | 2.0 | int |
pollingIntervalInS | 3600 | řetězec |
název_úložiště certifikátu | V Linuxu se ignoruje. | řetězec |
linkOnRenewal | false (nepravda) | boolean |
certificateStoreLocation | /var/lib/waagent/Microsoft.Azure.KeyVault.Store | řetězec |
requireInitialSync | true | boolean |
observedCertificates | ["https://myvault.vault.azure.net/secrets/mycertificate", "https://myvault.vault.azure.net/secrets/mycertificate2"] | pole řetězců |
msiEndpoint | http://169.254.169.254/metadata/identity | řetězec |
msiClientId | c7373ae5-91c2-4165-8ab6-7381d6e75619 | řetězec |
Nasazení šablon
Rozšíření virtuálních počítačů Azure je možné nasadit pomocí šablon Azure Resource Manager. Šablony jsou ideální při nasazování jednoho nebo více virtuálních počítačů, které vyžadují aktualizaci certifikátů po nasazení. Rozšíření je možné nasadit na jednotlivé virtuální počítače nebo škálovací sady virtuálních počítačů. Schéma a konfigurace jsou společné pro oba typy šablon.
Konfigurace JSON pro rozšíření virtuálního počítače musí být vnořená do fragmentu prostředku virtuálního počítače šablony, konkrétně "resources": []
objektu pro šablonu virtuálního počítače a pro škálovací sadu virtuálních počítačů v rámci "virtualMachineProfile":"extensionProfile":{"extensions" :[]
objektu.
Poznámka
Rozšíření virtuálního počítače by vyžadovalo přiřazení identity spravované systémem nebo uživatelem k ověření ke službě Key Vault. Viz Postup ověření Key Vault a přiřazení zásad Key Vault přístupu.
{
"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"
}
}
}
}
Řazení závislostí rozšíření
Rozšíření Key Vault virtuálního počítače podporuje řazení rozšíření, pokud je nakonfigurované. Rozšíření ve výchozím nastavení hlásí, že se úspěšně spustilo hned po spuštění dotazování. Můžete ho ale nakonfigurovat tak, aby před nahlášeným úspěšným spuštěním počkalo na úspěšné stažení úplného seznamu certifikátů. Pokud jiná rozšíření závisejí na tom, že mají před spuštěním nainstalovanou úplnou sadu certifikátů, povolením tohoto nastavení umožníte těmto rozšířením deklarovat závislost na rozšíření Key Vault. To zabrání spuštění těchto rozšíření, dokud nebudou nainstalovány všechny certifikáty, na kterých závisí. Rozšíření se bude po neomezenou dobu opakovat počáteční stažení a zůstane ve Transitioning
stavu .
Pokud chcete zapnout závislost rozšíření, nastavte následující:
"secretsManagementSettings": {
"requireInitialSync": true,
...
}
[Poznámka] Použití této funkce není kompatibilní se šablonou ARM, která vytvoří identitu přiřazenou systémem a aktualizuje zásady Key Vault přístupu s touto identitou. Pokud to uděláte, dojde k vzájemnému zablokování, protože zásady přístupu k trezoru nebude možné aktualizovat, dokud se nesvedou všechna rozšíření. Před nasazením byste místo toho měli použít identitu MSI přiřazenou jedním uživatelem a předběžné seznamy ACL trezorů s danou identitou.
Azure PowerShell nasazení
Upozornění
Klienti PowerShellu se často přidávají \
do "
souboru settings.json, což způsobí akvvm_service selhání s chybou: [CertificateManagementConfiguration] Failed to parse the configuration settings with:not an object.
Azure PowerShell můžete použít k nasazení rozšíření Key Vault virtuálního počítače do existujícího virtuálního počítače nebo škálovací sady virtuálních počítačů.
Nasazení rozšíření na virtuální počítač:
# 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
Nasazení rozšíření ve škálovací sadě virtuálních počítačů:
# 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
Nasazení v Azure CLI
Azure CLI je možné použít k nasazení rozšíření Key Vault virtuálního počítače do existujícího virtuálního počítače nebo škálovací sady virtuálních počítačů.
Nasazení rozšíření na virtuální počítač:
# 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> \"] }}'
Nasazení rozšíření ve škálovací sadě virtuálních počítačů:
# 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> \"] }}'
Mějte na paměti následující omezení a požadavky:
- Key Vault omezení:
- Musí existovat v době nasazení.
- Zásady Key Vault přístupu musí být pro identitu virtuálních počítačů nebo škálovací sady virtuálních počítačů nastaveny pomocí spravované identity. Viz Postup ověření pro Key Vault a Přiřazení zásad Key Vault přístupu.
Řešení potíží a podpora
Data o stavu nasazení rozšíření je možné načíst z Azure Portal a pomocí Azure PowerShell. Pokud chcete zobrazit stav nasazení rozšíření pro daný virtuální počítač, spusťte pomocí Azure PowerShell následující příkaz.
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"
Azure CLI může běžet v několika prostředích prostředí, ale s malými variacemi formátu. Pokud příkazy Azure CLI mají neočekávané výsledky, přečtěte si téma Úspěšné použití Azure CLI.
Protokoly a konfigurace
Protokoly rozšíření Key Vault virtuálních počítačů existují jenom místně na virtuálním počítači a při řešení potíží jsou nejinformativnější.
Umístění | Popis |
---|---|
/var/log/waagent.log | Zobrazuje, kdy došlo k aktualizaci rozšíření. |
/var/log/azure/Microsoft.Azure.KeyVault.KeyVaultForLinux/* | Zkontrolujte protokoly služby rozšíření Key Vault virtuálních počítačů a zjistěte stav stažení akvvm_service služby a certifikátu. Umístění ke stažení souborů PEM se také nachází v těchto souborech s položkou název souboru certifikátu. Pokud není zadána hodnota certificateStoreLocation, použije se výchozí hodnota /var/lib/waagent/Microsoft.Azure.KeyVault.Store/ |
/var/lib/waagent/Microsoft.Azure.KeyVault.KeyVaultForLinux-nejnovější< verze>/config/* | Konfigurace a binární soubory pro službu rozšíření Key Vault virtuálních počítačů. |
Použití Symlinku
Symbolické odkazy nebo Symlinky jsou pokročilé klávesové zkratky. Pokud chcete zabránit monitorování složky a získat nejnovější certifikát automaticky, můžete pomocí tohoto odkazu ([VaultName].[CertificateName])
získat nejnovější verzi certifikátu v Linuxu.
Nejčastější dotazy
- Existuje omezení počtu pozorovanýchcertifikátů, které můžete nastavit? Ne, Key Vault rozšíření virtuálního počítače nemá omezení počtu pozorovaných certifikátů.
Podpora
Pokud budete kdykoli potřebovat další pomoc v tomto článku, můžete kontaktovat odborníky na Azure na fórech MSDN Azure a Stack Overflow. Případně můžete zakládaný podpora Azure incident. Přejděte na web podpora Azure a vyberte Získat podporu. Informace o používání podpory Azure najdete v nejčastějších dotazech k Microsoftu podpora Azure.