Přidání nebo odebrání certifikátů clusteru Service Fabric v Azure

Doporučujeme, abyste se seznámili s tím, jak Service Fabric používá certifikáty X.509, a seznámili se se scénáři zabezpečení clusteru. Než budete pokračovat, musíte pochopit, co je certifikát clusteru a k čemu se používá.

Výchozím chováním sady Azure Service Fabrics SDK při načítání certifikátů je nasazení a použití definovaného certifikátu s datem vypršení platnosti nejdále do budoucna. bez ohledu na jejich primární nebo sekundární definici konfigurace. Návrat ke klasickému chování není doporučenou pokročilou akcí a vyžaduje nastavení hodnoty parametru nastavení UseSecondaryIfNewer na hodnotu false v rámci konfigurace Fabric.Code .

Service Fabric umožňuje při konfiguraci zabezpečení certifikátu během vytváření clusteru zadat kromě klientských certifikátů dva certifikáty clusteru, primární a sekundární. Podrobnosti o jejich nastavení při vytváření najdete v tématu Vytvoření clusteru Azure prostřednictvím portálu nebo Vytvoření clusteru Azure prostřednictvím Azure Resource Manager. Pokud při vytváření zadáte pouze jeden certifikát clusteru, použije se jako primární certifikát. Po vytvoření clusteru můžete přidat nový certifikát jako sekundární.

Poznámka

V případě zabezpečeného clusteru budete vždy potřebovat alespoň jeden platný (neodvolaný a nevypršený) certifikát clusteru (primární nebo sekundární) nasazený (pokud ne, cluster přestane fungovat). 90 dní před vypršením platnosti všech platných certifikátů systém vygeneruje trasování upozornění a událost stavu upozornění na uzlu. V současné době se jedná o jediná oznámení, která Service Fabric odesílá v souvislosti s vypršením platnosti certifikátu.

Poznámka

K interakci s Azure doporučujeme použít modul Azure Az PowerShell. Začněte tím, že si projdete téma Instalace Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.

Přidání sekundárního certifikátu clusteru pomocí portálu

Sekundární certifikát clusteru nejde přidat prostřednictvím Azure Portal. Použijte Azure Resource Manager.

Odebrání certifikátu clusteru pomocí portálu

V případě zabezpečeného clusteru budete vždy potřebovat alespoň jeden platný (neodvolaný a nevypršený) certifikát. Certifikát nasazený s nejbližším budoucím datem vypršení platnosti se bude používat a jeho odebráním cluster přestane fungovat. Ujistěte se, že se odebere jenom certifikát, jehož platnost vypršela, nebo nepoužívaný certifikát, jehož platnost vyprší nejdříve.

Pokud chcete odebrat nepoužívaný certifikát zabezpečení clusteru, přejděte do části Zabezpečení a v místní nabídce nepoužívaného certifikátu vyberte možnost Odstranit.

Pokud je vaším záměrem odebrat certifikát, který je označen jako primární, budete muset nasadit sekundární certifikát s datem vypršení platnosti dále do budoucnosti než primární certifikát, což umožní chování automatického přechodu. po dokončení automatického převodu odstranit primární certifikát.

Přidání sekundárního certifikátu pomocí Azure Resource Manager

Tento postup předpokládá, že víte, jak Resource Manager funguje, nasadili jste alespoň jeden cluster Service Fabric pomocí šablony Resource Manager a máte šablonu, kterou jste použili k nastavení clusteru, po ruce. Předpokládá se také, že vám json nevadí.

Poznámka

Pokud hledáte ukázkovou šablonu a parametry, které můžete použít ke sledování nebo jako výchozí bod, stáhněte si je z tohoto úložiště git-repo.

Úprava šablony Resource Manager

Pro usnadnění sledování obsahuje ukázka 5-VM-1-NodeTypes-Secure_Step2.JSON všechny úpravy, které provedeme. Ukázka je k dispozici v úložišti git-repo.

Nezapomeňte postupovat podle všech kroků.

  1. Otevřete šablonu Resource Manager, kterou jste použili k nasazení clusteru. (Pokud jste si stáhli ukázku z předchozího úložiště, použijte 5-VM-1-NodeTypes-Secure_Step1.JSON k nasazení zabezpečeného clusteru a pak tuto šablonu otevřete.)

  2. Do oddílu parametrů šablony přidejte dva nové parametry "secCertificateThumbprint" a "secCertificateUrlValue" typu "string". Následující fragment kódu můžete zkopírovat a přidat ho do šablony. V závislosti na zdroji šablony už je možná máte definované. Pokud ano, přejděte k dalšímu 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. Provedení změn prostředku Microsoft.ServiceFabric/clusters – Vyhledejte v šabloně definici prostředku Microsoft.ServiceFabric/clusters. Ve vlastnostech této definice najdete značku JSON Certificate, která by měla vypadat přibližně jako následující fragment kódu JSON:

          "properties": {
            "certificate": {
              "thumbprint": "[parameters('certificateThumbprint')]",
              "x509StoreName": "[parameters('certificateStoreValue')]"
         }
    

    Přidejte novou značku thumbprintSecondary a dejte jí hodnotu [parameters('secCertificateThumbprint')]".

    Definice prostředku by teď měla vypadat takto (v závislosti na zdroji šablony se nemusí přesně podobat následujícímu fragmentu kódu).

          "properties": {
            "certificate": {
              "thumbprint": "[parameters('certificateThumbprint')]",
              "thumbprintSecondary": "[parameters('secCertificateThumbprint')]",
              "x509StoreName": "[parameters('certificateStoreValue')]"
         }
    

    Pokud chcete certifikát vyměnit, zadejte nový certifikát jako primární a aktuální primární certifikát se přesune jako sekundární. Výsledkem je přechod aktuálního primárního certifikátu na nový certifikát v jednom kroku nasazení.

          "properties": {
            "certificate": {
              "thumbprint": "[parameters('secCertificateThumbprint')]",
              "thumbprintSecondary": "[parameters('certificateThumbprint')]",
              "x509StoreName": "[parameters('certificateStoreValue')]"
         }
    
  4. Proveďte změny ve všech definicích prostředků Microsoft.Compute/virtualMachineScaleSets – vyhledejte definici prostředku Microsoft.Compute/virtualMachineScaleSets. Posuňte se na "vydavatel": "Microsoft.Azure.ServiceFabric" v části "virtualMachineProfile".

    V nastavení vydavatele Service Fabric byste měli vidět něco takového.

    Json_Pub_Setting1

    Přidejte do něj nové položky certifikátu.

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

    Vlastnosti by teď měly vypadat takto:

    Json_Pub_Setting2

    Pokud chcete certifikát vyměnit, zadejte nový certifikát jako primární a aktuální primární certifikát se přesune jako sekundární. Výsledkem je přechod vašeho aktuálního certifikátu na nový certifikát v jednom kroku nasazení.

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

    Vlastnosti by teď měly vypadat takto:
    Json_Pub_Setting3

  5. Proveďte změny ve všech definicích prostředků Microsoft.Compute/virtualMachineScaleSets – vyhledejte definici prostředku Microsoft.Compute/virtualMachineScaleSets. Posuňte se na vaultCertificates: v části OSProfile. mělo by to vypadat nějak takto.

    Json_Pub_Setting4

    Přidejte do něj hodnotu secCertificateUrlValue. použijte následující fragment kódu:

                      {
                        "certificateStore": "[parameters('certificateStoreValue')]",
                        "certificateUrl": "[parameters('secCertificateUrlValue')]"
                      }
    
    

    Výsledný kód JSON by teď měl vypadat přibližně takto. Json_Pub_Setting5

Poznámka

Ujistěte se, že máte opakované kroky 4 a 5 pro všechny definice prostředků Nodetypes/Microsoft.Compute/virtualMachineScaleSets ve vaší šabloně. Pokud některý z nich vynecháte, certifikát se do této škálovací sady virtuálních počítačů nenainstaluje a v clusteru budete mít nepředvídatelné výsledky, včetně toho, že cluster přestane být mimo provoz (pokud nakonec nebudete mít žádné platné certifikáty, které cluster může použít k zabezpečení). Takže to pečlivě zkontrolujte, než budete pokračovat.

Upravte soubor šablony tak, aby odrážel nové parametry, které jste přidali výše.

Pokud k tomu používáte ukázku z úložiště git-repo , můžete začít dělat změny v ukázce 5-VM-1-NodeTypes-Secure.parameters_Step2.JSON.

Upravte Resource Manager soubor parametrů šablony a přidejte dva nové parametry pro secCertificateThumbprint a 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>"
     },

Nasazení šablony do Azure

  • Teď jste připraveni nasadit šablonu do Azure. Otevřete příkazový řádek Azure PowerShell verze 1 nebo novější.
  • Přihlaste se ke svému účtu Azure a vyberte konkrétní předplatné Azure. Tento krok je důležitý pro lidi, kteří mají přístup k více než jednomu předplatnému Azure.
Connect-AzAccount
Select-AzSubscription -SubscriptionId <Subscription ID> 

Před nasazením šablonu otestujte. Použijte stejnou skupinu prostředků, do které je aktuálně nasazený váš cluster.

Test-AzResourceGroupDeployment -ResourceGroupName <Resource Group that your cluster is currently deployed to> -TemplateFile <PathToTemplate>

Nasaďte šablonu do skupiny prostředků. Použijte stejnou skupinu prostředků, do které je aktuálně nasazený váš cluster. Spusťte příkaz New-AzResourceGroupDeployment. Režim nemusíte zadávat, protože výchozí hodnota je přírůstková.

Poznámka

Pokud režim nastavíte na Dokončeno, můžete neúmyslně odstranit prostředky, které nejsou v šabloně. Proto ho v tomto scénáři nepoužívejte.

New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName <Resource Group that your cluster is currently deployed to> -TemplateFile <PathToTemplate>

Tady je vyplněný příklad stejného PowerShellu.

$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 dokončení nasazení se připojte ke clusteru pomocí nového certifikátu a proveďte několik dotazů. Pokud to dokážete. Pak můžete starý certifikát odstranit.

Pokud používáte certifikát podepsaný svým držitelem, nezapomeňte ho importovat do místního úložiště certifikátů 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)

Pro stručnou referenci tady je příkaz pro připojení k zabezpečenému clusteru.

$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

Pro stručnou referenci tady je příkaz pro získání stavu clusteru.

Get-ServiceFabricClusterHealth 

Nasazení klientských certifikátů do clusteru

Stejný postup jako v předchozích krocích 5 můžete použít k nasazení certifikátů z trezoru klíčů do uzlů. Stačí jenom definovat a použít různé parametry.

Přidání nebo odebrání klientských certifikátů

Kromě certifikátů clusteru můžete přidat klientské certifikáty pro provádění operací správy v clusteru Service Fabric.

Můžete přidat dva druhy klientských certifikátů – Správa nebo jen pro čtení. Ty pak můžete použít k řízení přístupu k operacím správce a operacím dotazů v clusteru. Ve výchozím nastavení se certifikáty clusteru přidají do seznamu povolených Správa certifikátů.

Můžete zadat libovolný počet klientských certifikátů. Každé přidání nebo odstranění způsobí aktualizaci konfigurace clusteru Service Fabric.

Přidání klientských certifikátů – Správa nebo Read-Only přes portál

  1. Přejděte do části Zabezpečení a vyberte tlačítko + Ověřování v horní části oddílu zabezpečení.
  2. V části Přidat ověřování zvolte Typ ověřování – klient jen pro čtení nebo klient Správa.
  3. Teď zvolte metodu autorizace. Service Fabric tím určí, jestli má tento certifikát vyhledat pomocí názvu subjektu nebo kryptografického otisku. Obecně platí, že použití metody autorizace názvu subjektu není dobrým postupem zabezpečení.

Přidat klientský certifikát

Odstranění klientských certifikátů – Správa nebo Read-Only pomocí portálu

Pokud chcete sekundární certifikát odebrat z používání pro zabezpečení clusteru, přejděte do části Zabezpečení a v místní nabídce konkrétního certifikátu vyberte možnost Odstranit.

Přidání certifikátů aplikací do škálovací sady virtuálních počítačů

Pokud chcete nasadit certifikát, který používáte pro své aplikace, do clusteru, přečtěte si tento ukázkový skript PowerShellu.

Další kroky

Další informace o správě clusteru najdete v těchto článcích: