Key Vault rozšíření virtuálního počítače pro Linux

Rozšíření Key Vault virtuálních počítačů poskytuje automatickou aktualizaci certifikátů uložených ve službě Azure Key Vault. Rozšíření konkrétně monitoruje seznam pozorovaných certifikátů uložených v trezorech klíčů. Rozšíření načte a nainstaluje odpovídající certifikáty po zjištění změny. Rozšíření Key Vault virtuálních počítačů publikuje a podporuje Microsoft, v současné době na virtuálních počítačích s Linuxem. Tento dokument podrobně popisuje podporované platformy, konfigurace a možnosti nasazení rozšíření Key Vault virtuálních počítačů pro Linux.

Operační systém

Rozšíření Key Vault virtuálních počítačů podporuje tyto linuxové distribuce:

Poznámka

Rozšíření Key Vault virtuálního počítače stáhne certifikáty ve výchozím umístění nebo do umístění poskytnutého vlastností certStoreLocation v nastavení rozšíření virtuálního počítače. Rozšíření Key Vault virtuálního počítače aktualizuje oprávnění ke složce na 700 (drwx------), což umožňuje oprávnění ke čtení, zápisu a spouštění pouze pro vlastníka složky.

Podporované typy obsahu certifikátů

  • PKCS č. 12
  • PEM

Požadavky

  • Key Vault instanci s certifikátem. Viz Vytvoření Key Vault.

  • Virtuální počítač nebo škálovací sada virtuálních počítačů musí mít přiřazenou spravovanou identitu.

  • Zásady Key Vault přístupu musí být nastaveny s tajnými kódy get a list oprávněními pro identitu spravovanou virtuálním počítačem nebo VMSS, aby načetla část certifikátu tajného kódu. Viz Postup ověřování pro Key Vault a Přiřazení zásad Key Vault přístupu.

  • Škálovací sada virtuálních počítačů by měla mít následující nastavení identity: "identity": { "type": "UserAssigned", "userAssignedIdentities": { "[parameters('userAssignedIdentityResourceId')]": {} } }

  • Rozšíření AKV by mělo mít toto nastavení: "authenticationSettings": { "msiEndpoint": "[parameters('userAssignedIdentityEndpoint')]", "msiClientId": "[reference(parameters('userAssignedIdentityResourceId'), variables('msiApiVersion')).clientId]" }

verze rozšíření Key Vault virtuálního počítače

  • Uživatelé můžou upgradovat verzi rozšíření Key Vault virtuálního počítače naV2.0, aby mohli používat funkci stažení úplného řetězu certifikátů. Certifikáty vystavitele (zprostředkující a kořenové) se připojí k listovém certifikátu v souboru PEM.

  • Pokud dáváte přednost upgradu na v2.0, musíte nejprve odstranit v1.0 a pak nainstalovat v2.0.

  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

Příznak --version 2.0 je volitelný, protože ve výchozím nastavení se nainstaluje nejnovější verze.

  • Pokud má virtuální počítač certifikáty stažené pomocí verze 1.0, odstraněním rozšíření AKVVM verze 1.0 se stažené certifikáty neodstraní. Po instalaci verze 2.0 nebudou stávající certifikáty změněny. Pokud chcete na virtuálním počítači získat soubor PEM s úplným řetězem, budete muset odstranit soubory certifikátů nebo certifikát převést.

Schéma rozšíření

Následující kód JSON ukazuje schéma pro rozšíření Key Vault virtuálního počítače. Rozšíření nevyžaduje chráněné nastavení – všechna jeho nastavení jsou považována za informace bez dopadu na zabezpečení. Rozšíření vyžaduje seznam monitorovaných tajných kódů, frekvenci dotazování a cílové úložiště certifikátů. Konkrétně se jedná o tyto:

    {
      "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 is 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".>
        }
       }
      }
    }

Poznámka

Adresy URL pozorovaných certifikátů by měly být ve formátu https://myVaultName.vault.azure.net/secrets/myCertName.

Důvodem je to, že /secrets cesta vrátí úplný certifikát včetně privátního /certificates klíče, zatímco cesta ne. Další informace o certifikátech najdete tady: Key Vault certifikáty.

Důležité

Vlastnost authenticationSettings se vyžaduje pro virtuální počítače s libovolnými identitami přiřazenými uživatelem. I když chcete použít identitu přiřazenou systémem, je to stále nutné, jinak rozšíření virtuálního počítače nebude vědět, kterou identitu použít. Bez této části způsobí virtuální počítač s identitami přiřazenými uživatelem selhání rozšíření Key Vault a nebude možné stáhnout certifikáty. MsiClientId nastavte na identitu, která se bude ověřovat Key Vault.

Vyžaduje se také pro virtuální počítače s podporou Azure Arc. Nastavte msiEndpoint na http://localhost:40342/metadata/identity.

Hodnoty vlastností

Name Hodnota / příklad Typ dat
apiVersion 2022-07-01 date
vydavatel Microsoft.Azure.KeyVault řetězec
typ KeyVaultForLinux řetězec
typeHandlerVersion 2.0 int
pollingIntervalInS 3600 řetězec
název_úložiště certifikátu V Linuxu se ignoruje. řetězec
linkOnRenewal false (nepravda) boolean
certificateStoreLocation /var/lib/waagent/Microsoft.Azure.KeyVault.Store řetězec
requireInitialSync true boolean
observedCertificates ["https://myvault.vault.azure.net/secrets/mycertificate", "https://myvault.vault.azure.net/secrets/mycertificate2"] pole řetězců
msiEndpoint http://169.254.169.254/metadata/identity řetězec
msiClientId c7373ae5-91c2-4165-8ab6-7381d6e75619 řetězec

Nasazení šablon

Rozšíření virtuálních počítačů Azure je možné nasadit pomocí šablon Azure Resource Manager. Šablony jsou ideální při nasazování 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 škálovací sady virtuálních počítačů. Schéma a konfigurace jsou společné pro oba typy šablon.

Konfigurace JSON pro rozšíření virtuálního počítače musí být vnořená do fragmentu prostředku virtuálního počítače šablony, konkrétně "resources": [] objektu pro šablonu virtuálního počítače a pro škálovací sadu virtuálních počítačů v rámci "virtualMachineProfile":"extensionProfile":{"extensions" :[] objektu.

Poznámka

Rozšíření virtuálního počítače by vyžadovalo přiřazení identity spravované systémem nebo uživatelem k ověření ke službě Key Vault. Viz Postup ověření Key Vault a přiřazení zásad Key Vault přístupu.

    {
      "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"
        }      
      }
      }
    }

Řazení závislostí rozšíření

Rozšíření Key Vault virtuálního počítače podporuje řazení rozšíření, pokud je nakonfigurované. Rozšíření ve výchozím nastavení hlásí, že se úspěšně spustilo hned po spuštění dotazování. Můžete ho ale nakonfigurovat tak, aby před nahlášeným úspěšným spuštěním počkalo na úspěšné stažení úplného seznamu certifikátů. Pokud jiná rozšíření závisejí na tom, že mají před spuštěním nainstalovanou úplnou sadu certifikátů, povolením tohoto nastavení umožníte těmto rozšířením deklarovat závislost na rozšíření Key Vault. To zabrání spuštění těchto rozšíření, dokud nebudou nainstalovány všechny certifikáty, na kterých závisí. Rozšíření se bude po neomezenou dobu opakovat počáteční stažení a zůstane ve Transitioning stavu .

Pokud chcete zapnout závislost rozšíření, nastavte následující:

"secretsManagementSettings": {
    "requireInitialSync": true,
    ...
}

[Poznámka] Použití této funkce není kompatibilní se šablonou ARM, která vytvoří identitu přiřazenou systémem a aktualizuje zásady Key Vault přístupu s touto identitou. Pokud to uděláte, dojde k vzájemnému zablokování, protože zásady přístupu k trezoru nebude možné aktualizovat, dokud se nesvedou všechna rozšíření. Před nasazením byste místo toho měli použít identitu MSI přiřazenou jedním uživatelem a předběžné seznamy ACL trezorů s danou identitou.

Azure PowerShell nasazení

Upozornění

Klienti PowerShellu se často přidávají \ do " souboru settings.json, což způsobí akvvm_service selhání s chybou: [CertificateManagementConfiguration] Failed to parse the configuration settings with:not an object.

Azure PowerShell můžete použít k nasazení rozšíření Key Vault virtuálního počítače do existujícího virtuálního počítače nebo škálovací sady virtuálních počítačů.

  • Nasazení rozšíření na virtuální počítač:

        # 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
    
    
  • Nasazení rozšíření ve škálovací sadě virtuálních počítačů:

    
        # 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 
    

Nasazení v Azure CLI

Azure CLI je možné použít k nasazení rozšíření Key Vault virtuálního počítače do existujícího virtuálního počítače nebo škálovací sady virtuálních počítačů.

  • Nasazení rozšíření na virtuální počítač:

       # 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> \"] }}'
    
  • Nasazení rozšíření ve škálovací sadě virtuálních počítačů:

          # 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> \"] }}'
    

Mějte na paměti následující omezení a požadavky:

Řešení potíží a podpora

Data o stavu nasazení rozšíření je možné načíst z Azure Portal a pomocí Azure PowerShell. Pokud chcete zobrazit stav nasazení rozšíření pro daný virtuální počítač, spusťte pomocí Azure PowerShell následující příkaz.

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"

Azure CLI může běžet v několika prostředích prostředí, ale s malými variacemi formátu. Pokud příkazy Azure CLI mají neočekávané výsledky, přečtěte si téma Úspěšné použití Azure CLI.

Protokoly a konfigurace

Protokoly rozšíření Key Vault virtuálních počítačů existují jenom místně na virtuálním počítači a při řešení potíží jsou nejinformativnější.

Umístění Popis
/var/log/waagent.log Zobrazuje, kdy došlo k aktualizaci rozšíření.
/var/log/azure/Microsoft.Azure.KeyVault.KeyVaultForLinux/* Zkontrolujte protokoly služby rozšíření Key Vault virtuálních počítačů a zjistěte stav stažení akvvm_service služby a certifikátu. Umístění ke stažení souborů PEM se také nachází v těchto souborech s položkou název souboru certifikátu. Pokud není zadána hodnota certificateStoreLocation, použije se výchozí hodnota /var/lib/waagent/Microsoft.Azure.KeyVault.Store/
/var/lib/waagent/Microsoft.Azure.KeyVault.KeyVaultForLinux-nejnovější< verze>/config/* Konfigurace a binární soubory pro službu rozšíření Key Vault virtuálních počítačů.

Symbolické odkazy nebo Symlinky jsou pokročilé klávesové zkratky. Pokud chcete zabránit monitorování složky a získat nejnovější certifikát automaticky, můžete pomocí tohoto odkazu ([VaultName].[CertificateName]) získat nejnovější verzi certifikátu v Linuxu.

Nejčastější dotazy

  • Existuje omezení počtu pozorovanýchcertifikátů, které můžete nastavit? Ne, Key Vault rozšíření virtuálního počítače nemá omezení počtu pozorovaných certifikátů.

Podpora

Pokud budete kdykoli potřebovat další pomoc v tomto článku, můžete kontaktovat odborníky na Azure na fórech MSDN Azure a Stack Overflow. Případně můžete zakládaný podpora Azure incident. Přejděte na web podpora Azure a vyberte Získat podporu. Informace o používání podpory Azure najdete v nejčastějších dotazech k Microsoftu podpora Azure.