Rozšíření virtuálního počítače služby Azure Key Vault pro Windows
Rozšíření virtuálního počítače azure Key Vault poskytuje automatickou aktualizaci certifikátů uložených ve službě Azure Key Vault. Rozšíření monitoruje seznam pozorovaných certifikátů uložených v trezorech klíčů. Když zjistí změnu, rozšíření načte a nainstaluje odpovídající certifikáty. Tento článek popisuje podporované platformy, konfigurace a možnosti nasazení pro rozšíření virtuálního počítače služby Key Vault pro Windows.
Operační systémy
Rozšíření virtuálního počítače služby Key Vault podporuje následující verze Windows:
- Windows Server 2022
- Windows Server 2019
- Windows Server 2016
- Windows Server 2012
Rozšíření virtuálního počítače služby Key Vault je také podporováno na vlastním místním virtuálním počítači. Virtuální počítač by se měl nahrát a převést na specializovanou image pro použití v Azure pomocí instalace jádra Windows Serveru 2019.
Podporované certifikáty
Rozšíření virtuálního počítače služby Key Vault podporuje následující typy obsahu certifikátu:
- PKCS č. 12
- PEM
Poznámka:
Rozšíření virtuálního počítače služby Key Vault stáhne všechny certifikáty do úložiště certifikátů Windows nebo do umístění zadaného ve certificateStoreLocation
vlastnosti v nastavení rozšíření virtuálního počítače.
Aktualizace ve verzi 3.0 nebo novější
Verze 3.0 rozšíření virtuálního počítače služby Key Vault pro Windows přidává podporu pro následující funkce:
- Přidání oprávnění seznamu ACL ke staženým certifikátům
- Povolení konfigurace úložiště certifikátů na certifikát
- Export privátních klíčů
- Podpora opětovné vazby certifikátu služby IIS
Požadavky
Projděte si následující požadavky pro použití rozšíření virtuálního počítače služby Key Vault pro Windows:
Instance služby Azure Key Vault s certifikátem. Další informace najdete v tématu Vytvoření trezoru klíčů pomocí webu Azure Portal.
Virtuální počítač s přiřazenou spravovanou identitou
Role uživatele tajných kódů služby Key Vault musí být přiřazena na úrovni oboru služby Key Vault pro virtuální počítače a spravovanou identitu služby Azure Virtual Machine Scale Sets. Tato role načte část certifikátu tajného kódu. Další informace najdete v následujících článcích:
Škálovací sady virtuálních počítačů by měly mít následující
identity
konfiguraci:"identity": { "type": "UserAssigned", "userAssignedIdentities": { "[parameters('userAssignedIdentityResourceId')]": {} } }
Rozšíření virtuálního počítače služby Key Vault by mělo mít následující
authenticationSettings
konfiguraci:"authenticationSettings": { "msiEndpoint": "[parameters('userAssignedIdentityEndpoint')]", "msiClientId": "[reference(parameters('userAssignedIdentityResourceId'), variables('msiApiVersion')).clientId]" }
Poznámka:
Starý model oprávnění zásad přístupu se dá použít také k poskytování přístupu k virtuálním počítačům a škálovacím sadám virtuálních počítačů. Tato metoda vyžaduje zásadu s oprávněními k získání a výpisu tajných kódů. Další informace najdete v tématu Přiřazení zásad přístupu ke službě Key Vault.
Schéma rozšíření
Následující KÓD JSON ukazuje schéma pro rozšíření virtuálního počítače služby Key Vault. Než začnete uvažovat o možnostech implementace schématu, projděte si následující důležité poznámky.
Rozšíření nevyžaduje chráněná nastavení. Všechna nastavení se považují za veřejné informace.
Pozorované adresy URLcertifikátůch
https://myVaultName.vault.azure.net/secrets/myCertName
Tento formulář je upřednostňovaný, protože
/secrets
cesta vrací úplný certifikát, včetně privátního klíče, ale/certificates
cesta ne. Další informace ocertifikátchVlastnost je vyžadována
authenticationSettings
pro virtuální počítače s libovolnými identitami přiřazenými uživatelem.Tato vlastnost určuje identitu, která se má použít pro ověřování ve službě Key Vault. Definujte tuto vlastnost pomocí identity přiřazené systémem, abyste se vyhnuli problémům s rozšířením virtuálního počítače s více identitami.
{
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "KVVMExtensionForWindows",
"apiVersion": "2022-08-01",
"location": "<location>",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', <vmName>)]"
],
"properties": {
"publisher": "Microsoft.Azure.KeyVault",
"type": "KeyVaultForWindows",
"typeHandlerVersion": "3.0",
"autoUpgradeMinorVersion": true,
"settings": {
"secretsManagementSettings": {
"pollingIntervalInS": <A string that specifies the polling interval in seconds. Example: "3600">,
"linkOnRenewal": <Windows only. Ensures s-channel binding when the certificate renews without necessitating redeployment. Example: true>,
"requireInitialSync": <Initial synchronization of certificates. Example: 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">,
"certificateStoreName": <The certificate store name. Example: "MY">,
"certificateStoreLocation": <The certificate store location, which currently works locally only. Example: "LocalMachine">,
"accounts": <Optional. An array of preferred accounts with read access to certificate private keys. Administrators and SYSTEM get Full Control by default. Example: ["Network Service", "Local Service"]>
},
{
"url": <Example: "https://myvault.vault.azure.net/secrets/mycertificate2">,
"certificateStoreName": <Example: "MY">,
"certificateStoreLocation": <Example: "CurrentUser">,
"keyExportable": <Optional. Lets the private key be exportable. Example: "false">,
"accounts": <Example: ["Local Service"]>
}
]>
},
"authenticationSettings": {
"msiEndpoint": <Required when the msiClientId property is used. Specifies the MSI endpoint. Example for most Azure VMs: "http://169.254.169.254/metadata/identity/oauth2/token">,
"msiClientId": <Required when the VM has any user assigned identities. Specifies the MSI identity. Example: "c7373ae5-91c2-4165-8ab6-7381d6e75619">
}
}
}
}
Hodnoty vlastností
Schéma JSON obsahuje následující vlastnosti.
Název | Hodnota/příklad | Datový typ |
---|---|---|
apiVersion |
2022-08-01 | datum |
publisher |
Microsoft.Azure.KeyVault | string |
type |
KeyVaultForWindows | string |
typeHandlerVersion |
"3.0" | string |
pollingIntervalInS |
"3600" | string |
linkOnRenewal (volitelné) |
true | boolean |
requireInitialSync (volitelné) |
false (nepravda) | boolean |
observedCertificates |
[{...}, {...}] | Řetězcové pole |
observedCertificates/url |
"https://myvault.vault.azure.net/secrets/mycertificate" | string |
observedCertificates/certificateStoreName |
MY | string |
observedCertificates/certificateStoreLocation |
LocalMachine nebo CurrentUser (rozlišují se malá a velká písmena) | string |
observedCertificates/keyExportable (volitelné) |
false (nepravda) | boolean |
observedCertificates/accounts (volitelné) |
["Síťová služba", "Místní služba"] | Řetězcové pole |
msiEndpoint |
"http://169.254.169.254/metadata/identity/oauth2/token" | string |
msiClientId |
c7373ae5-91c2-4165-8ab6-7381d6e75619 | string |
Nasazení šablon
Rozšíření virtuálních počítačů Azure je možné nasadit pomocí šablon Azure Resource Manageru (ARM). Šablony jsou ideální pro nasazení 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 instance škálovací sady virtuálních počítačů. Schéma a konfigurace jsou společné pro oba typy šablon.
Konfigurace JSON pro rozšíření trezoru klíčů je vnořená do šablony škálovací sady virtuálních počítačů nebo virtuálních počítačů. V případě rozšíření prostředků virtuálního počítače je konfigurace vnořená pod "resources": []
objektem virtuálního počítače. V případě rozšíření instance Škálovací sady virtuálních počítačů je konfigurace vnořená pod objektem "virtualMachineProfile":"extensionProfile":{"extensions" :[]
.
Následující fragmenty kódu JSON poskytují ukázková nastavení pro nasazení šablony ARM rozšíření virtuálního počítače služby Key Vault.
{
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "KeyVaultForWindows",
"apiVersion": "2022-08-01",
"location": "<location>",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', <vmName>)]"
],
"properties": {
"publisher": "Microsoft.Azure.KeyVault",
"type": "KeyVaultForWindows",
"typeHandlerVersion": "3.0",
"autoUpgradeMinorVersion": true,
"settings": {
"secretsManagementSettings": {
"pollingIntervalInS": <A string that specifies the polling interval in seconds. Example: "3600">,
"linkOnRenewal": <Windows only. Ensures s-channel binding when the certificate renews without necessitating redeployment. Example: 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">,
"certificateStoreName": <The certificate store name. Example: "MY">,
"certificateStoreLocation": <The certificate store location, which currently works locally only. Example: "LocalMachine">,
"accounts": <Optional. An array of preferred accounts with read access to certificate private keys. Administrators and SYSTEM get Full Control by default. Example: ["Network Service", "Local Service"]>
},
{
"url": <Example: "https://myvault.vault.azure.net/secrets/mycertificate2">,
"certificateStoreName": <Example: "MY">,
"certificateStoreLocation": <Example: "CurrentUser">,
"keyExportable": <Optional. Lets the private key be exportable. Example: "false">,
"accounts": <Example: ["Local Service"]>
},
{
"url": <Example: "https://myvault.vault.azure.net/secrets/mycertificate3">,
"certificateStoreName": <Example: "TrustedPeople">,
"certificateStoreLocation": <Example: "LocalMachine">
}
]>
},
"authenticationSettings": {
"msiEndpoint": <Required when the msiClientId property is used. Specifies the MSI endpoint. Example for most Azure VMs: "http://169.254.169.254/metadata/identity/oauth2/token">,
"msiClientId": <Required when the VM has any user assigned identities. Specifies the MSI identity. Example: "c7373ae5-91c2-4165-8ab6-7381d6e75619">
}
}
}
}
Řazení závislostí rozšíření
Rozšíření virtuálního počítače služby Key Vault můžete povolit pro podporu řazení závislostí rozšíření. Rozšíření virtuálního počítače služby Key Vault ve výchozím nastavení hlásí úspěšné spuštění, jakmile začne dotazování. Rozšíření ale můžete nakonfigurovat tak, aby ohlásilo úspěšné spuštění až po stažení rozšíření a instalaci všech certifikátů.
Pokud před spuštěním použijete další rozšíření, která vyžadují instalaci všech certifikátů, můžete v rozšíření virtuálního počítače služby Key Vault povolit řazení závislostí rozšíření. Tato funkce umožňuje ostatním rozšířením deklarovat závislost na rozšíření virtuálního počítače služby Key Vault.
Pomocí této funkce můžete zabránit spuštění dalších rozšíření, dokud nebudou nainstalovány všechny závislé certifikáty. Pokud je tato funkce povolená, rozšíření virtuálního počítače služby Key Vault opakovaně stahuje a instaluje certifikáty po neomezenou dobu a zůstává v přechodném stavu, dokud se všechny certifikáty úspěšně nenainstalují. Jakmile jsou všechny certifikáty k dispozici, rozšíření virtuálního počítače služby Key Vault hlásí úspěšné spuštění.
Pokud chcete povolit funkci řazení závislostí rozšíření v rozšíření virtuálního počítače služby Key Vault, nastavte secretsManagementSettings
vlastnost:
"secretsManagementSettings": {
"requireInitialSync": true,
...
}
Další informace o nastavení závislostí mezi rozšířeními najdete v tématu Zřizování rozšíření sekvence ve škálovacích sadách virtuálních počítačů.
Důležité
Funkce řazení závislostí rozšíření není kompatibilní se šablonou ARM, která vytvoří identitu přiřazenou systémem a aktualizuje zásadu přístupu ke službě Key Vault s danou identitou. Pokud se pokusíte tuto funkci použít v tomto scénáři, dojde k zablokování, protože zásady přístupu ke službě Key Vault se nedají aktualizovat, dokud se nespustí všechna rozšíření. Místo toho před nasazením použijte identitu MSI přiřazenou jedním uživatelem a předsoučte seznam ACL trezorů klíčů s danou identitou.
Nasazení Azure PowerShellu
Rozšíření virtuálního počítače azure Key Vault je možné nasadit pomocí Azure PowerShellu. Uložte nastavení rozšíření virtuálního počítače služby Key Vault do souboru JSON (settings.json).
Následující fragmenty kódu JSON poskytují ukázková nastavení pro nasazení rozšíření virtuálního počítače služby Key Vault pomocí PowerShellu.
{
"secretsManagementSettings": {
"pollingIntervalInS": "3600",
"linkOnRenewal": true,
"observedCertificates":
[
{
"url": "https://<examplekv>.vault.azure.net/secrets/certificate1",
"certificateStoreName": "MY",
"certificateStoreLocation": "LocalMachine",
"accounts": [
"Network Service"
]
},
{
"url": "https://<examplekv>.vault.azure.net/secrets/certificate2",
"certificateStoreName": "MY",
"certificateStoreLocation": "LocalMachine",
"keyExportable": true,
"accounts": [
"Network Service",
"Local Service"
]
}
]},
"authenticationSettings": {
"msiEndpoint": "http://169.254.169.254/metadata/identity/oauth2/token",
"msiClientId": "c7373ae5-91c2-4165-8ab6-7381d6e75619"
}
}
Nasazení na virtuální počítač
# Build settings
$settings = (get-content -raw ".\settings.json")
$extName = "KeyVaultForWindows"
$extPublisher = "Microsoft.Azure.KeyVault"
$extType = "KeyVaultForWindows"
# Start the deployment
Set-AzVmExtension -TypeHandlerVersion "3.0" -ResourceGroupName <ResourceGroupName> -Location <Location> -VMName <VMName> -Name $extName -Publisher $extPublisher -Type $extType -SettingString $settings
Nasazení v instanci škálovací sady virtuálních počítačů
# Build settings
$settings = ".\settings.json"
$extName = "KeyVaultForWindows"
$extPublisher = "Microsoft.Azure.KeyVault"
$extType = "KeyVaultForWindows"
# Add extension to Virtual Machine Scale Sets
$vmss = Get-AzVmss -ResourceGroupName <ResourceGroupName> -VMScaleSetName <VmssName>
Add-AzVmssExtension -VirtualMachineScaleSet $vmss -Name $extName -Publisher $extPublisher -Type $extType -TypeHandlerVersion "3.0" -Setting $settings
# Start the deployment
Update-AzVmss -ResourceGroupName <ResourceGroupName> -VMScaleSetName <VmssName> -VirtualMachineScaleSet $vmss
Nasazení v Azure CLI
Rozšíření virtuálního počítače azure Key Vault je možné nasadit pomocí Azure CLI. Uložte nastavení rozšíření virtuálního počítače služby Key Vault do souboru JSON (settings.json).
Následující fragmenty kódu JSON poskytují ukázková nastavení pro nasazení rozšíření virtuálního počítače služby Key Vault pomocí Azure CLI.
{
"secretsManagementSettings": {
"pollingIntervalInS": "3600",
"linkOnRenewal": true,
"observedCertificates": [
{
"url": "https://<examplekv>.vault.azure.net/secrets/certificate1",
"certificateStoreName": "MY",
"certificateStoreLocation": "LocalMachine",
"accounts": [
"Network Service"
]
},
{
"url": "https://<examplekv>.vault.azure.net/secrets/certificate2",
"certificateStoreName": "MY",
"certificateStoreLocation": "LocalMachine",
"keyExportable": true,
"accounts": [
"Network Service",
"Local Service"
]
}
]
},
"authenticationSettings": {
"msiEndpoint": "http://169.254.169.254/metadata/identity/oauth2/token",
"msiClientId": "c7373ae5-91c2-4165-8ab6-7381d6e75619"
}
}
Nasazení na virtuální počítač
# Start the deployment
az vm extension set --name "KeyVaultForWindows" `
--publisher Microsoft.Azure.KeyVault `
--resource-group "<resourcegroup>" `
--vm-name "<vmName>" `
--settings "@settings.json"
Nasazení v instanci škálovací sady virtuálních počítačů
# Start the deployment
az vmss extension set --name "KeyVaultForWindows" `
--publisher Microsoft.Azure.KeyVault `
--resource-group "<resourcegroup>" `
--vmss-name "<vmssName>" `
--settings "@settings.json"
Řešení potíží
Tady je několik návrhů, jak řešit problémy s nasazením.
Podívejte se na nejčastější dotazy
Je omezený počet pozorovaných certifikátů?
Ne. Rozšíření virtuálního počítače služby Key Vault neomezuje počet pozorovaných certifikátů (observedCertificates
).
Jaké je výchozí oprávnění, když není zadaný žádný účet?
Ve výchozím nastavení obdrží správci a SYSTÉM úplné řízení.
Jak zjistíte, jestli je klíč certifikátu CAPI1 nebo CNG?
Rozšíření spoléhá na výchozí chování rozhraní PFXImportCertStore API. Pokud má certifikát ve výchozím nastavení atribut Název zprostředkovatele, který odpovídá CAPI1, importuje se certifikát pomocí rozhraní API CAPI1. V opačném případě se certifikát naimportuje pomocí rozhraní CNG API.
Podporuje rozšíření automatické vazby certifikátu?
Ano, rozšíření virtuálního počítače služby Azure Key Vault podporuje automatické vazby certifikátů. Rozšíření virtuálního počítače služby Key Vault podporuje vazbu kanálu S při obnovení certifikátu, pokud linkOnRenewal
je vlastnost nastavená na true.
Pro službu IIS můžete nakonfigurovat automatickou vazbu povolením automatického obnovení vazby certifikátů ve službě IIS. Rozšíření virtuálního počítače azure Key Vault generuje oznámení o životním cyklu certifikátů při instalaci certifikátu s odpovídající sítí SAN. Služba IIS tuto událost používá k automatickému obnovení vazby certifikátu. Další informace naleznete v tématu Certifcate Rebind in IIS
Zobrazení stavu rozšíření
Zkontrolujte stav nasazení rozšíření na webu Azure Portal nebo pomocí PowerShellu nebo Azure CLI.
Pokud chcete zobrazit stav nasazení rozšíření pro daný virtuální počítač, spusťte následující příkazy.
Azure PowerShell:
Get-AzVMExtension -ResourceGroupName <myResourceGroup> -VMName <myVM> -Name <myExtensionName>
The Azure CLI:
az vm get-instance-view --resource-group <myResourceGroup> --name <myVM> --query "instanceView.extensions"
Kontrola protokolů a konfigurace
Protokoly rozšíření virtuálního počítače služby Key Vault existují jenom místně na virtuálním počítači. Projděte si podrobnosti protokolu, které vám pomůžou s řešením potíží.
Soubor protokolu | Popis |
---|---|
C:\WindowsAzure\Logs\WaAppAgent.log' | Zobrazuje, kdy dojde k aktualizacím rozšíření. |
C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.KeyVault.KeyVaultForWindows<nejnovější verze>\ | Zobrazuje stav stahování certifikátu. Umístění pro stahování je vždy úložiště MY v počítači s Windows (certlm.msc). |
C:\Packages\Plugins\Microsoft.Azure.KeyVault.KeyVaultForWindows<nejnovější verze>\RuntimeSettings\ | Protokoly rozšíření virtuálního počítače služby Key Vault zobrazují stav služby akvvm_service. |
C:\Packages\Plugins\Microsoft.Azure.KeyVault.KeyVaultForWindows<nejnovější verze>\Status\ | Konfigurace a binární soubory pro službu rozšíření virtuálního počítače služby Key Vault. |
Získání podpory
Tady jsou některé další možnosti, které vám pomůžou vyřešit problémy s nasazením:
Pokud potřebujete pomoc, obraťte se na odborníky na Azure na fórech Q&A a Stack Overflow.
Pokud na webu nenajdete odpověď, můžete zadat dotaz pro vstup od Microsoftu nebo jiných členů komunity.
Můžete také kontaktovat podpora Microsoftu. Informace o používání podpora Azure najdete v podpora Azure nejčastějších dotazech.