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/myCertNamekell 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.