Terminação TLS com os certificados do Key Vault

Azure Key Vault é um repositório de segredos gerenciado por plataforma que você pode usar para proteger segredos, chaves e certificados TLS/SSL. O Gateway de Aplicativo v2 do Azure dá suporte à integração com o Key Vault para certificados de servidor que estejam anexados a ouvintes habilitados para HTTPS. Esse suporte é limitado à SKU v2 do Gateway de Aplicativo.

O Gateway de Aplicativo oferece dois modelos para terminação TLS:

  • Forneça os certificados TLS/SSL anexados ao ouvinte. Esse modelo é a maneira tradicional de passar certificados TLS/SSL para o Gateway de Aplicativo para terminação TLS.
  • Forneça uma referência a um certificado ou segredo do Key Vault existente ao criar um ouvinte habilitado para HTTPS.

A integração do Gateway de Aplicativo com o Key Vault oferece muitos benefícios, como:

  • Segurança mais forte, pois os certificados TLS/SSL não são tratados diretamente pela equipe de desenvolvimento de aplicativos. A integração permite que uma equipe de segurança separada:
    • Configure gateways de aplicativo.
    • Controle ciclos de vida de gateways de aplicativo.
    • Conceda permissões a gateways de aplicativo selecionados para acessar certificados armazenados no Key Vault.
  • Ofereça suporte à importação de certificados existentes para o Key Vault. Ou use APIs do Key Vault para criar e gerenciar novos certificados com qualquer um dos parceiros confiáveis do Key Vault.
  • Ofereça suporte à renovação automática de certificados armazenados no Key Vault.

Certificados com suporte

O Gateway de Aplicativo do Azure atualmente oferece suporte apenas a certificados validados por software. Não há suporte para certificados validados pelo HSM (módulo de segurança de hardware).

Depois que o Gateway de Aplicativo do Azure é configurado para usar certificados do Key Vault, suas instâncias recuperam o certificado do Key Vault e os instalam localmente para terminação TLS. As instâncias sondam o Key Vault em intervalos de quatro horas para recuperar uma versão renovada do certificado, se existir. Se um certificado atualizado for encontrado, o certificado TLS/SSL associado ao ouvinte HTTPS será girado automaticamente.

Dica

Qualquer alteração no Application Gateway força uma verificação no Cofre de Chaves para ver se novas versões de certificados estão disponíveis. Isso inclui, mas não se limita, a alterações em configurações de IP de front-end, ouvintes, regras, pools de back-end, marcas de recurso e muito mais. Se um certificado atualizado for encontrado, o novo certificado será apresentado imediatamente.

O Gateway de Aplicativo usa um identificador de segredo no Key Vault para fazer referência aos certificados. No Azure PowerShell, na CLI do Azure ou no Azure Resource Manager, é altamente recomendável que você use um identificador de segredo que não especifique uma versão. Dessa forma, o Application Gateway gira automaticamente o certificado se uma versão mais recente estiver disponível no Cofre de Chaves. Um exemplo de um URI secreto sem uma versão é https://myvault.vault.azure.net/secrets/mysecret/. Você pode consultar as etapas do PowerShell fornecidas na seção a seguir.

O portal do Azure oferece suporte apenas a certificados do Key Vault, não a segredos. O Gateway de Aplicativo ainda dá suporte à referência de segredos do Key Vault, mas somente por meio de recursos fora do portal, como o PowerShell, a CLI do Azure, as APIs e os modelos do Azure Resource Manager (modelos do ARM).

As referências ao Key Vaults em outras assinaturas do Azure são suportadas, mas devem ser configuradas via modelo ARM, Azure PowerShell, CLI, Bicep, etc. A configuração do cofre de chaves de subscrição cruzada não é suportada pelo Gateway de Aplicativo através do portal Azure hoje.

Configurações de certificado no Key Vault

Para terminação TLS, o Gateway de Aplicativo dá suporte apenas a certificados no formato PFX (Troca de Informações Pessoais). Você pode importar um certificado existente ou criar um novo no Key Vault. Para evitar falhas, verifique se o status do certificado está definido como Habilitado no Key Vault.

Como funciona a integração

A integração do Gateway de Aplicativo do Azure com o Key Vault é um processo de configuração de três etapas:

Diagram that shows three steps for integrating Application Gateway with Key Vault.

Observação

A integração do Gateway de Aplicativo do Azure com o Key Vault dá suporte à política de acesso do Cofre e aos modelos de permissão de controle de acesso baseado em função do Azure.

Obter uma identidade gerenciada atribuída pelo usuário

O Gateway de Aplicativo usa uma identidade gerenciada para recuperar certificados do Key Vault em seu nome.

Você pode criar uma nova identidade gerenciada atribuída pelo usuário ou reutilizar uma existente com a integração. Para criar uma identidade gerenciada atribuída pelo usuário, confira Criar uma identidade gerenciada atribuída pelo usuário usando o portal do Azure.

Delegar identidade gerenciada atribuída pelo usuário para o Key Vault

Defina as políticas de acesso para usar a identidade gerenciada atribuída pelo usuário com o Key Vault:

  1. No portal do Azure, vá para Key Vault.

  2. Selecione o Key Vault que contém o certificado.

  3. Se você estiver usando o modelo de permissão Política de acesso do cofre: selecione Políticas de Acesso, selecione + Adicionar Política de Acesso, selecione Obter para Permissões de segredo e escolha sua identidade gerenciada atribuída pelo usuário para Selecionar a entidade de segurança. Em seguida, selecione Salvar.

    Se você estiver usando o controle de acesso baseado em função do Azure, siga o artigo Atribuir um acesso de identidade gerenciada a um recurso e atribua a identidade gerenciada atribuída pelo usuário a função de Usuário de segredos do Key Vault ao Azure Key Vault.

Verificar Permissões de Firewall para o Key Vault

A partir de 15 de março de 2021, o Key Vault reconhece o Gateway de Aplicativo como um serviço confiável, aproveitando as Identidades gerenciadas pelo usuário para autenticação no Azure Key Vault. Com o uso de pontos de extremidade de serviço e a habilitação da opção de serviços confiáveis no firewall do Key Vault, você pode criar um limite de rede segura no Azure. Você pode negar o acesso ao tráfego de todas as redes (incluindo o tráfego da Internet) ao Key Vault, mas ainda tornar o Key Vault acessível para um recurso de Gateway de Aplicativo do Azure em sua assinatura.

Quando você estiver usando um Key Vault restrito, use as seguintes etapas para configurar o Gateway de Aplicativo para usar firewalls e redes virtuais:

Dica

As etapas 1 a 3 não são necessárias quando o Key Vault tem um ponto de extremidade privado habilitado. O gateway de aplicativo pode acessar o Key Vault usando o endereço IP privado.

Importante

Se estiver usando pontos de extremidade privados para acessar o Key Vault, você precisará vincular a zona DNS privada privatelink.vaultcore.azure.net, que contém o registro correspondente ao Key Vault referenciado, com a rede virtual que contém o Gateway de Aplicativo. Os servidores DNS personalizados podem continuar a ser usados na rede virtual em vez dos resolvedores fornecidos pelo DNS do Azure, no entanto, a zona DNS privada também precisa permanecer vinculada à rede virtual.

  1. No portal do Azure, no Key Vault, selecione Rede.

  2. Na guia Firewalls e redes virtuais, escolha Redes selecionadas.

  3. Para Redes virtuais, selecione + Adicionar redes virtuais existentes e, em seguida, adicione a rede virtual e a sub-rede à instância do Gateway de Aplicativo. Se solicitado, verifique se o Se solicitado, certifique-se de que a caixa de seleção Não configurar pontos de extremidade de serviço 'Microsoft.KeyVault' neste momento esteja desmarcada para garantir que o ponto de extremidade de serviço Microsoft.KeyVault esteja habilitado na sub-rede.

  4. Selecione Sim para permitir que os serviços confiáveis ignorem o firewall do Key Vault.

    Screenshot that shows selections for configuring Application Gateway to use firewalls and virtual networks.

Observação

Se você implantar a instância do Gateway de Aplicativo por meio de um modelo do ARM, usando a CLI do Azure ou o PowerShell, ou por meio de um aplicativo do Azure implantado no portal do Azure, o certificado SSL será armazenado no Key Vault como um arquivo PFX codificado em base 64. Você deve concluir as etapas em Usar Azure Key Vault para passar o valor do parâmetro seguro durante a implantação.

É particularmente importante definir enabledForTemplateDeployment como true. O certificado pode ter uma senha ou não. Para um certificado com uma senha, o exemplo a seguir mostra uma configuração possível para a entrada sslCertificates no properties para a configuração do modelo ARM para o Gateway de Aplicativo.

"sslCertificates": [
     {
         "name": "appGwSslCertificate",
         "properties": {
             "data": "[parameters('appGatewaySSLCertificateData')]",
            "password": "[parameters('appGatewaySSLCertificatePassword')]"
        }
    }
]

Os valores de appGatewaySSLCertificateData e appGatewaySSLCertificatePassword são pesquisados no Key Vault, conforme descrito em Segredos de referência com ID dinâmica. Siga as referências de trás para frente a partir de parameters('secretName') para ver como a pesquisa ocorre. Se o certificado não tiver senha, omita a password entrada.

Configurar Ouvinte do Gateway de Aplicativo

Permissão do Key Modelo da política de acesso do cofre

Navegue até o Gateway de Aplicativo no portal do Azure e selecione a guia Ouvintes. Selecione Adicionar Ouvinte (ou selecione um ouvinte existente) e especifique HTTPS para o protocolo.

Em Escolher um certificado, selecione Criar novo e, em seguida, selecione Escolher um certificado no Key Vault em Configurações de HTTPS.

Em Nome do certificado, digite um nome amigável para o certificado a ser referenciado no Key Vault. Escolha a Identidade gerenciada, o Key Vault e o Certificado.

Depois de escolher, selecione Adicionar (se estiver criando) ou Salvar (se estiver editando) para aplicar o certificado do Key Vault referenciado ao ouvinte.

Modelo de permissão do controle de acesso baseado em função do Azure Key Vault

O Gateway de Aplicativo dá suporte aos certificados referenciados no Key Vault por meio do modelo de permissão de controle de acesso baseado em função. As primeiras etapas para referenciar o Key Vault devem ser concluídas por meio do modelo do ARM, do Bicep, da CLI ou da PowerShell.

Observação

Não há suporte para especificar os certificados do Azure Key Vault que estão sujeitos ao modelo de permissão de controle de acesso baseado em função por meio do portal.

Neste exemplo, vamos usar o PowerShell para referenciar um novo segredo do Key Vault.

# Get the Application Gateway we want to modify
$appgw = Get-AzApplicationGateway -Name MyApplicationGateway -ResourceGroupName MyResourceGroup
# Specify the resource id to the user assigned managed identity - This can be found by going to the properties of the managed identity
Set-AzApplicationGatewayIdentity -ApplicationGateway $appgw -UserAssignedIdentityId "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/MyResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/MyManagedIdentity"
# Get the secret ID from Key Vault
$secret = Get-AzKeyVaultSecret -VaultName "MyKeyVault" -Name "CertificateName"
$secretId = $secret.Id.Replace($secret.Version, "") # Remove the secret version so Application Gateway uses the latest version in future syncs
# Specify the secret ID from Key Vault 
Add-AzApplicationGatewaySslCertificate -KeyVaultSecretId $secretId -ApplicationGateway $appgw -Name $secret.Name
# Commit the changes to the Application Gateway
Set-AzApplicationGateway -ApplicationGateway $appgw

Depois que os comandos foram executados, você pode navegar até o Gateway de Aplicativo no portal do Azure e selecionar a guia Ouvintes. Clique em Adicionar Ouvinte (ou selecione um existente) e especifique o Protocolo como HTTPS.

Em Escolher um certificado, selecione o certificado nomeado nas etapas anteriores. Depois de escolher, selecione Adicionar (se estiver criando) ou Salvar (se estiver editando) para aplicar o certificado do Key Vault referenciado ao ouvinte.

Investigando e resolvendo erros do Key Vault

Observação

É importante considerar qualquer impacto no recurso do gateway de aplicativo ao fazer alterações ou revogar o acesso ao recurso do Cofre de Chaves. Se o gateway de aplicativo não conseguir acessar o cofre de chaves associado ou localizar o objeto de certificado nele, o gateway de aplicativo definirá automaticamente o ouvinte para um estado desabilitado.

Você pode identificar esse evento controlado pelo usuário exibindo a Integridade do Recurso para seu gateway de aplicativo. Saiba mais.

O Gateway de Aplicativo do Azure não pesquisa apenas a versão do certificado renovado no Key Vault a cada intervalo de quatro horas. Ele também registra qualquer erro e é integrado ao Assistente do Azure para exibir qualquer configuração incorreta com uma recomendação para essa correção.

  1. Entrar no portal do Azure
  2. Selecionar Assistente
  3. Selecione categoria Excelência operacional no menu à esquerda.
  4. Você encontra uma recomendação intitulada Resolver o problema do Cofre de Chaves do Azure para seu Gateway de Aplicativo, se o gateway estiver enfrentando esse problema. Verifique se a assinatura correta está selecionada nas opções suspensas acima.
  5. Selecione-a para exibir os detalhes do erro, o recurso do cofre de chaves associado e o Guia de solução de problemas para corrigir o problema exato.

Ao identificar esse evento por meio do Assistente do Azure ou do Resource Health, você pode resolver rapidamente problemas de configuração com seu Key Vault. É altamente recomendável que você aproveite os alertas do Assistente do Azure e do Resource Health para se manter informado quando um problema for detectado.

Para o alerta do Advisor, use "Resolver o problema do Cofre de Chaves do Azure para seu Gateway de Aplicativo" no tipo de recomendação mostrado:
Diagram that shows steps for Advisor alert.

Você pode configurar o alerta de integridade do recurso conforme ilustrado:
Diagram that shows steps for Resource health alert.

Próximas etapas

Configurar a terminação TLS com certificados do Key Vault usando o Azure PowerShell