Key Vault virtuálního počítače pro Linux

Rozšíření Key Vault virtuálního počítače poskytuje automatickou aktualizaci certifikátů uložených v trezoru klíčů Azure. Konkrétně rozšíření monitoruje seznam zjištěných certifikátů uložených v trezorech klíčů. Při zjištění změny rozšíření načte a nainstaluje odpovídající certifikáty. Rozšíření Key Vault virtuálních počítačů je publikované a podporované Microsoftem, aktuálně na virtuálních počítači s Linuxem. Tento dokument podrobně obsahuje informace o podporovaných platformách, konfiguracích a možnostech nasazení Key Vault virtuálního počítače pro Linux.

Operační systém

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

Poznámka

Pokud chcete získat rozšířené funkce zabezpečení, připravte se na upgrade systémů Ubuntu-1604 a Debian-9, protože tyto verze končí určeným obdobím podpory.

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í, které poskytuje vlastnost certStoreLocation v nastavení rozšíření virtuálního počítače. Rozšíření virtuálního počítače KeyValut 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 vlastníkovi složky.

Podporované typy obsahu certifikátů

  • PKCS č. 12
  • PEM

Předpoklady

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

  • Virtuální počítač nebo VMSS musí mít přiřazenou spravovanou identitu

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

  • VMSS 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]" }

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

  • Uživatelé Ubuntu-18.04 a SUSE-15 se rozhodli upgradovat verzi rozšíření virtuálního počítače trezoru klíčů tak, aby využili úplnou funkci stahování V2.0 řetězu certifikátů. Certifikáty vystavitele (zprostředkující a kořenové) se připojí k listovým (koncovému) certifikátu v souboru PEM.

  • Pokud chcete upgradovat na , musíte nejprve odstranit a v2.0 pak nainstalovat v1.0 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 nejnovější verze se nainstaluje ve výchozím nastavení.

  • Pokud virtuální počítač obsahuje certifikáty stažené pomocí v1.0, odstraněním rozšíření AKVVM v1.0 se Stažené certifikáty ODSTRANÍ. Po instalaci v2.0 se stávající certifikáty NEUPRAVÍ. Pokud chcete získat soubor PEM s úplným řetězem na virtuálním počítači, budete muset odstranit soubory certifikátů nebo ho přehánět.

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í se považují za informace bez dopadu na zabezpečení. Rozšíření vyžaduje seznam monitorovaných tajných kódů, četnost dotazování a cílové úložiště certifikátů. Konkrétně se jedná o tyto:

    {
      "type": "Microsoft.Compute/virtualMachines/extensions",
      "name": "KVVMExtensionForLinux",
      "apiVersion": "2019-07-01",
      "location": "<location>",
      "dependsOn": [
          "[concat('Microsoft.Compute/virtualMachines/', <vmName>)]"
      ],
      "properties": {
      "publisher": "Microsoft.Azure.KeyVault",
      "type": "KeyVaultForLinux",
      "typeHandlerVersion": "2.0",
      "autoUpgradeMinorVersion": 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":  <Optional MSI endpoint e.g.: "http://169.254.169.254/metadata/identity">,
                "msiClientId":  <Optional MSI identity e.g.: "c7373ae5-91c2-4165-8ab6-7381d6e75619">
        }
       }
      }
    }

Poznámka

Zjištěné adresy URL certifikátů by měly mít tvar https://myVaultName.vault.azure.net/secrets/myCertName .

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

Důležité

Pro virtuální počítače s identitami přiřazenými uživatelem se vyžaduje vlastnost authenticationSettings. Nastavte msiClientId na identitu, která se bude ověřovat Key Vault.

Vyžaduje se také Azure Arc virtuálních počítače s povoleným přístupem. Nastavte msiEndpoint na http://localhost:40342/metadata/identity .

Hodnoty vlastností

Name Hodnota / příklad Typ dat
apiVersion 2019-07-01 date
vydavatel Microsoft.Azure.KeyVault řetězec
typ KeyVaultForLinux řetězec
typeHandlerVersion 2.0 int
pollingIntervalInS 3600 řetězec
certificateStoreName V Linuxu se ignoruje. řetězec
linkOnRenewal false (nepravda) boolean
certificateStoreLocation /var/lib/waagent/Microsoft.Azure.KeyVault ř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če Azure je možné nasadit pomocí Azure Resource Manager šablon. Š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í. Toto 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ě objektu pro šablonu virtuálního počítače a v případě škálovací sady virtuálních "resources": [] počítačů v rámci objektu "virtualMachineProfile":"extensionProfile":{"extensions" :[] .

Poznámka

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

    {
      "type": "Microsoft.Compute/virtualMachines/extensions",
      "name": "KeyVaultForLinux",
      "apiVersion": "2019-07-01",
      "location": "<location>",
      "dependsOn": [
          "[concat('Microsoft.Compute/virtualMachines/', <vmName>)]"
      ],
      "properties": {
      "publisher": "Microsoft.Azure.KeyVault",
      "type": "KeyVaultForLinux",
      "typeHandlerVersion": "2.0",
      "autoUpgradeMinorVersion": 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é. Ve výchozím nastavení rozšíření hlásí, že se úspěšně zahájilo ihned po zahájení dotazování. Můžete ho ale nakonfigurovat tak, aby před oznámením úspěšného spuštění počkal na úspěšné stažení kompletního seznamu certifikátů. Pokud ostatní rozšíření závisí na instalaci úplné sady certifikátů před jejich zahájením, povolení tohoto nastavení umožní deklarovat závislost na rozšíření Key Vault rozšíření. Zabráníte tak spuštění těchto rozšíření, dokud nebudou nainstalovány všechny certifikáty, na které jsou závislé. Rozšíření bude pokus o počáteční stažení opakovat po neomezenou dobu a zůstane ve Transitioning stavu .

Pokud chcete toto nastavení zapnout, 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 Key Vault přístupu s touto identitou. Výsledkem bude zablokování, protože zásady přístupu k trezoru není možné aktualizovat, dokud se nezačala všechna rozšíření. Místo toho byste měli před nasazením použít jednu identitu MSI přiřazenou uživatelem a před seznamem ACL trezory s tuto identitou.

Azure PowerShell nasazení

Upozornění

Klienti PowerShellu č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.

Pomocí Azure PowerShell můžete nasadit rozšíření virtuálního 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" -ResourceGroupName <ResourceGroupName> -Location <Location> -VMName <VMName> -Name $extName -Publisher $extPublisher -Type $extType -SettingString $settings
    
    
  • Nasazení rozšíření do škálovací sady 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" -Setting $settings
    
        # Start the deployment
        Update-AzVmss -ResourceGroupName <ResourceGroupName> -VMScaleSetName <VmssName> -VirtualMachineScaleSet $vmss 
    
    

Nasazení Azure CLI

Azure CLI můžete použít k nasazení rozšíření virtuálního 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 `
         --settings '{\"secretsManagementSettings\": { \"pollingIntervalInS\": \"<pollingInterval>\", \"certificateStoreName\": \"<certStoreName>\", \"certificateStoreLocation\": \"<certStoreLoc>\", \"observedCertificates\": [\" <observedCert1> \", \" <observedCert2> \"] }}'
    
  • Nasazení rozšíření do škálovací sady 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 `
          --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í lze načíst z Azure Portal a pomocí Azure PowerShell. Pokud chcete zobrazit stav nasazení rozšíření pro daný virtuální počítač, spusťte následující příkaz pomocí Azure PowerShell.

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"

Protokoly a konfigurace

Protokoly Key Vault virtuálního počítače existují pouze místně na virtuálním počítači a jsou nej informativnější, pokud jde o řešení potíží.

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 Key Vault služby rozšíření virtuálního počítače a zjistěte stav služby akvvm_service stažení certifikátu. Umístění souborů PEM ke stažení najdete také v těchto souborech s záznamem s názvem název souboru certifikátu. Pokud certificateStoreLocation nezadáte, výchozí hodnota bude /var/lib/waagent/Microsoft.Azure.KeyVault.Store/
/var/lib/waagent/Microsoft.Azure.KeyVault.KeyVaultForLinux- <most recent version> /config/* Konfigurace a binární soubory pro Key Vault rozšíření virtuálního počítače.

Symbolické odkazy nebo symbolické odkazy jsou v podstatě pokročilé zkratky. Pokud se chcete vyhnout monitorování složky a automatickému získání nejnovějšího certifikátu, můžete pomocí tohoto symlinku získat nejnovější ([VaultName].[CertificateName]) verzi certifikátu v Linuxu.

Nejčastější dotazy

  • Existuje limit počtu zjištěnýchcertifikátů, které můžete nastavit? Ne, Key Vault virtuálního počítače nemá omezení počtu zjištěnýchcertifikátů.

Podpora

Pokud kdykoli v tomto článku potřebujete další pomoc, můžete se obrátit na odborníky na Azure na webu MSDN Azure a na Stack Overflow fóra. Další možností je vytvořit podpora Azure incident. Přejděte na podpora Azure a vyberte Získat podporu. Informace o používání služby Podpora Azure najdete v nejčastějších dotazech Microsoft Azure podpory.