Azure Key Vault virtuálisgép-bővítmény Windowshoz
Az Azure Key Vault virtuális gép (VM) bővítménye 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. Amikor változást észlel, a bővítmény lekéri és telepíti a megfelelő tanúsítványokat. Ez a cikk a Windows Key Vault virtuálisgép-bővítményének támogatott platformjait, konfigurációit és üzembehelyezési lehetőségeit ismerteti.
Operációs rendszerek
A Key Vault virtuálisgép-bővítmény a Windows alábbi verzióit támogatja:
- Windows Server 2022
- Windows Server 2019
- Windows Server 2016
- Windows Server 2012,
A Key Vault virtuálisgép-bővítmény egy egyéni helyi virtuális gépen is támogatott. A virtuális gépet a Windows Server 2019 core telepítésével fel kell tölteni és speciális rendszerképpé kell konvertálni az Azure-ban való használatra.
Támogatott tanúsítványok
A Key Vault virtuálisgép-bővítmény a következő tanúsítványtartalomtípusokat támogatja:
- PKCS #12
- PEM
Feljegyzés
A Key Vault virtuálisgép-bővítmény letölti az összes tanúsítványt a Windows tanúsítványtárolóba vagy a certificateStoreLocation
tulajdonságban megadott helyre a virtuálisgép-bővítmény beállításai között.
Frissítések a 3.0-s vagy újabb verzióban
A Windows Key Vault virtuálisgép-bővítmény 3.0-s verziója támogatja a következő funkciókat:
- ACL-engedélyek hozzáadása letöltött tanúsítványokhoz
- Tanúsítványtár konfigurációjának engedélyezése tanúsítványonként
- Titkos kulcsok exportálása
- IIS-tanúsítvány újrakötésének támogatása
Előfeltételek
Tekintse át a Következő előfeltételeket a Key Vault virtuálisgép-bővítmény windowsos használatához:
Egy Azure Key Vault-példány tanúsítvánnyal. További információ: Kulcstartó létrehozása az Azure Portal használatával.
Hozzárendelt felügyelt identitással rendelkező virtuális gép.
A Key Vault titkos kulcsfelhasználói szerepkörét a virtuális gépek és az Azure Virtuálisgép-méretezési csoportok felügyelt identitásának Kulcstartó hatókörszintjén kell hozzárendelni. 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 virtuálisgép-méretezési csoportoknak a következő
identity
konfigurációval kell rendelkezniük:"identity": { "type": "UserAssigned", "userAssignedIdentities": { "[parameters('userAssignedIdentityResourceId')]": {} } }
A Key Vault virtuálisgép-bővítménynek a következő
authenticationSettings
konfigurációval kell rendelkeznie:"authenticationSettings": { "msiEndpoint": "[parameters('userAssignedIdentityEndpoint')]", "msiClientId": "[reference(parameters('userAssignedIdentityResourceId'), variables('msiApiVersion')).clientId]" }
Feljegyzés
A régi hozzáférési szabályzat engedélymodellje a virtuális gépekhez és a virtuálisgép-méretezési csoportokhoz való hozzáférést is biztosítja. Ehhez a metódushoz titkos kódok lekérési és listázási engedélyével rendelkező szabályzat szükséges. További információ: Key Vault hozzáférési szabályzat hozzárendelése.
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. Mielőtt megfontolja a séma implementálási lehetőségeit, tekintse át az alábbi fontos megjegyzéseket.
A bővítmény nem igényel védett beállításokat. Minden beállítás nyilvános információnak minősül.
A megfigyelt tanúsítványok URL-címeinek űrlapnak
https://myVaultName.vault.azure.net/secrets/myCertName
kell lenniük.Ez az űrlap előnyben részesített, mert az
/secrets
elérési út a teljes tanúsítványt adja vissza, beleértve a titkos kulcsot is, de az/certificates
elérési út nem. A tanúsítványokról további információt az Azure Key Vault kulcsainak, titkos kulcsainak és tanúsítványainak áttekintésében talál.A
authenticationSettings
tulajdonság minden felhasználó által hozzárendelt identitással rendelkező virtuális géphez szükséges.Ez a tulajdonság határozza meg a Key Vaulthoz való hitelesítéshez használandó identitást. Adja meg ezt a tulajdonságot egy rendszer által hozzárendelt identitással, hogy elkerülje a több identitással rendelkező virtuálisgép-bővítményekkel kapcsolatos problémákat.
{
"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">
}
}
}
}
Tulajdonságértékek
A JSON-séma a következő tulajdonságokat tartalmazza.
Név | Érték/Példa | Adattípus |
---|---|---|
apiVersion |
2022-08-01 | dátum: |
publisher |
Microsoft.Azure.KeyVault | húr |
type |
KeyVaultForWindows | húr |
typeHandlerVersion |
"3.0" | húr |
pollingIntervalInS |
"3600" | húr |
linkOnRenewal (nem kötelező) |
true | Logikai |
requireInitialSync (nem kötelező) |
false | Logikai |
observedCertificates |
[{...}, {...}] | sztringtömb |
observedCertificates/url |
"https://myvault.vault.azure.net/secrets/mycertificate" | húr |
observedCertificates/certificateStoreName |
MY | húr |
observedCertificates/certificateStoreLocation |
LocalMachine vagy CurrentUser (kis- és nagybetűk megkülönböztetése) | húr |
observedCertificates/keyExportable (nem kötelező) |
false | Logikai |
observedCertificates/accounts (nem kötelező) |
["Hálózati szolgáltatás", "Helyi szolgáltatás"] | sztringtömb |
msiEndpoint |
"http://169.254.169.254/metadata/identity/oauth2/token" | 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- (ARM-) 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 csoportok példányán. A séma és a konfiguráció mindkét sablontípus esetében gyakori.
A kulcstartó-bővítmény JSON-konfigurációja a virtuális gép vagy a virtuálisgép-méretezési csoportok sablonba van ágyazva. Virtuálisgép-erőforrás-bővítmény esetén a konfiguráció a "resources": []
virtuálisgép-objektum alá van ágyazva. Virtuálisgép-méretezési csoportok példánykiterjesztése esetén a konfiguráció az "virtualMachineProfile":"extensionProfile":{"extensions" :[]
objektum alá van ágyazva.
Az alábbi JSON-kódrészletek példabeállításokat nyújtanak a Key Vault virtuálisgép-bővítmény ARM-sablonjának üzembe helyezéséhez.
{
"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">
}
}
}
}
Bővítményfüggőség-rendezés
Engedélyezheti a Key Vault virtuálisgép-bővítményt a bővítményfüggőség-rendezés támogatásához. A Key Vault virtuálisgép-bővítmény alapértelmezés szerint sikeres kezdést jelez, amint a lekérdezés megkezdődik. A bővítményt azonban úgy konfigurálhatja, hogy a sikeres kezdést csak a bővítmény letöltése és az összes tanúsítvány telepítése után jelentse.
Ha olyan egyéb bővítményeket használ, amelyekhez az összes tanúsítvány telepítése szükséges a kezdés előtt, engedélyezheti a bővítményfüggőség-rendezést a Key Vault virtuálisgép-bővítményben. Ez a funkció lehetővé teszi, hogy más bővítmények függőséget deklaráljanak a Key Vault virtuálisgép-bővítményről.
Ezzel a funkcióval megakadályozhatja, hogy más bővítmények elinduljanak, amíg az összes függő tanúsítvány telepítve nem lesz. Ha a funkció engedélyezve van, a Key Vault virtuálisgép-bővítmény korlátlan ideig újrapróbálkozza a tanúsítványok letöltését és telepítését, és átmeneti állapotban marad, amíg az összes tanúsítvány sikeresen telepítve nem lesz. Miután minden tanúsítvány megtalálható, a Key Vault virtuálisgép-bővítmény sikeres kezdést jelez.
Ha engedélyezni szeretné a bővítmény függőségrendezési funkcióját a Key Vault virtuálisgép-bővítményben, állítsa be a tulajdonságot secretsManagementSettings
:
"secretsManagementSettings": {
"requireInitialSync": true,
...
}
További információ a bővítmények közötti függőségek beállításáról: Szekvenciabővítmények kiépítése a virtuálisgép-méretezési csoportokban.
Fontos
A bővítményfüggőség-rendezési funkció nem kompatibilis 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. Ha ebben a forgatókönyvben megkísérli használni a funkciót, holtpontot tapasztal, mert a Key Vault hozzáférési szabályzata nem frissíthető, amíg az összes bővítmény el nem indul. Ehelyett az üzembe helyezés előtt használjon egy felhasználó által hozzárendelt MSI-identitást , és használja a kulcstartók előzetes ACL-ét ezzel az identitással.
Azure PowerShell üzembe helyezése
Az Azure Key Vault virtuálisgép-bővítmény üzembe helyezhető az Azure PowerShell-lel. Mentse a Key Vault virtuálisgép-bővítmény beállításait egy JSON-fájlba (settings.json).
Az alábbi JSON-kódrészletek példabeállításokat nyújtanak a Key Vault virtuálisgép-bővítmény PowerShell-lel való üzembe helyezéséhez.
{
"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"
}
}
Üzembe helyezés virtuális gépen
# 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
Üzembe helyezés virtuálisgép-méretezési csoportok példányán
# 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
Azure CLI üzemelő példány
Az Azure Key Vault virtuálisgép-bővítmény az Azure CLI használatával telepíthető. Mentse a Key Vault virtuálisgép-bővítmény beállításait egy JSON-fájlba (settings.json).
Az alábbi JSON-kódrészletek példabeállításokat nyújtanak a Key Vault virtuálisgép-bővítmény Azure CLI-vel való üzembe helyezéséhez.
{
"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"
}
}
Üzembe helyezés virtuális gépen
# Start the deployment
az vm extension set --name "KeyVaultForWindows" `
--publisher Microsoft.Azure.KeyVault `
--resource-group "<resourcegroup>" `
--vm-name "<vmName>" `
--settings "@settings.json"
Üzembe helyezés virtuálisgép-méretezési csoportok példányán
# Start the deployment
az vmss extension set --name "KeyVaultForWindows" `
--publisher Microsoft.Azure.KeyVault `
--resource-group "<resourcegroup>" `
--vmss-name "<vmssName>" `
--settings "@settings.json"
Hibaelhárítási problémák
Az alábbiakban néhány javaslatot talál az üzembehelyezési problémák elhárítására.
Gyakori kérdések ellenőrzése
Korlátozva van a megfigyelt tanúsítványok száma?
Szám A Key Vault virtuálisgép-bővítmény nem korlátozza a megfigyelt tanúsítványok számát (observedCertificates
).
Mi az alapértelmezett engedély, ha nincs megadva fiók?
Alapértelmezés szerint a Rendszergazda istratorok és a SYSTEM teljes vezérlést kapnak.
Hogyan állapítható meg, hogy a tanúsítványkulcs CAPI1 vagy CNG?
A bővítmény a PFXImportCertStore API alapértelmezett viselkedésére támaszkodik. Alapértelmezés szerint ha egy tanúsítvány rendelkezik a CAPI1-nek megfelelő Szolgáltatónév attribútummal, akkor a tanúsítványt CAPI1 API-k használatával importálja a rendszer. Ellenkező esetben a tanúsítvány importálása CNG API-k használatával történik.
Támogatja a bővítmény a tanúsítvány automatikus újrakötését?
Igen, az Azure Key Vault virtuálisgép-bővítmény támogatja a tanúsítványok automatikus újrakötését. A Key Vault virtuálisgép-bővítmény támogatja az S-csatorna kötését a tanúsítványmegújításhoz, ha a linkOnRenewal
tulajdonság értéke igaz.
IIS esetén az automatikus újrakötés konfigurálásához engedélyezze a tanúsítványmegújítások automatikus újrakötését az IIS-ben. Az Azure Key Vault virtuálisgép-bővítmény tanúsítvány-életciklus-értesítéseket hoz létre, ha egy megfelelő SAN-val rendelkező tanúsítvány van telepítve. Az IIS ezt az eseményt használja a tanúsítvány automatikus újrakötéséhez. További információ: Certifcate Rebind in IIS
Bővítmény állapotának megtekintése
Ellenőrizze a bővítmény üzembe helyezésének állapotát az Azure Portalon, vagy a PowerShell vagy az Azure CLI használatával.
Egy adott virtuális gép bővítményeinek üzembehelyezési állapotának megtekintéséhez futtassa az alábbi parancsokat.
Azure PowerShell:
Get-AzVMExtension -ResourceGroupName <myResourceGroup> -VMName <myVM> -Name <myExtensionName>
Az Azure CLI:
az vm get-instance-view --resource-group <myResourceGroup> --name <myVM> --query "instanceView.extensions"
Naplók és konfiguráció áttekintése
A Key Vault virtuálisgép-bővítménynaplói csak helyileg léteznek a virtuális gépen. A hibaelhárításhoz tekintse át a napló részleteit.
Naplófájl | Leírás |
---|---|
C:\WindowsAzure\Logs\WaAppAgent.log' | Megjeleníti, hogy mikor történik frissítés a bővítményen. |
C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.KeyVault.KeyVaultForWindows<legújabb verziója>\ | A tanúsítványletöltés állapotát jeleníti meg. A letöltési hely mindig a Windows számítógép MY-tárolója (certlm.msc). |
C:\Packages\Plugins\Microsoft.Azure.KeyVault.KeyVaultForWindows<legújabb verzió>\Runtime Gépház\ | A Key Vault virtuálisgép-bővítmény szolgáltatásnaplói a akvvm_service szolgáltatás állapotát mutatják. |
C:\Packages\Plugins\Microsoft.Azure.KeyVault.KeyVaultForWindows<legújabb verziója>\Status\ | A Key Vault virtuálisgép-bővítmény szolgáltatás konfigurációja és bináris fájljai. |
Támogatás kérése
Íme néhány további lehetőség az üzembe helyezési problémák megoldásához:
Segítségért forduljon az Azure szakértőihez a Q&A és a Stack Overflow fórumokon.
Ha nem talál választ a webhelyen, közzétehet egy kérdést a Microsofttól vagy a közösség más tagjaitól érkező bemenetekre vonatkozóan.
A Microsoft ügyfélszolgálata is felveheti a kapcsolatot. A Azure-támogatás használatáról további információt a Azure-támogatás gyanakvó Azure-támogatás talál.