Partilhar via


Adicionar ou remover certificados para um cluster do Service Fabric no Azure

É recomendável que você se familiarize com como o Service Fabric usa certificados X.509 e esteja familiarizado com os cenários de segurança do Cluster. Você deve entender o que é um certificado de cluster e para que é usado, antes de prosseguir.

O comportamento de carregamento de certificado padrão do SDK do Azure Service Fabrics é implantar e usar o certificado definido com a data de expiração mais distante no futuro; independentemente da sua definição de configuração primária ou secundária. Voltar ao comportamento clássico é uma ação avançada não recomendada e requer a configuração do valor do parâmetro "UseSecondaryIfNewer" como false dentro da sua Fabric.Code configuração.

A malha de serviço permite especificar dois certificados de cluster, um primário e um secundário, ao configurar a segurança de certificados durante a criação do cluster, além de certificados de cliente. Consulte a criação de um cluster do Azure via portal ou a criação de um cluster do Azure por meio do Azure Resource Manager para obter detalhes sobre como configurá-los no momento da criação. Se você especificar apenas um certificado de cluster no momento da criação, ele será usado como o certificado primário. Após a criação do cluster, você pode adicionar um novo certificado como secundário.

Nota

Para um cluster seguro, você sempre precisará de pelo menos um certificado de cluster válido (não revogado e não expirado) (primário ou secundário) implantado (caso contrário, o cluster para de funcionar). 90 dias antes de todos os certificados válidos atingirem a expiração, o sistema gera um rastreamento de aviso e um evento de integridade de aviso no nó. Atualmente, essas são as únicas notificações que o Service Fabric envia sobre a expiração do certificado.

Nota

Recomendamos que utilize o módulo Azure Az do PowerShell para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

Adicionar um certificado de cluster secundário usando o portal

O certificado de cluster secundário não pode ser adicionado através do portal do Azure; use o Azure Resource Manager.

Remover um certificado de cluster usando o portal

Para um cluster seguro, você sempre precisará de pelo menos um certificado válido (não revogado e não expirado). O certificado implantado com a data de expiração mais distante no futuro estará em uso, e removê-lo faz com que seu cluster pare de funcionar; Certifique-se de remover apenas o certificado que expirou ou um certificado não utilizado que expira o mais cedo.

Para remover um certificado de segurança de cluster não utilizado, navegue até a seção Segurança e selecione a opção 'Excluir' no menu de contexto do certificado não utilizado.

Se sua intenção for remover o certificado marcado como primário, você precisará implantar um certificado secundário com uma data de expiração mais no futuro do que o certificado primário, habilitando o comportamento de substituição automática; Exclua o certificado primário após a conclusão da substituição automática.

Adicionar um certificado secundário usando o Azure Resource Manager

Essas etapas pressupõem que você esteja familiarizado com o funcionamento do Gerenciador de Recursos e tenha implantado pelo menos um cluster do Service Fabric usando um modelo do Gerenciador de Recursos e tenha o modelo usado para configurar o cluster à mão. Também é assumido que você está confortável usando JSON.

Nota

Se você está procurando um modelo de exemplo e parâmetros que você pode usar para acompanhar ou como um ponto de partida, em seguida, baixá-lo a partir deste git-repo.

Editar o modelo do Resource Manager

Para facilitar o acompanhamento, a amostra 5-VM-1-NodeTypes-Secure_Step2.JSON contém todas as edições que fazemos. A amostra está disponível em git-repo.

Certifique-se de seguir todos os passos

  1. Abra o modelo do Gerenciador de Recursos usado para implantar seu Cluster. (Se você tiver baixado o exemplo do repositório anterior, use 5-VM-1-NodeTypes-Secure_Step1.JSON para implantar um cluster seguro e, em seguida, abra esse modelo).

  2. Adicione dois novos parâmetros "secCertificateThumbprint" e "secCertificateUrlValue" do tipo "string" à seção de parâmetros do seu modelo. Você pode copiar o trecho de código a seguir e adicioná-lo ao modelo. Dependendo da origem do seu modelo, você já pode tê-los definidos, se assim for, passe para a próxima etapa.

       "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. Fazer alterações no recurso Microsoft.ServiceFabric/clusters - Localize a definição de recurso "Microsoft.ServiceFabric/clusters" em seu modelo. Em propriedades dessa definição, você encontrará a tag JSON "Certificado", que deve se parecer com o seguinte trecho JSON:

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

    Adicione uma nova etiqueta "thumbprintSecondary" e atribua-lhe um valor "[parameters('secCertificateThumbprint')]".

    Portanto, agora a definição de recurso deve ser semelhante à seguinte (dependendo da sua fonte do modelo, pode não ser exatamente como o trecho abaixo).

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

    Se você quiser rolar o certificado, especifique o novo certificado como primário e mova o primário atual como secundário. Isso resulta na substituição do certificado primário atual para o novo certificado em uma etapa de implantação.

          "properties": {
            "certificate": {
              "thumbprint": "[parameters('secCertificateThumbprint')]",
              "thumbprintSecondary": "[parameters('certificateThumbprint')]",
              "x509StoreName": "[parameters('certificateStoreValue')]"
         }
    
  4. Faça alterações em todas as definições de recursos Microsoft.Compute/virtualMachineScaleSets - Localize a definição de recurso Microsoft.Compute/virtualMachineScaleSets. Role até o "editor": "Microsoft.Azure.ServiceFabric", em "virtualMachineProfile".

    Nas configurações do editor do Service Fabric, você verá algo assim.

    Json_Pub_Setting1

    Adicionar as novas entradas cert a ele

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

    As propriedades agora devem ter esta aparência:

    Json_Pub_Setting2

    Se você quiser rolar o certificado, especifique o novo certificado como primário e mova o primário atual como secundário. Isso resulta na substituição do certificado atual para o novo certificado em uma etapa de implantação.

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

    As propriedades agora devem ter esta aparência:
    Json_Pub_Setting3

  5. Fazer alterações em todas as definições de recurso Microsoft.Compute/virtualMachineScaleSets - Localize a definição de recurso Microsoft.Compute/virtualMachineScaleSets. Desloque-se para "vaultCertificates": , em "OSProfile". deve ser algo assim.

    Json_Pub_Setting4

    Adicione o secCertificateUrlValue a ele. Use o seguinte trecho:

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

    Agora, o Json resultante deve ser algo assim. Json_Pub_Setting5

Nota

Certifique-se de ter repetido as etapas 4 e 5 para todas as definições de recursos Nodetypes/Microsoft.Compute/virtualMachineScaleSets em seu modelo. Se você perder um deles, o certificado não será instalado nesse conjunto de escala de máquina virtual e você terá resultados imprevisíveis em seu cluster, incluindo a queda do cluster (se você acabar sem certificados válidos que o cluster possa usar para segurança. Portanto, verifique duas vezes, antes de prosseguir.

Edite seu arquivo de modelo para refletir os novos parâmetros adicionados acima

Se você estiver usando o exemplo do git-repo para acompanhar, poderá começar a fazer alterações em The sample 5-VM-1-NodeTypes-Secure.parameters_Step2.JSON

Edite seu arquivo de parâmetro de modelo do Gerenciador de Recursos, adicione os dois novos parâmetros para secCertificateThumbprint e 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>"
     },

Implementar o modelo no Azure

  • Agora você está pronto para implantar seu modelo no Azure. Abra um prompt de comando do Azure PowerShell versão 1+.
  • Entre na sua Conta do Azure e selecione a assinatura específica do Azure. Esta é uma etapa importante para as pessoas que têm acesso a mais de uma assinatura do Azure.
Connect-AzAccount
Select-AzSubscription -SubscriptionId <Subscription ID> 

Teste o modelo antes de implantá-lo. Use o mesmo Grupo de Recursos no qual o cluster está implantado no momento.

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

Implante o modelo em seu grupo de recursos. Use o mesmo Grupo de Recursos no qual o cluster está implantado no momento. Execute o comando New-AzResourceGroupDeployment. Não é necessário especificar o modo, pois o valor padrão é incremental.

Nota

Se você definir Modo como Concluído, poderá excluir inadvertidamente recursos que não estão no seu modelo. Portanto, não o use neste cenário.

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

Aqui está um exemplo preenchido do mesmo 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

Quando a implantação estiver concluída, conecte-se ao cluster usando o novo Certificado e execute algumas consultas. Se você é capaz de fazer. Em seguida, você pode excluir o certificado antigo.

Se você estiver usando um certificado autoassinado, não se esqueça de importá-los para seu armazenamento de certificados TrustedPeople local.

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

Para referência rápida, aqui está o comando para se conectar a um cluster seguro:

$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

Para referência rápida, aqui está o comando para obter a integridade do cluster:

Get-ServiceFabricClusterHealth 

Implantando certificados de cliente no cluster.

Você pode usar as mesmas etapas descritas nas Etapas 5 anteriores para que os certificados sejam implantados de um cofre de chaves para os nós. Você só precisa definir e usar parâmetros diferentes.

Adicionando ou removendo certificados de cliente

Além dos certificados de cluster, você pode adicionar certificados de cliente para executar operações de gerenciamento em um cluster do Service Fabric.

Você pode adicionar dois tipos de certificados de cliente - Admin ou Somente leitura. Eles, então, podem ser usados para controlar o acesso às operações de administração e operações de consulta no cluster. Por padrão, os certificados de cluster são adicionados à lista de certificados de administrador permitidos.

Você pode especificar qualquer número de certificados de cliente. Cada adição/exclusão resulta em uma atualização de configuração para o cluster do Service Fabric.

Adicionando certificados de cliente - Administrador ou Somente Leitura via portal

  1. Navegue até a seção Segurança e selecione o botão '+ Autenticação' na parte superior da seção de segurança.
  2. Na seção 'Adicionar autenticação', escolha o 'Tipo de autenticação' - 'Cliente somente leitura' ou 'Cliente administrador'
  3. Agora escolha o método de autorização. Isso indica ao Service Fabric se ele deve procurar esse certificado usando o nome do assunto ou a impressão digital. Em geral, não é uma boa prática de segurança usar o método de autorização do nome do assunto.

Exclusão de certificados de cliente - Admin ou somente leitura usando o portal

Para remover um certificado secundário de ser usado para segurança de cluster, navegue até a seção Segurança e selecione a opção 'Excluir' no menu de contexto do certificado específico.

Adicionando certificados de aplicativo a um conjunto de dimensionamento de máquina virtual

Para implantar um certificado que você usa para seus aplicativos em seu cluster, consulte este exemplo de script do PowerShell.

Próximos passos

Leia estes artigos para obter mais informações sobre gerenciamento de cluster: