Aggiungere o rimuovere certificati per un cluster Service Fabric in AzureAdd or remove certificates for a Service Fabric cluster in Azure

È consigliabile acquisire familiarità con l'uso dei certificati X.509 da parte di Service Fabric e con gli scenari di sicurezza di un cluster di Service Fabric.It is recommended that you familiarize yourself with how Service Fabric uses X.509 certificates and be familiar with the Cluster security scenarios. È necessario comprendere cos'è un certificato del cluster e a cosa serve prima di procedere.You must understand what a cluster certificate is and what is used for, before you proceed further.

Service Fabric consente di specificare due certificati cluster, uno primario e uno secondario, durante la configurazione della sicurezza basata su certificati al momento della creazione del cluster, oltre ai certificati client.Service fabric lets you specify two cluster certificates, a primary and a secondary, when you configure certificate security during cluster creation, in addition to client certificates. Per informazioni dettagliate sulla loro configurazione in fase di creazione, vedere l'argomento relativo alla creazione di un di cluster Azure tramite il portale o alla creazione di un cluster di Azure tramite Azure Resource Manager.Refer to creating an azure cluster via portal or creating an azure cluster via Azure Resource Manager for details on setting them up at create time. Se si specifica un solo certificato cluster in fase di creazione, questo viene usato come certificato primario.If you specify only one cluster certificate at create time, then that is used as the primary certificate. Dopo la creazione del cluster è possibile aggiungere un nuovo certificato come secondario.After cluster creation, you can add a new certificate as a secondary.

Nota

Per un cluster protetto, è sempre necessario almeno un certificato cluster primario o secondario valido, non revocato né scaduto, e distribuito. In caso contrario, il cluster smette di funzionare.For a secure cluster, you will always need at least one valid (not revoked and not expired) cluster certificate (primary or secondary) deployed (if not, the cluster stops functioning). 90 giorni prima della scadenza della copertura di tutti i certificati validi il sistema genera una traccia di avviso e anche un evento di integrità dell'avviso nel nodo.90 days before all valid certificates reach expiration, the system generates a warning trace and also a warning health event on the node. Attualmente non sono disponibili messaggi di posta elettronica o altre notifiche inviati da Service Fabric su questo argomento.There is currently no email or any other notification that service fabric sends out on this topic.

Aggiungere un certificato cluster secondario tramite il portaleAdd a secondary cluster certificate using the portal

Non è possibile aggiungere il certificato cluster secondario tramite il portale di Azure,Secondary cluster certificate cannot be added through the Azure portal. è necessario usare Azure PowerShell.You have to use Azure powershell for that. Il processo è descritto più avanti in questo documento.The process is outlined later in this document.

Scambiare i certificati cluster tramite il portaleSwap the cluster certificates using the portal

Dopo aver distribuito un certificato cluster secondario, è possibile scambiare il certificato secondario con il certificato primario passando al pannello Sicurezza e selezionando l'opzione "Scambia con primario" dal menu di scelta rapida.After you have successfully deployed a secondary cluster certificate, if you want to swap the primary and secondary, then navigate to the Security blade, and select the 'Swap with primary' option from the context menu to swap the secondary cert with the primary cert.

Scambiare i certificati

Rimuovere un certificato cluster tramite il portaleRemove a cluster certificate using the portal

Per un cluster sicuro, è sempre necessario almeno un certificato (primario o secondario) valido (non revocato né scaduto) distribuito. In caso contrario, il cluster smette di funzionare.For a secure cluster, you will always need at least one valid (not revoked and not expired) certificate (primary or secondary) deployed if not, the cluster stops functioning.

Per rimuovere un certificato secondario perché non venga usato per la sicurezza del cluster, passare al pannello Sicurezza e selezionare l'opzione "Elimina" dal menu di scelta rapida per il certificato secondario.To remove a secondary certificate from being used for cluster security, Navigate to the Security blade and select the 'Delete' option from the context menu on the secondary certificate.

Se si intende rimuovere il certificato contrassegnato come primario, è prima necessario scambiarlo con il secondario e quindi eliminare il secondario al termine dell'aggiornamento.If your intent is to remove the certificate that is marked primary, then you will need to swap it with the secondary first, and then delete the secondary after the upgrade has completed.

Aggiungere un certificato secondario tramite PowerShell per Resource ManagerAdd a secondary certificate using Resource Manager Powershell

Questi passaggi presuppongono che si abbia familiarità con il funzionamento di Resource Manager, che sia stato distribuito almeno un cluster di Service Fabric usando un modello di Resource Manager e che il modello usato per configurare il cluster sia a portata di mano.These steps assume that you are familiar with how Resource Manager works and have deployed atleast one Service Fabric cluster using a Resource Manager template, and have the template that you used to set up the cluster handy. Si presuppone anche che si abbia dimestichezza con l'uso di JSON.It is also assumed that you are comfortable using JSON.

Nota

In questo repository Git sono disponibili un modello di esempio e i parametri che è possibile usare per procedere o come punto di partenza.If you are looking for a sample template and parameters that you can use to follow along or as a starting point, then download it from this git-repo.

Modificare il modello di Azure Resource ManagerEdit your Resource Manager template

Il file 5-VM-1-NodeTypes-Secure_Step2.JSON contiene tutte le modifiche illustrate in questa sezione e permette di seguire più facilmente.For ease of following along, sample 5-VM-1-NodeTypes-Secure_Step2.JSON contains all the edits we will be making. L'esempio è disponibile nel repository Git.the sample is available at git-repo.

Assicurarsi di seguire tutti i passaggiMake sure to follow all the steps

Passaggio 1: aprire il modello di Resource Manager usato per la distribuzione del cluster.Step 1: Open up the Resource Manager template you used to deploy you Cluster. Se è stato scaricato l'esempio dal repository indicato in precedenza, usare 5-VM-1-NodeTypes-Secure_Step1.JSON per distribuire un cluster protetto e quindi aprire il modello.(If you have downloaded the sample from the above repo, then Use 5-VM-1-NodeTypes-Secure_Step1.JSON to deploy a secure cluster and then open up that template).

Passaggio 2: aggiungere due nuovi parametri "secCertificateThumbprint" e "secCertificateUrlValue" di tipo stringa alla sezione parameters del modello.Step 2: Add two new parameters "secCertificateThumbprint" and "secCertificateUrlValue" of type "string" to the parameter section of your template. È possibile copiare il frammento di codice seguente e aggiungerlo al modello.You can copy the following code snippet and add it to the template. A seconda dell'origine del modello, potrebbero già essere definiti. In tal caso, andare al passaggio successivo.Depending on the source of your template, you may already have these defined, if so move to the next step.

   "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>"
      }
    },

Passaggio 3: apportare modifiche alla risorsa Microsoft.ServiceFabric/clusters. Trovare la definizione della risorsa Microsoft.ServiceFabric/clusters nel modello.Step 3: Make changes to the Microsoft.ServiceFabric/clusters resource - Locate the "Microsoft.ServiceFabric/clusters" resource definition in your template. Il tag JSON "Certificate" nelle proprietà della definizione dovrebbe sarà simile al frammento JSON seguente:Under properties of that definition, you will find "Certificate" JSON tag, which should look something like the following JSON snippet:

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

Aggiungere un nuovo tag "thumbprintSecondary" e assegnare un valore "[parameters('secCertificateThumbprint')]".Add a new tag "thumbprintSecondary" and give it a value "[parameters('secCertificateThumbprint')]".

A seconda dell'origine del modello, la definizione della risorsa dovrebbe avere un aspetto simile al seguente, anche se non identico.So now the resource definition should look like the following (depending on your source of the template, it may not be exactly like the snippet below).

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

Per eseguire il rollover del certificato, è possibile specificare il nuovo certificato come primario e spostare il certificato primario corrente come secondario.If you want to rollover the cert, then specify the new cert as primary and moving the current primary as secondary. Ciò determina il rollover del certificato primario corrente nel nuovo certificato in un solo passaggio di distribuzione.This results in the rollover of your current primary certificate to the new certificate in one deployment step.

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

Passaggio 4: apportare modifiche a tutte le definizioni di risorse Microsoft.Compute/virtualMachineScaleSets. Trovare la definizione della risorsa Microsoft.Compute/virtualMachineScaleSets.Step 4: Make changes to all the Microsoft.Compute/virtualMachineScaleSets resource definitions - Locate the Microsoft.Compute/virtualMachineScaleSets resource definition. Scorrere fino alla sezione "publisher": "Microsoft.Azure.ServiceFabric" in "virtualMachineProfile".Scroll to the "publisher": "Microsoft.Azure.ServiceFabric", under "virtualMachineProfile".

Nelle impostazioni di pubblicazione di Service Fabric dovrebbe essere presente una sezione simile alla seguente.In the service fabric publisher settings, you should see something like this.

Json_Pub_Setting1

Aggiungere qui le nuove voci del certificato.Add the new cert entries to it

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

L'aspetto delle proprietà dovrebbe essere simile al seguente:The properties should now look like this

Json_Pub_Setting2

Per eseguire il rollover del certificato, è possibile specificare il nuovo certificato come primario e spostare il certificato primario corrente come secondario.If you want to rollover the cert, then specify the new cert as primary and moving the current primary as secondary. Ciò determina il rollover del certificato corrente nel nuovo certificato in un passaggio di distribuzione.This results in the rollover of your current certificate to the new certificate in one deployment step.

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

L'aspetto delle proprietà dovrebbe essere simile al seguente:The properties should now look like this

Json_Pub_Setting3

Passaggio 5: apportare modifiche a tutte le definizioni di risorse Microsoft.Compute/virtualMachineScaleSets. Trovare la definizione della risorsa Microsoft.Compute/virtualMachineScaleSets.Step 5: Make Changes to all the Microsoft.Compute/virtualMachineScaleSets resource definitions - Locate the Microsoft.Compute/virtualMachineScaleSets resource definition. Scorrere fino alla sezione "vaultCertificates": in "OSProfile".Scroll to the "vaultCertificates": , under "OSProfile". Dovrebbe avere un aspetto simile al seguente:it should look something like this.

Json_Pub_Setting4

Aggiungere secCertificateUrlValueAdd the secCertificateUrlValue to it. usando il frammento di codice seguente:use the following snippet:

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

A questo punto il file JSON risultante dovrebbe avere un aspetto simile al seguente:Now the resulting Json should look something like this. Json_Pub_Setting5Json_Pub_Setting5

Nota

Assicurarsi che nel modello siano stati ripetuti i passaggi 4 e 5 per tutte le definizioni della risorsa Nodetypes/Microsoft.Compute/virtualMachineScaleSets.Make sure that you have repeated steps 4 and 5 for all the Nodetypes/Microsoft.Compute/virtualMachineScaleSets resource definitions in your template. Se si salta un passaggio il certificato non viene installato nel VMSS e si possono verificare effetti imprevedibili del cluster, inclusa l'indisponibilità del cluster, in assenza di certificati validi che il cluster possa usare per la sicurezza.If you miss one of them, the certificate will not get installed on that VMSS and you will have unpredictable results in your cluster, including the cluster going down (if you end up with no valid certificates that the cluster can use for security. È quindi importante verificare, prima di procedere.So please double check, before proceeding further.

Modificare il file di modello per riflettere i nuovi parametri aggiunti in precedenzaEdit your template file to reflect the new parameters you added above

Se si segue l'esempio del repository Git, è possibile iniziare a modificare l'esempio 5-VM-1-NodeTypes-Secure.paramters_Step2.JSON.If you are using the sample from the git-repo to follow along, you can start to make changes in The sample 5-VM-1-NodeTypes-Secure.paramters_Step2.JSON

Modificare il file dei parametri del modello di Resource Manager e aggiungere i due nuovi parametri per secCertificateThumbprint e secCertificateUrlValue.Edit your Resource Manager Template parameter File, add the two new parameters for secCertificateThumbprint and 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>"
     },

Distribuire il modello in AzureDeploy the template to Azure

  • È ora possibile distribuire il progetto in Azure.You are now ready to deploy your template to Azure. Aprire il prompt dei comandi di Azure PowerShell versione 1+.Open an Azure PS version 1+ command prompt.
  • Accedere al proprio account Azure e selezionare la sottoscrizione di Azure specifica.Log in to your Azure Account and select the specific azure subscription. Questo passaggio è importante per gli utenti che hanno accesso a più sottoscrizioni di Azure.This is an important step for folks who have access to more than one azure subscription.
Login-AzureRmAccount
Select-AzureRmSubscription -SubscriptionId <Subcription ID> 

Testare il modello prima di distribuirlo.Test the template prior to deploying it. Usare lo stesso gruppo di risorse in cui è attualmente distribuito il cluster.Use the same Resource Group that your cluster is currently deployed to.

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

Distribuire il modello nel gruppo di risorse.Deploy the template to your resource group. Usare lo stesso gruppo di risorse in cui è attualmente distribuito il cluster.Use the same Resource Group that your cluster is currently deployed to. Eseguire il comando New-AzureRmResourceGroupDeployment.Run the New-AzureRmResourceGroupDeployment command. Non è necessario specificare la modalità perché il valore predefinito è incrementale.You do not need to specify the mode, since the default value is incremental.

Nota

Se si imposta la modalità come completa, è possibile eliminare inavvertitamente le risorse non presenti nel modello.If you set Mode to Complete, you can inadvertently delete resources that are not in your template. Non usarla in questo scenario.So do not use it in this scenario.

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

Di seguito è riportato un esempio compilato dello stesso in PowerShell.Here is a filled out example of the same powershell.

$ResouceGroup2 = "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-AzureRmResourceGroupDeployment -ResourceGroupName $ResouceGroup2 -TemplateParameterFile $TemplateParmFile -TemplateUri $TemplateFile -clusterName $ResouceGroup2

Una volta completata la distribuzione, connettersi al cluster tramite il nuovo certificato ed eseguire alcune query,Once the deployment is complete, connect to your cluster using the new Certificate and perform some queries. se si è in grado di eseguire questa operazione.If you are able to do. È quindi possibile eliminare il vecchio certificato.Then you can delete the old certificate.

Se si usa un certificato autofirmato, non dimenticare di importarlo nell'archivio certificati locale TrustedPeople.If you are using a self-signed certificate, do not forget to import them into your local TrustedPeople cert store.

######## 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)

Per riferimento rapido ecco il comando per connettersi a un cluster sicuroFor quick reference here is the command to connect to a secure cluster

$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

Per riferimento rapido ecco il comando per ottenere l'integrità del clusterFor quick reference here is the command to get cluster health

Get-ServiceFabricClusterHealth 

Distribuzione di certificati dell'applicazione nel clusterDeploying Application certificates to the cluster.

Per fare in modo che i certificati vengano distribuiti da un insieme di credenziali delle chiavi ai nodi, è possibile usare la stessa procedura descritta nel passaggio 5 precedente.You can use the same steps as outlined in Steps 5 above to have the certificates deployed from a keyvault to the Nodes. È sufficiente definire e usare parametri diversi.you just need define and use different parameters.

Aggiunta o rimozione di certificati clientAdding or removing Client certificates

Oltre ai certificati cluster, è possibile aggiungere certificati client per eseguire operazioni di gestione su un cluster di Service Fabric.In addition to the cluster certificates, you can add client certificates to perform management operations on a service fabric cluster.

È possibile aggiungere due tipi di certificati client, Amministratore o Sola lettura,You can add two kinds of client certificates - Admin or Read-only. che permettono di controllare l'accesso alle operazioni di amministrazione e di query nel cluster.These then can be used to control access to the admin operations and Query operations on the cluster. Per impostazione predefinita, i certificati cluster vengono aggiunti all'elenco di certificati Amministratore consentiti.By default, the cluster certificates are added to the allowed Admin certificates list.

È possibile specificare un numero qualsiasi di certificati client.you can specify any number of client certificates. Ogni aggiunta o eliminazione comporta un aggiornamento della configurazione del cluster di Service Fabric.Each addition/deletion results in a configuration update to the service fabric cluster

Aggiunta di certificati client Amministratore o Sola lettura tramite il portaleAdding client certificates - Admin or Read-Only via portal

  1. Passare al pannello Sicurezza e selezionare il pulsante "+ Autenticazione" nella parte superiore del pannello.Navigate to the Security blade, and select the '+ Authentication' button on top of the security blade.
  2. Nel pannello "Aggiungi autenticazione" scegliere il "Tipo di autenticazione", "Client di sola lettura" o "Client amministratore".On the 'Add Authentication' blade, choose the 'Authentication Type' - 'Read-only client' or 'Admin client'
  3. Scegliere il metodo di autorizzazione.Now choose the Authorization method. Indica a Service Fabric se cercare questo certificato usando il nome del soggetto o l'identificazione personale.This indicates to Service Fabric whether it should look up this certificate by using the subject name or the thumbprint. In generale, usare il metodo di autorizzazione del nome del soggetto non è una procedura di sicurezza consigliata.In general, it is not a good security practice to use the authorization method of subject name.

Aggiungere il certificato client

Eliminazione di certificati client Amministratore o Sola lettura tramite il portaleDeletion of Client Certificates - Admin or Read-Only using the portal

Per rimuovere un certificato secondario perché non venga usato per la sicurezza del cluster, passare al pannello Sicurezza e selezionare l'opzione "Elimina" dal menu di scelta rapida per il certificato specifico.To remove a secondary certificate from being used for cluster security, Navigate to the Security blade and select the 'Delete' option from the context menu on the specific certificate.

Passaggi successiviNext steps

Per ulteriori informazioni sulla gestione del cluster, leggere questi articoli:Read these articles for more information on cluster management: