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:

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 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ölnie v1.0 kell, majd telepítenie v2.0kell.

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