Implantar segredos de aplicativo em um cluster gerenciado do Service Fabric

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

A maneira recomendada de gerenciar 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 versionados e atualizáveis por meio de atualizações contínuas gerenciadas com validação de integridade e reversão automática. Isso é preferível à configuração global, pois reduz as chances de uma interrupção global do serviço. Os segredos encriptados não são exceção. O Service Fabric tem recursos internos para criptografar e descriptografar valores em um pacote de configuração Settings.xml arquivo usando criptografia de certificado.

O diagrama a seguir ilustra o fluxo básico para o 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 no cluster.
  3. Criptografe valores secretos ao implantar um aplicativo com o certificado e injete-os no arquivo de configuração Settings.xml de um serviço.
  4. Leia valores criptografados fora de Settings.xml descriptografando com o mesmo certificado de criptografia.

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

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

Como alternativa, também suportamos KeyVaultReference. O suporte a KeyVaultReference do Service Fabric facilita a implantação de segredos em seus aplicativos simplesmente fazendo referência à URL do segredo armazenado no Cofre da Chave

Criar um certificado de codificação de dados

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

Nota

O cofre de chaves deve ser habilitado para implantação de modelo para permitir que o provedor de recursos de computação obtenha certificados dele e o instale em nós de cluster.

Instalar o certificado no cluster

Esse certificado deve ser instalado em cada nó do cluster e os clusters gerenciados pelo Service Fabric ajudam a facilitar isso. O serviço de cluster gerenciado pode enviar 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 nos nós. Para a maioria das cargas de trabalho de produção, sugerimos o uso da extensão KeyVault. A extensão de VM do Cofre da Chave fornece atualização automática de certificados armazenados em um cofre de chaves do Azure versus uma versão estática.

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

Parâmetros:

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

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

  1. Portal durante a criação inicial do cluster somente Insira 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}"
          }
        ]
      }
    ]
  }
}