Key Vault tillägg för virtuella datorer för Linux

Tillägget Key Vault virtuell dator tillhandahåller automatisk uppdatering av certifikat som lagras i ett Azure-nyckelvalv. Mer specifikt övervakar tillägget en lista över observerade certifikat som lagras i nyckelvalv. När du identifierar en ändring hämtar och installerar tillägget motsvarande certifikat. Tillägget Key Vault virtuell dator publiceras och stöds av Microsoft, för närvarande på virtuella Linux-datorer. Det här dokumentet beskriver de plattformar, konfigurationer och distributionsalternativ som stöds för Key Vault VM-tillägget för Linux.

Operativsystem

Tillägget Key Vault stöder följande Linux-distributioner:

Anteckning

För att få utökade säkerhetsfunktioner förbereder du uppgraderingen av Ubuntu-1604- och Debian-9-system när dessa versioner når slutet av den avsedda supportperioden.

Anteckning

Den Key Vault VM-tillägget laddar ned certifikaten på standardplatsen eller till den plats som tillhandahålls av egenskapen "certStoreLocation" i inställningarna för VM-tillägget. KeyValut VM-tillägget uppdaterar mappbehörigheten till 700 (drwx------) som tillåter läs-, skriv- och körningsbehörighet till endast ägaren av mappen

Certifikatinnehållstyper som stöds

  • PKCS #12
  • PEM

Förhandsförutseningar

  • Key Vault instans med certifikat. Se Skapa en Key Vault

  • VM/VMSS måste ha tilldelats en hanterad identitet

  • Principen Key Vault åtkomst måste anges med hemligheter och behörighet för get list VM/VMSS-hanterad identitet för att hämta en hemlighets del av certifikatet. Se Autentisera för att Key Vault och Tilldela en Key Vault åtkomstprincip.

  • VMSS bör ha följande identitetsinställning: "identity": { "type": "UserAssigned", "userAssignedIdentities": { "[parameters('userAssignedIdentityResourceId')]": {} } }

  • AKV-tillägget bör ha den här inställningen: "authenticationSettings": { "msiEndpoint": "[parameters('userAssignedIdentityEndpoint')]", "msiClientId": "[reference(parameters('userAssignedIdentityResourceId'), variables('msiApiVersion')).clientId]" }

Key Vault version av VM-tillägget

  • Ubuntu-18.04- och SUSE-15-användare kan välja att uppgradera sin version av nyckelvalvs-VM-tillägget till för att få tillgång till fullständig V2.0 nedladdningsfunktion för certifikatkedjan. Utfärdarcertifikat (mellanliggande och rot) läggs till i lövcertifikatet i PEM-filen.

  • Om du föredrar att uppgradera v2.0 till måste du först ta bort och sedan installera 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

Flaggan --version 2.0 är valfri eftersom den senaste versionen installeras som standard.

  • Om den virtuella datorn har certifikat som laddats ned av v1.0 tas inte de nedladdade certifikaten bort om du tar bort tillägget v1.0 AKVVM. När du har installerat v2.0 ändras inte de befintliga certifikaten. Du skulle behöva ta bort certifikatfilerna eller återställa certifikatet för att hämta PEM-filen med en fullständig kedja på den virtuella datorn.

Tilläggsschema

Följande JSON visar schemat för Key Vault VM-tillägget. Tillägget kräver inte skyddade inställningar – alla dess inställningar betraktas som information utan att säkerheten påverkas. Tillägget kräver en lista över övervakade hemligheter, avsökningsfrekvens och målcertifikatarkiv. Specifikt:

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

Anteckning

Dina observerade certifikat-URL:er ska ha formen https://myVaultName.vault.azure.net/secrets/myCertName .

Det beror på att /secrets sökvägen returnerar det fullständiga certifikatet, inklusive den privata nyckeln, medan /certificates sökvägen inte gör det. Mer information om certifikat finns här: Key Vault certifikat

Viktigt

Egenskapen "authenticationSettings" krävs för virtuella datorer med användarautentiseringsidentiteter. Ange msiClientId till den identitet som ska autentiseras för Key Vault.

Krävs även för Azure Arc-aktiverade virtuella datorer. Ange msiEndpoint till http://localhost:40342/metadata/identity .

Egenskapsvärden

Name Värde/exempel Datatyp
apiVersion 2019-07-01 date
utgivare Microsoft.Azure.KeyVault sträng
typ KeyVaultForLinux sträng
typeHandlerVersion 2.0 int
pollingIntervalInS 3600 sträng
certificateStoreName Den ignoreras i Linux sträng
linkOnRenewal falskt boolean
certificateStoreLocation /var/lib/waagent/Microsoft.Azure.KeyVault sträng
requireInitialSync true boolean
observedCertificates ["https://myvault.vault.azure.net/secrets/mycertificate", "https://myvault.vault.azure.net/secrets/mycertificate2"] strängmatris
msiEndpoint http://169.254.169.254/metadata/identity sträng
msiClientId c7373ae5-91c2-4165-8ab6-7381d6e75619 sträng

Malldistribution

Azure VM-tillägg kan distribueras med Azure Resource Manager mallar. Mallar är idealiska när du distribuerar en eller flera virtuella datorer som kräver uppdatering av certifikat efter distributionen. Tillägget kan distribueras till enskilda virtuella datorer eller VM-skalningsuppsättningar. Schemat och konfigurationen är gemensamma för båda malltyperna.

JSON-konfigurationen för ett tillägg för en virtuell dator måste kapslas inuti mallens resursfragment för virtuella datorer, särskilt objektet för mallen för virtuella datorer och vid VM-skalningsuppsättning "resources": [] under "virtualMachineProfile":"extensionProfile":{"extensions" :[] -objektet.

Anteckning

VM-tillägget kräver att system- eller användar hanterad identitet tilldelas för att autentisera till Key Vault. Se Så här autentiserar du för Key Vault och tilldelar en Key Vault åtkomstprincip.

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

Beroendeordning för tillägg

Tillägget Key Vault stöder tilläggsordning om det har konfigurerats. Som standard rapporterar tillägget att det har startats så snart avsökning har påbörjats. Den kan dock konfigureras att vänta tills den har hämtat den fullständiga listan över certifikat innan en lyckad start har rapporterats. Om andra tillägg är beroende av att den fullständiga uppsättningen certifikat installeras innan de startas kan tillägget deklarera ett beroende på det Key Vault tillägget om du aktiverar den här inställningen. Detta förhindrar att dessa tillägg startar förrän alla certifikat som de är beroende av har installerats. Tillägget gör ett nytt försök att ladda ned på obestämd tid och förblir i ett Transitioning tillstånd.

Om du vill aktivera det här anger du följande:

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

[Obs] Den här funktionen är inte kompatibel med en ARM-mall som skapar en system tilldelad identitet och uppdaterar en Key Vault åtkomstprincip med den identiteten. Om du gör det resulterar det i ett dödläge eftersom valvåtkomstprincipen inte kan uppdateras förrän alla tillägg har startats. Du bör i stället använda en enda användar tilldelad MSI-identitet och en förhands-ACL för dina valv med den identiteten innan du distribuerar.

Azure PowerShell distribution

Varning

PowerShell-klienter lägger \ ofta " till i settings.json, vilket akvvm_service misslyckas med felet: [CertificateManagementConfiguration] Failed to parse the configuration settings with:not an object.

Den Azure PowerShell kan användas för att distribuera Key Vault VM-tillägget till en befintlig virtuell dator eller VM-skalningsuppsättning.

  • Så här distribuerar du tillägget på en virtuell dator:

        # 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
    
    
  • Så här distribuerar du tillägget på en VM-skalningsuppsättning:

    
        # 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 
    
    

Azure CLI-distribution

Azure CLI kan användas för att distribuera Key Vault vm-tillägget till en befintlig virtuell dator eller VM-skalningsuppsättning.

  • Så här distribuerar du tillägget på en virtuell dator:

       # 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> \"] }}'
    
  • Så här distribuerar du tillägget på en VM-skalningsuppsättning:

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

Tänk på följande begränsningar/krav:

  • Key Vault begränsningar:

Felsökning och support

Data om tillståndet för tilläggsdistributioner kan hämtas från Azure Portal och med hjälp av Azure PowerShell. Om du vill se distributionstillståndet för tillägg för en viss virtuell dator kör du följande kommando med hjälp av 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"

Loggar och konfiguration

De Key Vault vm-tilläggsloggarna finns bara lokalt på den virtuella datorn och är mest informativa när det gäller felsökning.

Location Beskrivning
/var/log/waagent.log Visar när en uppdatering av tillägget inträffade.
/var/log/azure/Microsoft.Azure.KeyVault.KeyVaultForLinux/* Granska loggarna Key Vault VM-tillägget för att fastställa status för akvvm_service och certifikathämtning. Nedladdningsplatsen för PEM-filer finns också i dessa filer med en post som kallas certifikatfilnamn. Om certificateStoreLocation inte anges används som standard /var/lib/waagent/Microsoft.Azure.KeyVault.Store/
/var/lib/waagent/Microsoft.Azure.KeyVault.KeyVaultForLinux- <most recent version> /config/* Konfiguration och binärfiler för Key Vault VM Extension-tjänsten.

Symboliska länkar eller Symlinks är i princip avancerade genvägar. För att undvika att övervaka mappen och hämta det senaste certifikatet automatiskt kan du använda den här symlinken för att hämta den ([VaultName].[CertificateName]) senaste versionen av certifikatet på Linux.

Vanliga frågor och svar

  • Finns det en gräns för hur många observeradecertificates som du kan konfigurera? Nej, Key Vault vm-tillägget har ingen gräns för antalet observeradecertificates.

Support

Om du behöver mer hjälp när som helst i den här artikeln kan du kontakta Azure-experter på MSDN Azureoch Stack Overflow forumen . Du kan också skapa en Azure-supportincident. Gå till Azure-supportwebbplatsen och välj Få support. Information om hur du använder Azure Support finns i vanliga Microsoft Azure vanliga frågor och svar om support.