Add or remove certificates for a Service Fabric cluster in Azure (Dodawanie lub usuwanie certyfikatów dla klastra usługi Service Fabric na platformie Azure)
Zaleca się zapoznanie się ze sposobem korzystania z certyfikatów X.509 w usłudze Service Fabric i zapoznanie się ze scenariuszami zabezpieczeń klastra. Zanim przejdziesz dalej, musisz zrozumieć, co to jest certyfikat klastra i do czego służy.
Domyślne zachowanie ładowania certyfikatów zestawu SDK usługi Azure Service Fabrics polega na wdrożeniu i użyciu zdefiniowanego certyfikatu z datą wygaśnięcia najdalej w przyszłości; niezależnie od podstawowej lub pomocniczej definicji konfiguracji. Powrót do zachowania klasycznego nie jest zalecaną akcją zaawansowaną i wymaga ustawienia wartości parametru parametru "UseSecondaryIfNewer" na false w ramach Fabric.Code
konfiguracji.
Usługa Service Fabric umożliwia określenie dwóch certyfikatów klastra, podstawowego i pomocniczego podczas konfigurowania zabezpieczeń certyfikatów podczas tworzenia klastra, a także certyfikatów klienta. Aby uzyskać szczegółowe informacje na temat konfigurowania klastra w czasie tworzenia, zapoznaj się z tematem Tworzenie klastra platformy Azure za pośrednictwem portalu lub tworzenie klastra platformy Azure za pośrednictwem usługi Azure Resource Manager . Jeśli określisz tylko jeden certyfikat klastra w czasie tworzenia, zostanie on użyty jako certyfikat podstawowy. Po utworzeniu klastra można dodać nowy certyfikat jako pomocniczy.
Uwaga
W przypadku bezpiecznego klastra zawsze będzie potrzebny co najmniej jeden prawidłowy (nie odwołany i nie wygasły) wdrożony certyfikat klastra (podstawowy lub pomocniczy) (jeśli nie, klaster przestanie działać). 90 dni przed wygaśnięciem wszystkich prawidłowych certyfikatów system generuje ślad ostrzeżenia i zdarzenie kondycji ostrzeżenia w węźle. Są to obecnie jedyne powiadomienia wysyłane przez usługę Service Fabric dotyczące wygaśnięcia certyfikatu.
Uwaga
Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. Aby rozpocząć, zobacz Instalowanie programu Azure PowerShell. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.
Dodawanie pomocniczego certyfikatu klastra przy użyciu portalu
Nie można dodać pomocniczego certyfikatu klastra za pośrednictwem witryny Azure Portal; użyj usługi Azure Resource Manager.
Usuwanie certyfikatu klastra przy użyciu portalu
W przypadku bezpiecznego klastra zawsze będzie potrzebny co najmniej jeden prawidłowy (nie odwołany i nie wygasły) certyfikat. Certyfikat wdrożony z najdalej do przyszłej daty wygaśnięcia będzie używany i usunięcie go spowoduje, że klaster przestanie działać; upewnij się, że certyfikat wygasł lub nieużywany certyfikat, który wkrótce wygaśnie.
Aby usunąć nieużywany certyfikat zabezpieczeń klastra, przejdź do sekcji Zabezpieczenia i wybierz opcję "Usuń" z menu kontekstowego w nieużywanym certyfikacie.
Jeśli twoim zamiarem jest usunięcie certyfikatu oznaczonego jako podstawowy, należy wdrożyć certyfikat pomocniczy z datą wygaśnięcia w przyszłości niż certyfikat podstawowy, włączając zachowanie automatycznego przerzucania; usuń certyfikat podstawowy po zakończeniu automatycznego przerzucania.
Dodawanie certyfikatu pomocniczego przy użyciu usługi Azure Resource Manager
W tych krokach założono, że wiesz, jak działa usługa Resource Manager i wdrożono co najmniej jeden klaster usługi Service Fabric przy użyciu szablonu usługi Resource Manager i masz szablon, który został użyty do skonfigurowania klastra. Zakłada się również, że dobrze używasz formatu JSON.
Uwaga
Jeśli szukasz przykładowego szablonu i parametrów, których możesz użyć do naśladowania lub jako punktu początkowego, pobierz go z tego repozytorium git-repo.
Edytowanie szablonu usługi Resource Manager
Aby ułatwić wykonywanie poniższych czynności, przykładowa 5-VM-1-NodeTypes-Secure_Step2.JSON zawiera wszystkie zmiany, które będziemy robić. przykład jest dostępny w repozytorium git-repo.
Pamiętaj, aby wykonać wszystkie kroki
Otwórz szablon usługi Resource Manager użyty do wdrożenia klastra. (Jeśli pobrano przykład z poprzedniego repozytorium, użyj 5-VM-1-NodeTypes-Secure_Step1.JSON, aby wdrożyć bezpieczny klaster, a następnie otworzyć ten szablon).
Dodaj dwa nowe parametry "secCertificateThumbprint" i "secCertificateUrlValue" typu "string" do sekcji parametrów szablonu. Możesz skopiować poniższy fragment kodu i dodać go do szablonu. W zależności od źródła szablonu możesz już je zdefiniować, jeśli tak, przejdź do następnego kroku.
"secCertificateThumbprint": { "type": "string", "metadata": { "description": "Certificate Thumbprint" } }, "secCertificateUrlValue": { "type": "string", "metadata": { "description": "Refers to the location URL in your key vault where the certificate was uploaded, it is should be in the format of https://<name of the vault>.vault.azure.net:443/secrets/<exact location>" } },
Wprowadź zmiany w zasobie Microsoft.ServiceFabric/clusters — znajdź definicję zasobu "Microsoft.ServiceFabric/clusters" w szablonie. We właściwościach tej definicji znajdziesz tag JSON "Certificate", który powinien wyglądać podobnie do następującego fragmentu kodu JSON:
"properties": { "certificate": { "thumbprint": "[parameters('certificateThumbprint')]", "x509StoreName": "[parameters('certificateStoreValue')]" }
Dodaj nowy tag "thumbprintSecondary" i nadaj mu wartość "[parameters('secCertificateThumbprint')]".
Teraz definicja zasobu powinna wyglądać podobnie do poniższej (w zależności od źródła szablonu może nie być dokładnie taka jak poniższy fragment kodu).
"properties": { "certificate": { "thumbprint": "[parameters('certificateThumbprint')]", "thumbprintSecondary": "[parameters('secCertificateThumbprint')]", "x509StoreName": "[parameters('certificateStoreValue')]" }
Jeśli chcesz przerzucić certyfikat, określ nowy certyfikat jako podstawowy i przenieś bieżący podstawowy jako pomocniczy. Spowoduje to przerzucanie bieżącego certyfikatu podstawowego do nowego certyfikatu w jednym kroku wdrażania.
"properties": { "certificate": { "thumbprint": "[parameters('secCertificateThumbprint')]", "thumbprintSecondary": "[parameters('certificateThumbprint')]", "x509StoreName": "[parameters('certificateStoreValue')]" }
Wprowadź zmiany we wszystkich definicjach zasobów Microsoft.Compute/virtualMachineScaleSets — znajdź definicję zasobu Microsoft.Compute/virtualMachineScaleSets. Przewiń do "publisher": "Microsoft.Azure.ServiceFabric", w obszarze "virtualMachineProfile".
W ustawieniach wydawcy usługi Service Fabric powinny zostać wyświetlone informacje podobne do tych.
Dodaj do niego nowe wpisy certyfikatu
"certificateSecondary": { "thumbprint": "[parameters('secCertificateThumbprint')]", "x509StoreName": "[parameters('certificateStoreValue')]" } },
Właściwości powinny teraz wyglądać następująco
Jeśli chcesz przerzucić certyfikat, określ nowy certyfikat jako podstawowy i przenieś bieżący podstawowy jako pomocniczy. Powoduje to przerzucanie bieżącego certyfikatu do nowego certyfikatu w jednym kroku wdrażania.
"certificate": { "thumbprint": "[parameters('secCertificateThumbprint')]", "x509StoreName": "[parameters('certificateStoreValue')]" }, "certificateSecondary": { "thumbprint": "[parameters('certificateThumbprint')]", "x509StoreName": "[parameters('certificateStoreValue')]" } },
Właściwości powinny teraz wyglądać następująco
Wprowadź zmiany we wszystkich definicjach zasobów Microsoft.Compute/virtualMachineScaleSets — znajdź definicję zasobu Microsoft.Compute/virtualMachineScaleSets. Przewiń do "vaultCertificates": w obszarze "OSProfile". powinien wyglądać mniej więcej tak.
Dodaj do niego secCertificateUrlValue. użyj następującego fragmentu kodu:
{ "certificateStore": "[parameters('certificateStoreValue')]", "certificateUrl": "[parameters('secCertificateUrlValue')]" }
Teraz wynikowy kod JSON powinien wyglądać mniej więcej tak.
Uwaga
Upewnij się, że zostały powtórzone kroki 4 i 5 dla wszystkich definicji zasobów Nodetypes/Microsoft.Compute/virtualMachineScaleSets w szablonie. Jeśli przegapisz jeden z nich, certyfikat nie zostanie zainstalowany w tym zestawie skalowania maszyn wirtualnych i będzie miał nieprzewidywalne wyniki w klastrze, w tym klaster będzie wyłączony (jeśli skończysz z nieprawidłowymi certyfikatami, których klaster może używać do zabezpieczeń. Więc dokładnie sprawdź, przed kontynuowaniem.
Edytuj plik szablonu, aby odzwierciedlić nowe parametry dodane powyżej
Jeśli używasz przykładu z repozytorium git do wykonania, możesz zacząć wprowadzać zmiany w przykładzie 5-VM-1-NodeTypes-Secure.parameters_Step2.JSON
Edytuj plik parametru szablonu usługi Resource Manager, dodaj dwa nowe parametry dla secCertificateThumbprint i secCertificateUrlValue.
"secCertificateThumbprint": {
"value": "thumbprint value"
},
"secCertificateUrlValue": {
"value": "Refers to the location URL in your key vault where the certificate was uploaded, it is should be in the format of https://<name of the vault>.vault.azure.net:443/secrets/<exact location>"
},
Wdrażanie szablonu na platformie Azure
- Teraz możesz przystąpić do wdrażania szablonu na platformie Azure. Otwórz wiersz polecenia programu Azure PowerShell w wersji 1 lub nowszej.
- Zaloguj się do konta platformy Azure i wybierz określoną subskrypcję platformy Azure. Jest to ważny krok dla osób, które mają dostęp do więcej niż jednej subskrypcji platformy Azure.
Connect-AzAccount
Select-AzSubscription -SubscriptionId <Subscription ID>
Przetestuj szablon przed jego wdrożeniem. Użyj tej samej grupy zasobów, do którego jest obecnie wdrożony klaster.
Test-AzResourceGroupDeployment -ResourceGroupName <Resource Group that your cluster is currently deployed to> -TemplateFile <PathToTemplate>
Wdróż szablon w grupie zasobów. Użyj tej samej grupy zasobów, do którego jest obecnie wdrożony klaster. Uruchom polecenie New-AzResourceGroupDeployment. Nie trzeba określać trybu, ponieważ wartość domyślna jest przyrostowa.
Uwaga
Jeśli ustawisz opcję Tryb na Ukończono, możesz przypadkowo usunąć zasoby, które nie znajdują się w szablonie. Dlatego nie używaj go w tym scenariuszu.
New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName <Resource Group that your cluster is currently deployed to> -TemplateFile <PathToTemplate>
Oto wypełniony przykład tego samego programu PowerShell.
$ResourceGroup2 = "chackosecure5"
$TemplateFile = "C:\GitHub\Service-Fabric\ARM Templates\Cert Rollover Sample\5-VM-1-NodeTypes-Secure_Step2.json"
$TemplateParmFile = "C:\GitHub\Service-Fabric\ARM Templates\Cert Rollover Sample\5-VM-1-NodeTypes-Secure.parameters_Step2.json"
New-AzResourceGroupDeployment -ResourceGroupName $ResourceGroup2 -TemplateParameterFile $TemplateParmFile -TemplateUri $TemplateFile -clusterName $ResourceGroup2
Po zakończeniu wdrażania połącz się z klastrem przy użyciu nowego certyfikatu i wykonaj kilka zapytań. Jeśli możesz to zrobić. Następnie możesz usunąć stary certyfikat.
Jeśli używasz certyfikatu z podpisem własnym, nie zapomnij zaimportować ich do lokalnego magazynu certyfikatów TrustedPeople.
######## Set up the certs on your local box
Import-PfxCertificate -Exportable -CertStoreLocation Cert:\CurrentUser\TrustedPeople -FilePath c:\Mycertificates\chackdanTestCertificate9.pfx -Password (ConvertTo-SecureString -String abcd123 -AsPlainText -Force)
Import-PfxCertificate -Exportable -CertStoreLocation Cert:\CurrentUser\My -FilePath c:\Mycertificates\chackdanTestCertificate9.pfx -Password (ConvertTo-SecureString -String abcd123 -AsPlainText -Force)
Aby uzyskać szybką dokumentację, zapoznaj się z poleceniem nawiązywania połączenia z bezpiecznym klastrem
$ClusterName= "chackosecure5.westus.cloudapp.azure.com:19000"
$CertThumbprint= "70EF5E22ADB649799DA3C8B6A6BF7SD1D630F8F3"
Connect-serviceFabricCluster -ConnectionEndpoint $ClusterName -KeepAliveIntervalInSec 10 `
-X509Credential `
-ServerCertThumbprint $CertThumbprint `
-FindType FindByThumbprint `
-FindValue $CertThumbprint `
-StoreLocation CurrentUser `
-StoreName My
Aby uzyskać szybką dokumentację w tym miejscu, to polecenie umożliwiające uzyskanie kondycji klastra
Get-ServiceFabricClusterHealth
Wdrażanie certyfikatów klienta w klastrze.
Możesz użyć tych samych kroków, co opisane w poprzednich krokach 5, aby certyfikaty zostały wdrożone z magazynu kluczy do węzłów. Wystarczy zdefiniować i użyć różnych parametrów.
Dodawanie lub usuwanie certyfikatów klienta
Oprócz certyfikatów klastra można dodawać certyfikaty klienta w celu wykonywania operacji zarządzania w klastrze usługi Service Fabric.
Można dodać dwa rodzaje certyfikatów klienta — administrator lub tylko do odczytu. Następnie można użyć ich do kontrolowania dostępu do operacji administracyjnych i operacji zapytań w klastrze. Domyślnie certyfikaty klastra są dodawane do listy dozwolonych certyfikatów administratora.
Można określić dowolną liczbę certyfikatów klienta. Każde dodawanie/usuwanie powoduje aktualizację konfiguracji klastra usługi Service Fabric.
Dodawanie certyfikatów klienta — administrator lub tylko do odczytu za pośrednictwem portalu
- Przejdź do sekcji Zabezpieczenia i wybierz przycisk "+ Uwierzytelnianie" w górnej części sekcji zabezpieczeń.
- W sekcji "Dodaj uwierzytelnianie" wybierz "Typ uwierzytelniania" — "Klient tylko do odczytu" lub "Klient administracyjny"
- Teraz wybierz metodę autoryzacji. Wskazuje to na usługę Service Fabric, czy powinien on wyszukać ten certyfikat przy użyciu nazwy podmiotu lub odcisku palca. Ogólnie rzecz biorąc, nie jest dobrym rozwiązaniem w zakresie zabezpieczeń, aby użyć metody autoryzacji nazwy podmiotu.
Usuwanie certyfikatów klienta — administrator lub tylko do odczytu przy użyciu portalu
Aby usunąć certyfikat pomocniczy używany do zabezpieczeń klastra, przejdź do sekcji Zabezpieczenia i wybierz opcję "Usuń" z menu kontekstowego określonego certyfikatu.
Dodawanie certyfikatów aplikacji do zestawu skalowania maszyn wirtualnych
Aby wdrożyć certyfikat używany dla aplikacji w klastrze, zobacz ten przykładowy skrypt programu PowerShell.
Następne kroki
Przeczytaj następujące artykuły, aby uzyskać więcej informacji na temat zarządzania klastrem: