Megosztás a következőn keresztül:


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ásaiban (1/2-es verzió) található "certStoreLocation" tulajdonság által biztosított helyre vagy az egyes tanúsítványbeállításokra (3. verzió). 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

Frissítések a 3.0-s vagy újabb verzióban

A LinuxHoz készült 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 a letöltött tanúsítványokhoz, hogy olvasási hozzáférést biztosítson a felhasználók és csoportok számára
  • Tanúsítvány telepítési helyének konfigurációja
  • Egyéni szimbolikus névtámogatás
  • Virtuálisgép-bővítmények naplózásának integrációs támogatása a Fluentden keresztül

Előfeltételek

Key Vault virtuálisgép-bővítmény verziója

  • A felhasználók dönthetnek úgy, hogy a meglévő Key Vault virtuálisgép-bővítmény verziószámát újabb verzióra frissítik.

  • Ha inkább újabb verzióra szeretne frissíteni, először törölnie kell az előző verziót, majd telepítenie kell az újabb verziót.

  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 3.0

A --version 3.0 jelző nem kötelező, mert a legújabb verzió alapértelmezés szerint telepítve van.

  • Ha a virtuális gép korábbi verziója által letöltött tanúsítványokkal rendelkezik, a virtuálisgép-bővítmény törlése nem törli a letöltött tanúsítványokat. Az újabb 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": "3.0",
      "autoUpgradeMinorVersion": true,
      "enableAutomaticUpgrade": true,
      "settings": {
      "loggingSettings": <Optional logging settings, e.g.:
        {
              "logger": <Logger engine name. e.g.: "fluentd">,
              "endpoint": <Logger listening endpoint "tcp://localhost:24224">,
              "format": <Logging format. e.g.: "forward">,
              "servicename": <Service name used in logs. e.g.: "akvvm_service">
          }>,
        "secretsManagementSettings": {
          "pollingIntervalInS": <polling interval in seconds, e.g. "3600">,
          "linkOnRenewal": <Not available on Linux e.g.: false>,
          "requireInitialSync": <initial synchronization of certificates e..g: true>,
          "aclEnabled": <Enables ACLs for downloaded certificates, e.g.: true>,
          "observedCertificates": <An array of KeyVault URIs that represent monitored certificates, including certificate store location, ACL permission to certificate private key, and custom symbolic name. e.g.: 
             [
                {
                    "url": <A Key Vault URI to the secret portion of the certificate. e.g.: "https://myvault.vault.azure.net/secrets/mycertificate1">,
                    "certificateStoreLocation": <disk path where certificate is stored, e.g.: "/var/lib/waagent/Microsoft.Azure.KeyVault/app1">,
                    "customSymbolicLinkName": <symbolic name for the certificate. e.g.: "app1Cert1">,
                    "acls": [
                        {
                            "user": "app1",
                            "group": "appGroup1"
                        },
                        {
                            "user": "service1"
                        }
                    ]
                },
                {
                    "url": <Example: "https://myvault.vault.azure.net/secrets/mycertificate2">,
                    "certificateStoreLocation": <disk path where the certificate is stored, e.g.: "/var/lib/waagent/Microsoft.Azure.KeyVault/app2">,
                    "acls": [
                        {
                            "user": "app2",
                        }
                    ]
                }
             ]>
        },
        "authenticationSettings": <Optional msi settings, e.g.:
        {
          "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 "authenticationSettings" 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
type KeyVaultForLinux húr
typeHandlerVersion 3,0 egész
pollingIntervalInS 3600 húr
certificateStoreName Linuxon figyelmen kívül hagyja húr
linkOnRenewal false Logikai
requireInitialSync true Logikai
aclEnabled true Logikai
certificateStoreLocation /var/lib/waagent/Microsoft.Azure.KeyVault.Store húr
observedCertificates [{...}, {...}] sztringtömb
observedCertificates/url "https://myvault.vault.azure.net/secrets/mycertificate1" húr
observedCertificates/certificateStoreLocation "/var/lib/waagent/Microsoft.Azure.KeyVault/app1" húr
observedCertificates/customSymbolicLinkName (nem kötelező) "app1Cert1" húr
observedCertificates/acls (nem kötelező) "{...}, {...}" sztringtömb
authenticationSettings (nem kötelező) {...} object
authenticationSettings/msiEndpoint http://169.254.169.254/metadata/identity húr
authenticationSettings/msiClientId c7373ae5-91c2-4165-8ab6-7381d6e75619 húr
loggingSettings (nem kötelező) {...} object
loggingSettings/logger "fluentd" húr
loggingSettings/endpoint "tcp://localhost:24224" húr
loggingSettings/format "előre" húr
loggingSettings/servicename "akvvm_service" 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": "3.0",
      "autoUpgradeMinorVersion": true,
      "enableAutomaticUpgrade": true,
      "settings": {
          "secretsManagementSettings": {
          "pollingIntervalInS": <polling interval in seconds, e.g. "3600">,
          "requireInitialSync": <initial synchronization of certificates e..g: false>,
          "aclEnabled": <enables/disables acls on defined certificates e.g.: 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">,
                    "certificateStoreLocation": <The certificate store location, which currently works locally only. Example: "/var/lib/waagent/Microsoft.Azure.KeyVault.Store">,
                    "acls": <Optional. An array of preferred acls with read access to certificate private keys. Example: 
                    [
                        {
                            "user": "app1",
                            "group": "appGroup1"
                        },
                        {
                            "user": "service1"
                        }
                    ]>
                },
                {
                    "url": <Example: "https://myvault.vault.azure.net/secrets/mycertificate2">,
                    "certificateStoreName": <ignored on linux>,
                    "certificateStoreLocation": <The certificate store location, which currently works locally only. Example: "/var/lib/waagent/Microsoft.Azure.KeyVault.Store">,
                    "acls": <Optional. An array of preferred acls with read access to certificate private keys. Example: 
                    [
                        {
                            "user": "app2"
                        }
                    ]>
                }
               
             ]>   
          },
          "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">
          }
        } 
      }
    }

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:

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,
   "aclEnabled": true,
   "observedCertificates":
   [
      {
          "url": "https://<examplekv>.vault.azure.net/secrets/mycertificate1",
          "certificateStoreLocation":  "/var/lib/waagent/Microsoft.Azure.KeyVault.Store",
          "acls": 
          [
              {
                  "user": "app1",
                  "group": "appGroup1"
              },
              {
                  "user": "service1"
              }
          ]
      },
      {
          "url": "https://<examplekv>.vault.azure.net/secrets/mycertificate2",
          "certificateStoreLocation": "/var/lib/waagent/Microsoft.Azure.KeyVault.Store",
          "acls": 
          [
              {
                  "user": "app2"
              }
          ]
      }
   ]},
   "authenticationSettings": {
      "msiEndpoint":  "http://169.254.169.254/metadata/identity/oauth2/token",
      "msiClientId":  "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"
   }      
}
  • A bővítmény üzembe helyezése virtuális gépen:
# Build settings
$settings = (get-content -raw ".\settings.json")
$extName =  "KeyVaultForLinux"
$extPublisher = "Microsoft.Azure.KeyVault"
$extType = "KeyVaultForLinux"
 
# Start the deployment
Set-AzVmExtension -TypeHandlerVersion "3.0" -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 = (get-content -raw ".\settings.json")
    $extName = "KeyVaultForLinux"
    $extPublisher = "Microsoft.Azure.KeyVault"
    $extType = "KeyVaultForLinux"
      
    # 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 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:

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,
   "aclEnabled": true,
   "observedCertificates":
   [
      {
          "url": "https://<examplekv>.vault.azure.net/secrets/mycertificate1",
          "certificateStoreLocation":  "/var/lib/waagent/Microsoft.Azure.KeyVault.Store",
          "acls": 
          [
              {
                  "user": "app1",
                  "group": "appGroup1"
              },
              {
                  "user": "service1"
              }
          ]
      },
      {
          "url": "https://<examplekv>.vault.azure.net/secrets/mycertificate2",
          "certificateStoreLocation": "/var/lib/waagent/Microsoft.Azure.KeyVault.Store",
          "acls": 
          [
              {
                  "user": "app2"
              }
          ]
      }
   ]},
   "authenticationSettings": {
      "msiEndpoint":  "http://169.254.169.254/metadata/identity/oauth2/token",
      "msiClientId":  "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"
   }      
}

  • 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 3.0 `
      --enable-auto-upgrade true `
      --settings "@settings.json"

  • 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 3.0 `
    --enable-auto-upgrade true `
    --settings "@settings.json"

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 titkos kulcsfelhasználói szerepkörét hozzá kell rendelni a Key Vaulthoz a virtuálisgép-identitáshoz

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 helyileg léteznek a virtuális gépen, és a hibaelhárítás során a leginformatívabbak. Az opcionális naplózási szakasz használatával integrálható a naplózási szolgáltatóval a fluentd

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.