Proteger um aplicativo daemon

Este artigo descreve como hospedar aplicativos daemon em um ambiente confiável e seguro no Microsoft Azure Mapas.

Estes são exemplos de aplicativos daemon:

  • Trabalho Web do Azure
  • Aplicativo de Funções do Azure
  • Serviço do Windows
  • Um serviço em segundo plano em execução e confiável

Exibir detalhes de autenticação do Azure Mapas

Para ver os detalhes de autenticação da conta do Azure Mapas no portal do Azure:

  1. Entre no portal do Azure.

  2. Navegue até o menu do portal do Azure. Selecione Todos os recursos e o a conta do Azure Mapas.

  3. Em Configurações no painel esquerdo, selecione Autenticação.

    Screenshot showing your Azure Maps authentication options in the Azure portal.

Três valores são criados quando a conta do Azure Mapas é criada. Eles são usados para dar suporte a dois tipos de autenticação no Azure Mapas:

  • Autenticação do Microsoft Entra: a Client ID representa a conta a ser usada para solicitações da API REST. O valor de Client ID deve ser armazenado na configuração de aplicativo, e depois, recuperado antes que sejam feitas solicitações HTTP ao Azure Mapas que usem a autenticação do Microsoft Entra.
  • Autenticação de chave compartilhada: a Primary Key e a Secondary Key são usadas como chaves de assinatura da autenticação de chave compartilhada. A autenticação de chave compartilhada baseia-se na passagem da chave gerada pela conta do Azure Mapas com cada solicitação ao Azure Mapas. É recomendado que você regenere as chaves regularmente. Para manter as conexões atuais durante a regeneração, duas chaves são fornecidas. Uma chave pode estar em uso durante a regeneração da outra. Ao regenerar suas chaves, você precisará atualizar os aplicativos que acessam essa conta para que usem as novas chaves. Para obter mais informações, confira Autenticação no Azure Mapas

Importante

Para aplicativos de produção, é recomendável implementar o Microsoft Entra ID e o Azure RBAC (controle de acesso baseado em função do Azure). Para uma visão geral dos conceitos do Microsoft Entra, confira Autenticação com o Azure Mapas.

Cenário: autenticação de chave compartilhada com o Azure Key Vault

Os aplicativos que usam a autenticação de Chave Compartilhada devem armazenar as chaves em um repositório seguro. Este cenário descreve como armazenar com segurança a chave do aplicativo como um segredo no Azure Key Vault. Em vez de armazenar a chave compartilhada na configuração do aplicativo, o aplicativo pode recuperar a chave compartilhada como um segredo do Azure Key Vault. Para simplificar a regeneração da chave, recomendamos que os aplicativos usem uma chave por vez. Os aplicativos podem regenerar a chave não utilizada e implantar a chave regenerada no Azure Key Vault mantendo as conexões atuais com uma chave. Para entender como configurar o Azure Key Vault, confira o Guia do desenvolvedor do Azure Key Vault.

Importante

Esse cenário acessa indiretamente o Microsoft Entra ID por meio do Azure Key Vault. No entanto, recomendamos que você use a autenticação do Microsoft Entra diretamente. O uso direto do Microsoft Entra ID evita a complexidade adicional e os requisitos operacionais do uso da autenticação de chave compartilhada e a configuração do Key Vault.

As etapas a seguir descrevem esse processo:

  1. Criar um Azure Key Vault.
  2. Crie uma entidade de serviço do Microsoft Entra criando um registro de aplicativo ou uma identidade gerenciada. A entidade de segurança criada é responsável por acessar o Azure Key Vault.
  3. Atribua a permissão de acesso da entidade de serviço à chave segredos do Azure get. Para detalhes de como configurar permissões, confira Atribuir uma política de acesso do Key Vault usando o portal do Azure.
  4. Atribua temporariamente acesso à permissão de segredos set para você como desenvolvedor.
  5. Defina a chave compartilhada nos segredos do Key Vault e referencie a ID do segredo como configuração para o aplicativo daemon.
  6. Remova sua permissão de segredos set.
  7. Para recuperar o segredo da chave compartilhada no Azure Key Vault, implemente a autenticação do Microsoft Entra no aplicativo daemon.
  8. Criar uma solicitação de API REST do Azure Mapas com a chave compartilhada. Agora, o aplicativo daemon pode recuperar a chave compartilhada no Key Vault.

Dica

Se o aplicativo estiver hospedado no ambiente do Azure, recomendamos que você use uma identidade gerenciada para reduzir o custo e a complexidade do gerenciamento de um segredo para autenticação. Para saber como configurar uma identidade gerenciada, veja o Tutorial: Usar uma identidade gerenciada para conectar o Key Vault a um aplicativo Web do Azure no .NET.

Cenário: controle de acesso baseado em função do Microsoft Entra

Depois de criar uma conta do Azure Mapas, o valor Client ID do Azure Mapas estará presente na página de detalhes de autenticação do portal do Azure. Esse valor representa a conta que será usada para solicitações da API REST. Esse valor deve ser armazenado na configuração do aplicativo e recuperado antes de fazer solicitações HTTP. A meta desse cenário é habilitar o aplicativo daemon para se autenticar no Microsoft Entra ID e chamar as APIs REST do Azure Mapas.

Dica

Para habilitar os benefícios de componentes da identidade gerenciada, é recomendável hospedar em Máquinas Virtuais do Azure, Conjuntos de Dimensionamento de Máquinas Virtuais ou Serviços de Aplicativos.

Hospedar um daemon em recursos do Azure

Ao executar em recursos do Azure, você pode configurar identidades gerenciadas do Azure para permitir o esforço mínimo de gerenciamento de credenciais e baixo custo.

Para habilitar o acesso do aplicativo a uma identidade gerenciada, confira a Visão geral de identidades gerenciadas.

Alguns benefícios da identidade gerenciada são:

  • Autenticação de criptografia por chave pública com certificado X509 gerenciado pelo sistema do Azure.
  • Segurança do Microsoft Entra com certificados X509 em vez de segredos do cliente.
  • O Azure gerencia e renova todos os certificados associados ao recurso de Identidade Gerenciada.
  • O gerenciamento operacional de credenciais é simplificado porque a identidade gerenciada elimina a necessidade de um serviço de repositório de segredos seguro, como o Azure Key Vault.

Hospedar um daemon em recursos que não são do Azure

As identidades gerenciadas só estão disponíveis quando o recurso estiver sendo executado em um ambiente do Azure. Portanto, você deve configurar uma entidade de serviço por meio de um registro de aplicativo do Microsoft Entra para o aplicativo daemon.

Criar registro de aplicativo

Se você já criou o registro do seu aplicativo, vá para Atribuir permissões de API delegadas.

Para criar um registro de aplicativo:

  1. Entre no portal do Azure.

  2. Selecione ID do Microsoft Entra.

  3. Em Gerenciar no painel à esquerda, selecione Registros de aplicativo.

  4. Selecione a guia + Novo registro.

    A screenshot showing application registration in Microsoft Entra ID.

  5. Insira um Nome e selecione um Tipo de conta com suporte.

    Create app registration.

  6. Selecione Registrar.

Atribuir permissões de API delegadas

Para atribuir permissões de API delegadas ao Azure Mapas:

  1. Se ainda não tiver feito isso, entre no portal do Azure.

  2. Selecione ID do Microsoft Entra.

  3. Em Gerenciar no painel à esquerda, selecione Registros de aplicativo.

  4. Selecione seu aplicativo.

    Select app registrations.

  5. Em Gerenciar, no painel à esquerda, selecione Permissões da API.

  6. Selecione Adicionar uma permissão.

    Add app permission.

  7. Selecione a guia APIs que a minha organização usa.

  8. Na caixa de pesquisa, insira Azure Mapas.

  9. Selecione Azure Mapas.

    Request app permission.

  10. Marque a caixa de seleção Acessar Azure Mapas.

  11. Selecione Adicionar Permissões.

    Select app API permissions.

Criar um segredo do cliente ou configurar o certificado

Para implementar a autenticação baseada em servidor ou aplicativo em seu aplicativo, escolha uma dessas duas opções:

  • Carregar um certificado de chave pública.
  • Criar um segredo do cliente.
Carregar um certificado de chave pública

Para carregar um certificado de chave pública:

  1. Em Gerenciar, no painel à esquerda, selecione Certificados e segredos.

  2. Selecione Carregar certificado. Upload certificate.

  3. À direita da caixa de texto, selecione o ícone de arquivo.

  4. Selecione um arquivo .crt, .cer ou .pem e escolha Adicionar.

    Upload certificate file.

Criar um segredo do cliente

Para criar um segredo do cliente:

  1. Em Gerenciar, no painel à esquerda, selecione Certificados e segredos.

  2. Selecione + Novo segredo do cliente.

    New client secret.

  3. Insira uma descrição para o segredo do cliente.

  4. Selecione Adicionar.

    Add new client secret.

  5. Copie o segredo e armazene-o com segurança em um serviço, como o Azure Key Vault. Além disso, use o segredo incluído na seção Solicitar token com Identidade Gerenciada deste artigo.

    Copy client secret.

    Importante

    Para armazenar o certificado ou segredo com segurança, confira o Guia do Desenvolvedor do Azure Key Vault. Você usará esse segredo para obter tokens do Microsoft Entra ID.

Conceder acesso baseado em função para usuários do Azure Mapas

Conceda o RBAC do Azure (controle de acesso baseado em função) atribuindo um grupo do Microsoft Entra ou uma entidade de segurança a uma ou mais definições de função do Azure Mapas.

Para ver as definições de função do Azure disponíveis para o Azure Mapas, confira Exibir as definições de função internas do Azure Mapas.

Para obter etapas detalhadas de como atribuir uma função do Azure Mapas disponível para a identidade gerenciada criada ou a entidade de serviço, confira Atribuir funções do Azure usando o portal do Azure

Para gerenciar com eficiência o aplicativo do Azure Mapas e o acesso a recursos de uma grande quantidade de usuários, confira Grupos do Microsoft Entra.

Importante

Para que os usuários tenham permissão para se autenticar no aplicativo, eles precisam ser criados no Microsoft Entra ID. Para obter mais informações, confira Adicionar ou excluir usuários usando o Microsoft Entra ID.

Para saber mais sobre como gerenciar com eficiência um grande diretório de usuários, confira Microsoft Entra ID.

Aviso

As definições de função internas do Azure Mapas fornecem um acesso de autorização muito grande a muitas APIs REST do Azure Mapas. Para restringir o acesso de APIs a um mínimo, veja criar uma definição de função personalizada e atribuir a identidade atribuída pelo sistema à definição de função personalizada. Esse processo habilita o privilégio mínimo necessário para o aplicativo acessar o Azure Mapas.

Solicitar um token com identidade gerenciada

Após configurar uma identidade gerenciada para o recurso de hospedagem, use o SDK do Azure ou a API REST para adquirir um token para o Azure Mapas. Para saber como adquirir um token de acesso, veja Adquirir um token de acesso.

Solicitar token com o registro do aplicativo

Depois de registrar seu aplicativo e associá-lo ao Azure Mapas, você precisará solicitar um token de acesso.

Para adquirir o token de acesso:

  1. Se ainda não tiver feito isso, entre no portal do Azure.

  2. Selecione ID do Microsoft Entra.

  3. Em Gerenciar no painel à esquerda, selecione Registros de aplicativo.

  4. Selecione seu aplicativo.

  5. Você verá a página de visão geral. Copie o Aplicativo (ID do cliente) e a ID do Diretório (locatário).

    Copy token parameters.

Este artigo usa o aplicativo Postman para criar a solicitação de token, mas você pode usar um outro ambiente de desenvolvimento de API.

  1. No aplicativo Postman, selecione Nova.

  2. Na janela Criar, selecione Solicitação HTTP.

  3. Insira um Nome de solicitação para a solicitação, como Solicitação de Token POST.

  4. Selecione o método HTTP POST.

  5. Insira a seguinte URL na barra de endereços (substitua {Tenant-ID} pela ID do Diretório (Locatário), a {Client-ID} pela ID do Aplicativo (Cliente) e {Client-Secret} pelo segredo do cliente:

    https://login.microsoftonline.com/{Tenant-ID}/oauth2/v2.0/token?response_type=token&grant_type=client_credentials&client_id={Client-ID}&client_secret={Client-Secret}&scope=https://atlas.microsoft.com/.default
    
  6. Selecione Enviar

  7. Você verá a seguinte resposta JSON:

{
    "token_type": "Bearer",
    "expires_in": 86399,
    "ext_expires_in": 86399,
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Im5PbzNaRHJPRFhFSzFq..."
}

Para obter mais informações sobre o fluxo de autenticação, confira Fluxo de credenciais do cliente OAuth 2.0 na plataforma de identidade da Microsoft

Próximas etapas

Para ver exemplos mais detalhados:

Localize as métricas de uso da API para sua conta do Azure Mapas:

Explore amostras que mostram como integrar o Microsoft Entra ID ao Azure Mapas: