Udostępnij za pośrednictwem


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. 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 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 sprawia, ż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 znasz sposób działania usługi 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ć wykonanie tych czynności, przykładowa 5-VM-1-NodeTypes-Secure_Step2.JSON zawiera wszystkie zmiany, które wprowadzamy. Przykład jest dostępny w repozytorium git.

Pamiętaj, aby wykonać wszystkie kroki

  1. 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).

  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 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')]"
         }
    
  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 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 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 musisz 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 Zaufanych sprzedawców.

######## 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ę, zapoznaj się z poleceniem w celu uzyskania 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

  1. Przejdź do sekcji Zabezpieczenia i wybierz przycisk "+ Uwierzytelnianie" w górnej części sekcji zabezpieczeń.
  2. W sekcji "Dodaj uwierzytelnianie" wybierz "Typ uwierzytelniania" — "Klient tylko do odczytu" lub "Klient administracyjny"
  3. 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: