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. Przed kontynuowaniem należy 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 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 "UseSecondaryIfNewer" na wartość false w konfiguracji Fabric.Code .

Usługa Service Fabric umożliwia określenie dwóch certyfikatów klastra, podstawowego i pomocniczego podczas konfigurowania zabezpieczeń certyfikatów podczas tworzenia klastra, oprócz certyfikatów klienta. Aby uzyskać szczegółowe informacje na temat konfigurowania klastra w czasie tworzenia w czasie tworzenia, zapoznaj się z tematem Tworzenie klastra platformy Azure za pośrednictwem witryny Azure portal lub tworzenie klastra platformy Azure za pośrednictwem usługi Azure Resource Manager. Jeśli podczas tworzenia określisz tylko jeden certyfikat klastra, 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) certyfikat klastra (podstawowy lub pomocniczy) wdrożony (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

Zalecamy korzystanie z modułu Azure Az programu PowerShell do interakcji z platformą Azure. Zobacz Instalowanie programu Azure PowerShell, aby rozpocząć. 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 certyfikatu klastra pomocniczego przy użyciu portalu

Nie można dodać certyfikatu klastra pomocniczego za pośrednictwem 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 sprawi, że klaster przestanie działać; należy usunąć tylko wygasły certyfikat 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 nieużywanego certyfikatu.

Jeśli twoim zamiarem jest usunięcie certyfikatu oznaczonego jako podstawowy, konieczne będzie wdrożenie certyfikatu pomocniczego z datą wygaśnięcia w przyszłości niż certyfikat podstawowy, co umożliwi 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 Resource Manager i wdrożono co najmniej jeden klaster usługi Service Fabric przy użyciu szablonu 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.

Edytowanie szablonu Resource Manager

Aby ułatwić wykonywanie poniższych czynności, przykład 5-VM-1-NodeTypes-Secure_Step2.JSON zawiera wszystkie zmiany, które będziemy wprowadzać. przykład jest dostępny w repozytorium git-repo.

Pamiętaj, aby wykonać wszystkie kroki

  1. Otwórz szablon Resource Manager użyty do wdrożenia klastra. (Jeśli pobrano przykład z poprzedniego repozytorium, użyj pliku 5-VM-1-NodeTypes-Secure_Step1.JSON, aby wdrożyć bezpieczny klaster, a następnie otwórz ten szablon).

  2. 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>"
          }
        },
    
    
  3. Wprowadź zmiany w zasobie Microsoft.ServiceFabric/clusters — znajdź definicję zasobu "Microsoft.ServiceFabric/clusters" w szablonie. We właściwościach tej definicji znajduje się 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. Powoduje 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')]"
         }
    
  4. 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.

    Json_Pub_Setting1

    Dodaj do niego nowe wpisy certyfikatu

                   "certificateSecondary": {
                        "thumbprint": "[parameters('secCertificateThumbprint')]",
                        "x509StoreName": "[parameters('certificateStoreValue')]"
                        }
                      },
    
    

    Właściwości powinny teraz wyglądać następująco

    Json_Pub_Setting2

    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
    Json_Pub_Setting3

  5. 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.

    Json_Pub_Setting4

    Dodaj do niego wartość 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. Json_Pub_Setting5

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 bez prawidłowych certyfikatów, 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 Resource Manager, dodaj dwa nowe parametry dla parametrów 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 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 należy go używać 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ę, poniżej przedstawiono polecenie służące do 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ę, zobacz 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 — Administracja 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 Administracja.

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 — Administracja lub Read-Only za pośrednictwem portalu

  1. Przejdź do sekcji Zabezpieczenia i wybierz przycisk "+ Uwierzytelnianie" w górnej części sekcji zabezpieczeń.
  2. W sekcji "Dodawanie uwierzytelniania" wybierz pozycję "Typ uwierzytelniania" — "Klient tylko do odczytu" lub "klient Administracja"
  3. Teraz wybierz metodę autoryzacji. Wskazuje to na usługę Service Fabric, czy powinien on wyszukać ten certyfikat przy użyciu nazwy podmiotu, czy odcisku palca. Ogólnie rzecz biorąc, nie jest dobrym rozwiązaniem w zakresie zabezpieczeń, aby użyć metody autoryzacji nazwy podmiotu.

Dodawanie certyfikatu klienta

Usuwanie certyfikatów klienta — Administracja lub Read-Only przy użyciu portalu

Aby usunąć certyfikat pomocniczy z 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: