Udostępnij za pośrednictwem


Rozszerzenie usługi Key Vault dla maszyny wirtualnej z systemem Linux

Rozszerzenie maszyny wirtualnej usługi Key Vault zapewnia automatyczne odświeżanie certyfikatów przechowywanych w magazynie kluczy platformy Azure. W szczególności rozszerzenie monitoruje listę obserwowanych certyfikatów przechowywanych w magazynach kluczy. Rozszerzenie pobiera i instaluje odpowiednie certyfikaty po wykryciu zmiany. Ten dokument zawiera szczegółowe informacje o obsługiwanych platformach, konfiguracjach i opcjach wdrażania rozszerzenia maszyny wirtualnej usługi Key Vault dla systemu Linux.

System operacyjny

Rozszerzenie Key Vault dla maszyny wirtualnej obsługuje:

Obsługiwane typy zawartości certyfikatów

  • PKCS #12
  • PEM

Funkcje

Rozszerzenie Key Vault dla maszyn wirtualnych z systemem Linux w wersji 3.0 lub nowszej obsługuje:

  • Dodawanie uprawnień listy ACL dla pobranych certyfikatów w celu zapewnienia dostępu do odczytu dla użytkowników i grup
  • Konfiguracja lokalizacji instalacji certyfikatu
  • Obsługa niestandardowych nazw symbolicznych
  • Obsługa integracji rejestrowania rozszerzeń maszyn wirtualnych za pośrednictwem usługi Fluentd

Wymagania wstępne

  • Instancja usługi Key Vault z certyfikatem. Zobacz Tworzenie usługi Key Vault

  • Przypisana tożsamość zarządzana na maszynach wirtualnych/zestawach skalowania maszyn wirtualnych.

  • Rola Użytkownika tajemnic usługi Key Vault na poziomie zakresu Key Vault dla maszyn wirtualnych oraz zestawów skal Azure Virtual Machine Scale Sets z zarządzaną tożsamością. Ta rola pobiera tajną część certyfikatu. Aby uzyskać więcej informacji, zobacz następujące artykuły:

  • Zestawy skalowania maszyn wirtualnych powinny mieć następujące ustawienie tożsamości: "identity": { "type": "UserAssigned", "userAssignedIdentities": { "[parameters('userAssignedIdentityResourceId')]": {} } }

  • Rozszerzenie AKV powinno mieć to ustawienie: "authenticationSettings": { "msiEndpoint": "[parameters('userAssignedIdentityEndpoint')]", "msiClientId": "[reference(parameters('userAssignedIdentityResourceId'), variables('msiApiVersion')).clientId]" }

Aktualizacja rozszerzenia maszyny wirtualnej Azure Key Vault

  • Jeśli musisz uaktualnić starszą wersję do wersji 3.0 lub nowszej, najpierw musisz usunąć poprzednią wersję, a następnie zainstalować wersję 3.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 3.0
  • Jeśli maszyna wirtualna ma certyfikaty pobrane przez poprzednią wersję, usunięcie rozszerzenia maszyny wirtualnej nie spowoduje usunięcia pobranych certyfikatów. Po zainstalowaniu nowszej wersji istniejące certyfikaty nie są modyfikowane. Aby uzyskać plik PEM z pełnym łańcuchem na maszynie wirtualnej, należy usunąć pliki certyfikatu lub przerzucić go.

Schemat rozszerzenia

Poniższy kod JSON zawiera schemat rozszerzenia maszyny wirtualnej usługi Key Vault. Wszystkie ustawienia są określane jako zwykłe (niechronione), ponieważ żadne z nich nie są traktowane jako poufne. Aby skonfigurować rozszerzenie, należy określić listę certyfikatów do monitorowania, częstotliwość sondowania pod kątem aktualizacji oraz ścieżkę docelową do przechowywania certyfikatów. Specyficznie:

    {
      "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.: "00001111-aaaa-2222-bbbb-3333cccc4444".>
        }>
       }
      }
    }

Uwaga

Obserwowane adresy URL certyfikatów powinny mieć postać https://myVaultName.vault.azure.net/secrets/myCertName.

Jest to spowodowane tym, że /secrets ścieżka zwraca pełny certyfikat, w tym klucz prywatny, a /certificates ścieżka nie. Więcej informacji na temat certyfikatów można znaleźć tutaj: Certyfikaty usługi Key Vault

Ważne

Właściwość "authenticationSettings" jest wymagana dla maszyn wirtualnych z dowolnymi tożsamościami przypisanymi przez użytkownika. Nawet jeśli chcesz użyć tożsamości przypisanej przez system, nadal jest to wymagane. W przeciwnym razie rozszerzenie maszyny wirtualnej nie wie, której tożsamości użyć. Bez tej sekcji maszyna wirtualna z tożsamościami przypisanymi przez użytkownika spowoduje niepowodzenie rozszerzenia usługi Key Vault i brak możliwości pobrania certyfikatów. Ustaw wartość msiClientId na tożsamość, która będzie uwierzytelniana w usłudze Key Vault.

Wymagane również dla maszyn wirtualnych z obsługą usługi Azure Arc. Ustaw wartość msiEndpoint na http://localhost:40342/metadata/identity.

Wartości właściwości

Nazwa Wartość / przykład Typ danych
apiVersion 2022-07-01 termin
publisher Microsoft.Azure.KeyVault sznurek
type KeyVaultForLinux sznurek
typeHandlerVersion 3.0 Int
pollingIntervalInS 3600 sznurek
certificateStoreName Jest on ignorowany w systemie Linux sznurek
linkOnRenewal fałszywy typ logiczny (boolowski)
requireInitialSync prawda typ logiczny (boolowski)
aclEnabled prawda typ logiczny (boolowski)
certificateStoreLocation /var/lib/waagent/Microsoft.Azure.KeyVault.Store sznurek
observedCertificates [{...}, {...}] tablica ciągów
observedCertificates/url "https://myvault.vault.azure.net/secrets/mycertificate1" sznurek
observedCertificates/certificateStoreLocation "/var/lib/waagent/Microsoft.Azure.KeyVault/app1" sznurek
observedCertificates/customSymbolicLinkName (opcjonalny) app1Cert1 sznurek
observedCertificates/acls (opcjonalny) "{...}, {...}" tablica ciągów
authenticationSettings (opcjonalny) {...} przedmiot
authenticationSettings/msiEndpoint http://169.254.169.254/metadata/identity sznurek
authenticationSettings/msiClientId 00001111-aaaa-2222-bbbb-3333cccc44444 sznurek
loggingSettings (opcjonalny) {...} przedmiot
loggingSettings/logger "Fluentd" sznurek
loggingSettings/endpoint "tcp://localhost:24224" sznurek
loggingSettings/format "do przodu" sznurek
loggingSettings/servicename "akvvm_service" sznurek

Wdrażanie szablonu

Rozszerzenia maszyn wirtualnych platformy Azure można wdrażać za pomocą szablonów usługi Azure Resource Manager. Szablony są idealne podczas wdrażania co najmniej jednej maszyny wirtualnej, które wymagają po wdrożeniu odświeżania certyfikatów. Rozszerzenie można wdrożyć na poszczególnych maszynach wirtualnych lub w zestawach skalowania maszyn wirtualnych. Schemat i konfiguracja są wspólne dla obu typów szablonów.

Uwaga

Rozszerzenie maszyny wirtualnej wymagałoby przypisania tożsamości zarządzanej przez system lub użytkownika w celu uwierzytelnienia w magazynie kluczy. Zobacz Jak uwierzytelniać się w usłudze Key Vault i przypisywać zasady dostępu usługi Key Vault.

   {
      "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.: "00001111-aaaa-2222-bbbb-3333cccc4444">
          }
        } 
      }
    }

Kolejność zależności rozszerzenia

Rozszerzenia Key Vault dla maszyn wirtualnych obsługują kolejność rozszerzeń, jeśli zostaną skonfigurowane. Domyślnie rozszerzenie zgłasza pomyślny start, gdy tylko rozpocznie się odpytywanie. Można jednak skonfigurować ją tak, aby czekała, aż pomyślnie pobierze pełną listę certyfikatów przed raportowaniem pomyślnego uruchomienia. Jeśli inne rozszerzenia zależą od zainstalowanych certyfikatów przed rozpoczęciem, włączenie tego ustawienia umożliwi tym rozszerzeń zadeklarowanie zależności od rozszerzenia usługi Key Vault. Uniemożliwi to uruchamianie tych rozszerzeń do momentu zainstalowania wszystkich certyfikatów, od których zależą.

Rozszerzenie ponowi próbę początkowego pobrania do 25 razy z rosnącymi okresami opóźnienia, podczas których pozostaje w Transitioning stanie. Jeśli ponawianie prób zostanie wyczerpane, rozszerzenie zgłosi Error stan.

Aby włączyć zależność rozszerzenia, ustaw następujące ustawienia:

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

Uwaga

Użycie tej funkcji nie jest zgodne z szablonem usługi ARM, który tworzy tożsamość przypisaną przez system i aktualizuje zasady dostępu usługi Key Vault za pomocą tej tożsamości. Spowoduje to zakleszczenie, ponieważ zasady dostępu do magazynu nie zostaną zaktualizowane do momentu uruchomienia wszystkich rozszerzeń. Zamiast tego powinieneś użyć pojedynczej tożsamości MSI przypisanej do użytkownika i skonfigurować wstępnie listy ACL w swoich magazynach przy użyciu tej tożsamości przed wdrożeniem.

Wdrażanie programu Azure PowerShell

Ostrzeżenie

Użytkownicy PowerShell często dodają \ do " w pliku settings.json, co spowoduje, że akvvm_service zakończy się błędem: [CertificateManagementConfiguration] Failed to parse the configuration settings with:not an object.

Za pomocą Azure PowerShell można wdrożyć rozszerzenie Key Vault dla maszyn wirtualnych na istniejącej maszynie wirtualnej lub zestawie skalowania maszyn wirtualnych.

  • Aby wdrożyć rozszerzenie na maszynie wirtualnej:

Rozszerzenie maszyny wirtualnej usługi Azure Key Vault można wdrożyć za pomocą programu Azure PowerShell. Zapisz ustawienia rozszerzenia maszyny wirtualnej usługi Key Vault w pliku JSON (settings.json).

Poniższe fragmenty kodu JSON zawierają przykładowe ustawienia wdrażania rozszerzenia maszyny wirtualnej usługi Key Vault za pomocą programu PowerShell.

{
   "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"
   }      
}
  • Aby wdrożyć rozszerzenie na maszynie wirtualnej:
# 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

  • Aby wdrożyć rozszerzenie w zestawie skalowania maszyn wirtualnych:
    # 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 

Wdrożenie za pomocą CLI platformy Azure

Azure CLI może służyć do wdrażania rozszerzenia maszyny wirtualnej Key Vault do istniejącej maszyny wirtualnej lub zestawu skalowania maszyn wirtualnych.

  • Aby wdrożyć rozszerzenie na maszynie wirtualnej:

Rozszerzenie VM usługi Azure Key Vault można wdrożyć przy użyciu interfejsu wiersza polecenia platformy Azure. Zapisz ustawienia rozszerzenia maszyny wirtualnej usługi Key Vault w pliku JSON (settings.json).

Poniższe fragmenty kodu JSON zawierają przykładowe ustawienia wdrażania rozszerzenia maszyny wirtualnej usługi Key Vault przy użyciu interfejsu wiersza polecenia platformy Azure.

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

  • Aby wdrożyć rozszerzenie na maszynie wirtualnej

    # 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"

  • Aby wdrożyć rozszerzenie w zestawie skalowania maszyn wirtualnych:
    # 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"

Należy pamiętać o następujących ograniczeniach/wymaganiach:

  • Ograniczenia usługi Key Vault:
    • Musi istnieć w momencie wdrożenia
    • Rola Użytkownika wpisów tajnych usługi Key Vault musi być przypisana do usługi Key Vault na potrzeby tożsamości maszyny wirtualnej

Rozwiązywanie problemów i pomoc techniczna

Dane dotyczące stanu wdrożeń rozszerzeń można pobrać z witryny Azure Portal i przy użyciu programu Azure PowerShell. Aby wyświetlić stan wdrożenia rozszerzeń dla danej maszyny wirtualnej, uruchom następujące polecenie przy użyciu programu Azure PowerShell.

Azure PowerShell

Get-AzVMExtension -VMName <vmName> -ResourceGroupname <resource group name>

Interfejs wiersza polecenia platformy Azure

 az vm get-instance-view --resource-group <resource group name> --name  <vmName> --query "instanceView.extensions"

Interfejs wiersza poleceń platformy Azure może działać w kilku środowiskach powłoki, ale z drobnymi różnicami w formacie. Jeśli masz nieoczekiwane wyniki za pomocą poleceń interfejsu wiersza polecenia platformy Azure, zobacz Jak pomyślnie używać interfejsu wiersza polecenia platformy Azure.

Dzienniki i konfiguracja

Dzienniki rozszerzenia maszyny wirtualnej usługi Key Vault istnieją lokalnie na maszynie wirtualnej i są najbardziej informacyjne, jeśli chodzi o rozwiązywanie problemów. Możesz użyć opcjonalnej sekcji logowania, aby zintegrować się z dostawcą usług logowania za pośrednictwem fluentd

Lokalizacja Opis
/var/log/waagent.log Pokazuje, kiedy wystąpiła aktualizacja rozszerzenia.
/var/log/azure/Microsoft.Azure.KeyVault.KeyVaultForLinux/* Sprawdź dzienniki usługi rozszerzenia VM Key Vault, aby określić status usługi akvvm_service oraz stan pobierania certyfikatu. Lokalizację pobierania plików PEM można znaleźć w plikach z wpisem o nazwie nazwa pliku certyfikatu. Jeśli parametr certificateStoreLocation nie zostanie określony, wartość domyślna to /var/lib/waagent/Microsoft.Azure.KeyVault.Store/
/var/lib/waagent/Microsoft.Azure.KeyVault.KeyVaultForLinux-najnowsza< wersja>/config/* Konfiguracja i pliki binarne rozszerzenia maszyny wirtualnej Key Vault.

Linki symboliczne to zaawansowane skróty. Aby uniknąć automatycznego monitorowania folderu i pobierania najnowszego certyfikatu, możesz użyć tego linku symlinku ([VaultName].[CertificateName]) , aby uzyskać najnowszą wersję certyfikatu w systemie Linux.

Instalacja certyfikatu w systemie Linux

Rozszerzenie maszyny wirtualnej usługi Key Vault dla systemu Linux instaluje certyfikaty jako pliki PEM z dołączonym pełnym łańcuchem certyfikatów. Po pobraniu certyfikatu z usługi Key Vault rozszerzenie:

  1. Tworzy folder przechowywania na podstawie ustawienia certificateStoreLocation (wartość domyślna to /var/lib/waagent/Microsoft.Azure.KeyVault.Store/, jeśli nie zostanie określona)
  2. Instaluje pełny łańcuch certyfikatów i klucz prywatny w pliku PEM, zgodnie z sekcją RFC 5246 7.4.2 w tej konkretnej kolejności:
    • Certyfikat liścia (certyfikat jednostki końcowej) jest pierwszy
    • Certyfikaty pośrednie są uporządkowane w taki sposób, że każdy certyfikat bezpośrednio potwierdza poprzedni.
    • Certyfikat główny, jeśli istnieje (choć nie jest wymagany do weryfikacji, jeśli jest już zaufany przez system)
    • Klucz prywatny odpowiadający certyfikatowi liścia jest umieszczany na końcu pliku
  3. Automatycznie tworzy łącze symboliczne o nazwie [VaultName].[CertificateName] wskazujące najnowszą wersję certyfikatu

Takie podejście gwarantuje, że:

  • Aplikacje zawsze mają dostęp do kompletnego łańcucha certyfikatów wymaganego do weryfikacji
  • Łańcuch certyfikatów jest prawidłowo uporządkowany na potrzeby uzgadniania protokołu TLS zgodnie ze standardami RFC
  • Klucz prywatny jest dostępny do użycia przez usługę
  • Aplikacje mogą odwoływać się do stabilnej ścieżki łącza symbolicznego, która automatycznie aktualizuje się po odnowieniu certyfikatów
  • W przypadku rotacji lub odnawiania certyfikatów nie jest wymagana żadna ponowna konfiguracja aplikacji

Przykładowa struktura ścieżki certyfikatu

W przypadku certyfikatu o exampleVault.vault.azure.net nazwie myCertificatestruktura katalogów wygląda następująco:

/var/lib/waagent/Microsoft.Azure.KeyVault.Store/
├── exampleVault.myCertificate -> exampleVault.myCertificate.1234567890abcdef
├── exampleVault.myCertificate.1234567890abcdef    # Full chain PEM file (current version)
└── exampleVault.myCertificate.0987654321fedcba    # Previous version (if exists)

Aplikacje należy skonfigurować tak, aby korzystały ze ścieżki łącza symbolicznego (/var/lib/waagent/Microsoft.Azure.KeyVault.Store/exampleVault.myCertificate), aby zapewnić, że zawsze uzyskują dostęp do najnowszej wersji certyfikatu.

W przypadku używania niestandardowych lokalizacji magazynu certyfikatów i ustawienia customSymbolicLinkName struktura jest zgodna z tym wzorcem:

/path/to/custom/store/
├── customLinkName -> exampleVault.myCertificate.1234567890abcdef
└── exampleVault.myCertificate.1234567890abcdef    # Full chain PEM file

Często zadawane pytania

  • Czy istnieje limit liczby obserwowanychcertyfikatów, które można skonfigurować? Nie, rozszerzenie maszyny wirtualnej usługi Key Vault nie ma limitu liczby obserwowanych certyfikatów.

Wsparcie

Jeśli potrzebujesz więcej pomocy w dowolnym momencie tego artykułu, możesz skontaktować się z ekspertami platformy Azure na forach MSDN Azure i Stack Overflow. Alternatywnie możesz zgłosić incydent do pomocy technicznej Azure. Przejdź do witryny pomocy technicznej platformy Azure i wybierz pozycję Uzyskaj pomoc techniczną. Aby uzyskać informacje na temat korzystania z pomocy technicznej platformy Azure, przeczytaj często zadawane pytania dotyczące pomocy technicznej platformy Microsoft Azure.