Implantar segredos do aplicativo a um cluster gerenciado do Service Fabric

Os segredos podem ser informações confidenciais, como cadeias de conexão de armazenamento, senhas ou outros valores que não devem ser tratados como texto sem formatação. É recomendável usar o Azure Key Vault para gerenciar chaves e segredos para clusters gerenciados do Service Fabric e aproveitá-los para este artigo. No entanto, o uso de segredos em um aplicativo é independente de plataforma de nuvem para permitir que os aplicativos sejam implantados em um cluster hospedado em qualquer lugar.

A maneira recomendada de gerenciar as definições de configuração de serviço é por meio de pacotes de configuração de serviço. Os pacotes de configuração são atualizáveis e têm controle de versão por meio de atualizações sem interrupção gerenciadas com reversão automática e validação de integridade. Isso é preferível à configuração global, pois reduz as chances de uma interrupção de serviços globais. Segredos criptografados não são exceção. O Service Fabric tem recursos internos para criptografar e descriptografar valores em um arquivo Settings.XML do pacote de configuração usando a criptografia de certificado.

O diagrama a seguir ilustra o fluxo básico para gerenciamento de segredos em um aplicativo do Service Fabric:

visão geral do gerenciamento de segredos

Há quatro etapas principais nesse fluxo:

  1. Obtenha um certificado de codificação de dados.
  2. Instale o certificado em seu cluster.
  3. Criptografe valores do segredo ao implantar um aplicativo com o certificado e coloque-os no arquivo de configuração Settings.xml de um serviço.
  4. Leia os valores criptografados de Settings.xml ao descriptografar com o mesmo certificado de codificação.

O Azure Key Vault é usado aqui como um local de armazenamento seguro para certificados e como uma maneira de obter certificados instalados em nós de clusters gerenciados do Service Fabric no Azure.

Para obter um exemplo de como implementar segredos de aplicativos, consulte Gerenciar segredos do aplicativo.

Como alternativa, também damos suporte a KeyVaultReference. O suporte a KeyVaultReference no Service Fabric facilita a implantação de segredos em seus aplicativos simplesmente referenciando a URL do segredo armazenado no Key Vault

Criar um certificado de codificação de dados

Para criar seu próprio cofre de chaves e certificados de instalação, siga as instruções do Azure Key Vault usando a CLI do Azure, o PowerShell, o Portal e muito mais.

Observação

O cofre de chaves tem que estar habilitado para implantação do modelo para permitir que o provedor de recursos de computação obtenha certificados e os instale em nós de cluster.

Instalar o certificado em seu cluster

Esse certificado deve ser instalado em cada nó no cluster, e os clusters gerenciados do Service Fabric facilitam isso. O serviço de cluster gerenciado pode enviar por push segredos específicos da versão para os nós para ajudar a instalar segredos que não serão alterados com frequência, como a instalação de uma autoridade de certificação raiz privada para os nós. Para a maioria das cargas de trabalho de produção, sugerimos usar a extensão KeyVault. A extensão de VM de Key Vault fornece a atualização automática dos certificados armazenados no cofre de chaves do Azure vs uma versão estática.

Para clusters gerenciados, você precisará de três valores, dois do Azure Key Vault e um que você decida para o nome do repositório local nos nós.

Parâmetros:

  • Source Vault: este é o
    • exemplo: /subscriptions/{subscriptionid}/resourceGroups/myrg1/providers/Microsoft.KeyVault/vaults/mykeyvault1
  • Certificate URL: este é o identificador de segredo completo do Key Vault, não diferencia maiúsculas de minúsculas e é imutável
  • Certificate Store: esse é o repositório de certificados local em nós onde o certificado será colocado
    • nome do repositório de certificados nos nós, por exemplo: "MY"

Os clusters gerenciados do Service Fabric dão suporte a dois métodos para adicionar segredos específicos da versão a seus nós.

  1. O portal, durante a criação de cluster inicial, apenas insere valores de cima para esta área:

entrada de segredos do portal

  1. Azure Resource Manager durante a criação ou a qualquer momento
{
  "apiVersion": "2021-05-01",
  "type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
  "properties": {
    "vmSecrets": [
      {
        "sourceVault": {
          "id": "/subscriptions/{subscriptionid}/resourceGroups/myrg1/providers/Microsoft.KeyVault/vaults/mykeyvault1"
        },
        "vaultCertificates": [
          {
            "certificateStore": "MY",
            "certificateUrl": "https://mykeyvault1.vault.azure.net/certificates/{certificatename}/{secret-version}"
          }
        ]
      }
    ]
  }
}