Serviços de backend seguros utilizando a autenticação de certificado de cliente na Azure API ManagementSecure backend services using client certificate authentication in Azure API Management

A API Management permite-lhe garantir o acesso ao serviço de backend de uma API utilizando certificados de cliente.API Management allows you to secure access to the backend service of an API using client certificates. Este guia mostra como gerir certificados numa instância de serviço da Azure API Management utilizando o portal Azure.This guide shows how to manage certificates in an Azure API Management service instance using the Azure portal. Também explica como configurar uma API para usar um certificado para aceder a um serviço de backend.It also explains how to configure an API to use a certificate to access a backend service.

Também pode gerir certificados de Gestão de API utilizando a API Management REST.You can also manage API Management certificates using the API Management REST API.

Opções de certificadoCertificate options

A API Management oferece duas opções para gerir certificados utilizados para garantir o acesso aos serviços de backend:API Management provides two options to manage certificates used to secure access to backend services:

  • Referência de um certificado gerido no Cofre chave AzureReference a certificate managed in Azure Key Vault
  • Adicione um arquivo de certificado diretamente na Gestão da APIAdd a certificate file directly in API Management

A utilização de certificados de cofre chave é recomendada porque ajuda a melhorar a segurança da API Management:Using key vault certificates is recommended because it helps improve API Management security:

  • Os certificados armazenados em cofres-chave podem ser reutilizados em todos os serviçosCertificates stored in key vaults can be reused across services
  • As políticas de acesso granular podem ser aplicadas a certificados armazenados em cofres-chaveGranular access policies can be applied to certificates stored in key vaults
  • Os certificados atualizados no cofre chave são automaticamente rodados na Gestão da API.Certificates updated in the key vault are automatically rotated in API Management. Após atualização no cofre chave, um certificado na API Management é atualizado dentro de 4 horas.After update in the key vault, a certificate in API Management is updated within 4 hours. Também pode atualizar manualmente o certificado utilizando o portal Azure ou através da gestão REST API.You can also manually refresh the certificate using the Azure portal or via the management REST API.

Pré-requisitosPrerequisites

Nota

Este artigo foi atualizado para utilizar o módulo Azure Az PowerShell.This article has been updated to use the Azure Az PowerShell module. O módulo Az PowerShell é o módulo do PowerShell recomendado para interagir com o Azure.The Az PowerShell module is the recommended PowerShell module for interacting with Azure. Para começar a utilizar o módulo Azure PowerShell, veja Instalar o Azure PowerShell.To get started with the Az PowerShell module, see Install Azure PowerShell. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.To learn how to migrate to the Az PowerShell module, see Migrate Azure PowerShell from AzureRM to Az.

  • Se ainda não criou uma instância de serviço de Gestão API, consulte Criar uma instância de serviço de Gestão API.If you have not created an API Management service instance yet, see Create an API Management service instance.
  • Deverá ter o seu serviço de backend configurado para autenticação de certificado de cliente.You should have your backend service configured for client certificate authentication. Para configurar a autenticação do certificado no Serviço de Aplicações Azure, consulte este artigo.To configure certificate authentication in the Azure App Service, refer to this article.
  • Precisa de ter acesso ao certificado e à senha de gestão num cofre de chaves Azure ou fazer upload para o serviço de Gestão da API.You need access to the certificate and the password for management in an Azure key vault or upload to the API Management service. O certificado deve estar no formato PFX.The certificate must be in PFX format. Certificados auto-assinados são permitidos.Self-signed certificates are allowed.

Pré-requisitos para a integração do cofre-chavePrerequisites for key vault integration

  1. Para obter passos para criar um cofre de chaves, consulte Quickstart: Crie um cofre de chaves utilizando o portal Azure.For steps to create a key vault, see Quickstart: Create a key vault using the Azure portal.
  2. Ativar uma identidade gerida atribuída pelo sistema ou atribuída ao utilizador no caso de Gestão da API.Enable a system-assigned or user-assigned managed identity in the API Management instance.
  3. Atribua uma política de acesso ao cofre chave à identidade gerida com permissões para obter e listar certificados do cofre.Assign a key vault access policy to the managed identity with permissions to get and list certificates from the vault. Para adicionar a política:To add the policy:
    1. No portal, navegue para o cofre da chave.In the portal, navigate to your key vault.
    2. Selecione Definições > Políticas de acesso > + Adicionar Política de Acesso.Select Settings > Access policies > + Add Access Policy.
    3. Selecione permissões de Certificado e, em seguida, selecione Get and List.Select Certificate permissions, then select Get and List.
    4. Em Select principal, selecione o nome do recurso da sua identidade gerida.In Select principal, select the resource name of your managed identity. Se estiver a usar uma identidade atribuída ao sistema, o principal é o nome da sua instância de Gestão de API.If you're using a system-assigned identity, the principal is the name of your API Management instance.
  4. Criar ou importar um certificado para o cofre da chave.Create or import a certificate to the key vault. Consulte Quickstart: set and reconfesso de um certificado do Azure Key Vault utilizando o portal Azure.See Quickstart: Set and retrieve a certificate from Azure Key Vault using the Azure portal.

Requisitos para firewall Key VaultRequirements for Key Vault firewall

Se a firewall key Vault estiver ativada no cofre da chave, os seguintes são requisitos adicionais:If Key Vault firewall is enabled on your key vault, the following are additional requirements:

  • Deve utilizar a identidade gerida do sistema atribuído à API Management para aceder ao cofre de chaves.You must use the API Management instance's system-assigned managed identity to access the key vault.
  • Na firewall Key Vault, permita que os Serviços Da Microsoft fidedignas contornem esta opção de firewall.In Key Vault firewall, enable the Allow Trusted Microsoft Services to bypass this firewall option.

Requisitos de rede virtualVirtual network requirements

Se a instância de Gestão da API for implantada numa rede virtual, também configurar as seguintes definições de rede:If the API Management instance is deployed in a virtual network, also configure the following network settings:

  • Ativar um ponto final de serviço para a Azure Key Vault na sub-rede API Management.Enable a service endpoint to Azure Key Vault on the API Management subnet.
  • Configure uma regra do grupo de segurança da rede (NSG) para permitir o tráfego de saída para as etiquetasde serviço AzureKeyVault e AzureActiveDirectory .Configure a network security group (NSG) rule to allow outbound traffic to the AzureKeyVault and AzureActiveDirectory service tags.

Para mais detalhes, consulte os detalhes da configuração da rede no Connect a uma rede virtual.For details, see network configuration details in Connect to a virtual network.

Adicione um certificado de cofre chaveAdd a key vault certificate

Consulte os pré-requisitos para a integração do cofre de chaves.See Prerequisites for key vault integration.

Atenção

Ao utilizar um certificado de cofre chave na API Management, tenha cuidado para não apagar o certificado, o cofre ou a identidade gerida utilizada para aceder ao cofre da chave.When using a key vault certificate in API Management, be careful not to delete the certificate, key vault, or managed identity used to access the key vault.

Para adicionar um certificado de cofre chave à API Management:To add a key vault certificate to API Management:

  1. No portal Azure,navegue para o seu caso de Gestão API.In the Azure portal, navigate to your API Management instance.

  2. Em Segurança, selecione Certificados.Under Security, select Certificates.

  3. Selecione Certificados > + Adicionar.Select Certificates > + Add.

  4. Em Id, insira um nome à sua escolha.In Id, enter a name of your choice.

  5. No Certificado, selecione Key vault.In Certificate, select Key vault.

  6. Introduza o identificador de um certificado de cofre de chave ou escolha Selecione para selecionar um certificado de um cofre de chaves.Enter the identifier of a key vault certificate, or choose Select to select a certificate from a key vault.

    Importante

    Se introduzir um identificador de certificado de cofre de chave, certifique-se de que não tem informações sobre a versão.If you enter a key vault certificate identifier yourself, ensure that it doesn't have version information. Caso contrário, o certificado não rodará automaticamente na Gestão da API após uma atualização no cofre da chave.Otherwise, the certificate won't rotate automatically in API Management after an update in the key vault.

  7. Na identidade do Cliente, selecione uma identidade gerida atribuída pelo sistema ou uma identidade gerida atribuída pelo utilizador.In Client identity, select a system-assigned or an existing user-assigned managed identity. Saiba como adicionar ou modificar identidades geridas no seu serviço de Gestão API.Learn how to add or modify managed identities in your API Management service.

    Nota

    A identidade precisa de permissões para obter e listar o certificado do cofre da chave.The identity needs permissions to get and list certificate from the key vault. Se ainda não configurar o acesso ao cofre da chave, a API Management solicita-lhe que possa configurar automaticamente a identidade com as permissões necessárias.If you haven't already configured access to the key vault, API Management prompts you so it can automatically configure the identity with the necessary permissions.

  8. Selecione Adicionar.Select Add.

    Adicionar certificado de cofre chave

Faça upload de um certificadoUpload a certificate

Para fazer o upload de um certificado de cliente para a API Management:To upload a client certificate to API Management:

  1. No portal Azure,navegue para o seu caso de Gestão API.In the Azure portal, navigate to your API Management instance.

  2. Em Segurança, selecione Certificados.Under Security, select Certificates.

  3. Selecione Certificados > + Adicionar.Select Certificates > + Add.

  4. Em Id, insira um nome à sua escolha.In Id, enter a name of your choice.

  5. No Certificado, selecione Custom.In Certificate, select Custom.

  6. Navegue para selecionar o ficheiro certificado .pfx e introduza a sua palavra-passe.Browse to select the certificate .pfx file, and enter its password.

  7. Selecione Adicionar.Select Add.

    Faça upload do certificado de cliente

Depois de o certificado ser carregado, aparece na janela certificados.After the certificate is uploaded, it shows in the Certificates window. Se tiver muitos certificados, tome nota da impressão digital do certificado pretendido de forma a configurar uma API para utilizar um certificado de cliente para autenticação gateway.If you have many certificates, make a note of the thumbprint of the desired certificate in order to configure an API to use a client certificate for gateway authentication.

Nota

Para desativar a validação da cadeia de certificados quando utilizar, por exemplo, um certificado auto-assinado, siga os passos descritos nos certificados auto-assinados, mais tarde neste artigo.To turn off certificate chain validation when using, for example, a self-signed certificate, follow the steps described in Self-signed certificates, later in this article.

Configurar uma API para utilizar o certificado de cliente para a autenticação gatewayConfigure an API to use client certificate for gateway authentication

  1. No portal Azure,navegue para o seu caso de Gestão API.In the Azure portal, navigate to your API Management instance.

  2. Em APIs, selecione APIs.Under APIs, select APIs.

  3. Selecione uma API da lista.Select an API from the list.

  4. No separador Design, selecione o ícone do editor na secção Backend.In the Design tab, select the editor icon in the Backend section.

  5. Nas credenciais Gateway, selecione o Certificado do Cliente e selecione o seu certificado a partir do dropdown.In Gateway credentials, select Client cert and select your certificate from the dropdown.

  6. Selecione Guardar.Select Save.

    Use o certificado de cliente para autenticação gateway

Atenção

Esta alteração tem efeito imediato e as chamadas para operações dessa API utilizarão o certificado para autenticar no servidor backend.This change is effective immediately, and calls to operations of that API will use the certificate to authenticate on the backend server.

Dica

Quando um certificado é especificado para autenticação gateway para o serviço de backend de uma API, torna-se parte da política para essa API, e pode ser visto no editor de política.When a certificate is specified for gateway authentication for the backend service of an API, it becomes part of the policy for that API, and can be viewed in the policy editor.

Certificados auto-assinadosSelf-signed certificates

Se estiver a utilizar certificados auto-assinados, terá de desativar a validação da cadeia de certificados para a API Management para comunicar com o sistema de backend.If you are using self-signed certificates, you will need to disable certificate chain validation for API Management to communicate with the backend system. Caso contrário, devolverá um código de erro de 500.Otherwise it will return a 500 error code. Para configurar isto, pode utilizar os New-AzApiManagementBackend cmdlets PowerShell (para novo backend) ou Set-AzApiManagementBackend (para backend existente) e definir o -SkipCertificateChainValidation parâmetro para True .To configure this, you can use the New-AzApiManagementBackend (for new backend) or Set-AzApiManagementBackend (for existing backend) PowerShell cmdlets and set the -SkipCertificateChainValidation parameter to True.

$context = New-AzApiManagementContext -resourcegroup 'ContosoResourceGroup' -servicename 'ContosoAPIMService'
New-AzApiManagementBackend -Context  $context -Url 'https://contoso.com/myapi' -Protocol http -SkipCertificateChainValidation $true

Excluir um certificado de clienteDelete a client certificate

Para eliminar um certificado, selecione-o e, em seguida, selecione Eliminar do menu de contexto (...).To delete a certificate, select it and then select Delete from the context menu (...).

Apagar um certificado

Importante

Se o certificado for referenciado por quaisquer políticas, é visualizado um ecrã de aviso.If the certificate is referenced by any policies, then a warning screen is displayed. Para eliminar o certificado, deve primeiro retirar o certificado de quaisquer políticas configuradas para a sua utilização.To delete the certificate, you must first remove the certificate from any policies that are configured to use it.

Passos seguintesNext steps