Wdrażanie wpisów tajnych aplikacji w klastrze zarządzanym usługi Service Fabric
Wpisy tajne mogą być informacjami poufnymi, takimi jak parametry połączenia magazynu, hasła lub inne wartości, które nie powinny być obsługiwane w postaci zwykłego tekstu. Zalecamy używanie usługi Azure Key Vault do zarządzania kluczami i wpisami tajnymi dla klastrów zarządzanych usługi Service Fabric i korzystania z niego w tym artykule. Jednak używanie wpisów tajnych w aplikacji jest niezależne od platformy w chmurze, aby umożliwić wdrażanie aplikacji w klastrze hostowanym w dowolnym miejscu.
Zalecanym sposobem zarządzania ustawieniami konfiguracji usługi jest użycie pakietów konfiguracji usługi. Pakiety konfiguracji są wersjonowane i możliwe do aktualizacji za pośrednictwem zarządzanych uaktualnień stopniowego z walidacją kondycji i automatycznym wycofywaniem. Jest to preferowane do konfiguracji globalnej, ponieważ zmniejsza prawdopodobieństwo awarii usługi globalnej. Zaszyfrowane wpisy tajne nie są wyjątkiem. Usługa Service Fabric ma wbudowane funkcje szyfrowania i odszyfrowywania wartości w pakiecie konfiguracji Settings.xml pliku przy użyciu szyfrowania certyfikatu.
Na poniższym diagramie przedstawiono podstawowy przepływ zarządzania wpisami tajnymi w aplikacji usługi Service Fabric:
W tym przepływie znajdują się cztery główne kroki:
- Uzyskaj certyfikat szyfrowania danych.
- Zainstaluj certyfikat w klastrze.
- Szyfruj wartości wpisów tajnych podczas wdrażania aplikacji przy użyciu certyfikatu i wstrzykiwania ich do pliku konfiguracji Settings.xml usługi.
- Odczytywanie zaszyfrowanych wartości poza Settings.xml przez odszyfrowywanie przy użyciu tego samego certyfikatu szyfrowania.
Usługa Azure Key Vault jest używana w tym miejscu jako bezpieczna lokalizacja przechowywania certyfikatów i jako sposób pobierania certyfikatów zainstalowanych w węzłach klastra zarządzanego usługi Service Fabric na platformie Azure.
Aby zapoznać się z przykładem implementacji wpisów tajnych aplikacji, zobacz Zarządzanie wpisami tajnymi aplikacji.
Alternatywnie obsługujemy również usługę KeyVaultReference. Obsługa usługi Service Fabric KeyVaultReference ułatwia wdrażanie wpisów tajnych w aplikacjach po prostu przez odwołanie się do adresu URL wpisu tajnego przechowywanego w usłudze Key Vault
Tworzenie certyfikatu szyfrowania danych
Aby utworzyć własny magazyn kluczy i skonfigurować certyfikaty, postępuj zgodnie z instrukcjami z usługi Azure Key Vault przy użyciu interfejsu wiersza polecenia platformy Azure, programu PowerShell, portalu i nie tylko.
Uwaga
Magazyn kluczy musi być włączony w celu wdrożenia szablonu, aby umożliwić dostawcy zasobów obliczeniowych pobieranie z niego certyfikatów i instalowanie go w węzłach klastra.
Instalowanie certyfikatu w klastrze
Ten certyfikat należy zainstalować w każdym węźle w klastrze, a klastry zarządzane usługi Service Fabric ułatwiają ten proces. Zarządzana usługa klastrowania może wypychać wpisy tajne specyficzne dla wersji do węzłów, aby ułatwić instalowanie wpisów tajnych, które nie zmieniają się często, tak jak instalowanie prywatnego głównego urzędu certyfikacji do węzłów. W przypadku większości obciążeń produkcyjnych zalecamy użycie rozszerzenia KeyVault. Rozszerzenie maszyny wirtualnej usługi Key Vault zapewnia automatyczne odświeżanie certyfikatów przechowywanych w magazynie kluczy platformy Azure w porównaniu ze statyczną wersją.
W przypadku klastrów zarządzanych potrzebne są trzy wartości, dwa z usługi Azure Key Vault i jedna, dla której decydujesz się na nazwę magazynu lokalnego w węzłach.
Parametry:
Source Vault
: to jest- np. /subscriptions/{subscriptionid}/resourceGroups/myrg1/providers/Microsoft.KeyVault/vaults/mykeyvault1
Certificate URL
: Jest to pełny identyfikator wpisu tajnego usługi Key Vault i jest bez uwzględniania wielkości liter i niezmiennyCertificate Store
: jest to lokalny magazyn certyfikatów w węzłach, w których zostanie umieszczony certyfikat- nazwa magazynu certyfikatów w węzłach, np. "MY"
Klastry zarządzane usługi Service Fabric obsługują dwie metody dodawania wpisów tajnych specyficznych dla wersji do węzłów.
- Portal podczas tworzenia początkowego klastra wstaw tylko wartości z góry do tego obszaru:
- Usługa Azure Resource Manager podczas tworzenia lub w dowolnym momencie
{
"apiVersion": "2021-05-01",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
"properties": {
"vmSecrets": [
{
"sourceVault": {
"id": "/subscriptions/{subscriptionid}/resourceGroups/myrg1/providers/Microsoft.KeyVault/vaults/mykeyvault1"
},
"vaultCertificates": [
{
"certificateStore": "MY",
"certificateUrl": "https://mykeyvault1.vault.azure.net/certificates/{certificatename}/{secret-version}"
}
]
}
]
}
}