Proteger um aplicativo daemon

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

Seguem-se exemplos de aplicações daemon:

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

Exibir detalhes de autenticação do Azure Maps

Para exibir os detalhes de autenticação da sua conta do Azure Maps no portal do Azure:

  1. Inicie sessão no portal do Azure.

  2. Navegue até o menu do portal do Azure. Selecione Todos os recursos e, em seguida, selecione a sua conta do Azure Maps.

  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 Maps é criada. Eles são usados para dar suporte a dois tipos de autenticação no Azure Maps:

  • Autenticação do Microsoft Entra: O Client ID representa a conta que deve ser usada para solicitações de API REST. O Client ID valor deve ser armazenado na configuração do aplicativo e, em seguida, deve ser recuperado antes de fazer solicitações HTTP do Azure Maps que usam a autenticação do Microsoft Entra.
  • Autenticação de Chave Compartilhada: Os Primary Key e Secondary Key são usados como a chave de assinatura para autenticação de Chave Compartilhada. A autenticação de Chave Partilhada depende da passagem da chave gerada pela conta do Azure Maps com cada pedido para o Azure Maps. Recomendamos que regenere regularmente as suas chaves. Para manter as conexões atuais durante a regeneração, duas chaves são fornecidas. Uma chave pode estar em uso, enquanto regenera a outra. Quando volta a gerar as suas chaves, tem de atualizar todas as aplicações que acedam a esta conta no sentido de utilizar as novas chaves. Para obter mais informações, consulte Autenticação com o Azure Maps

Importante

Para aplicativos de produção, recomendamos implementar o Microsoft Entra ID e o controle de acesso baseado em função do Azure (Azure RBAC). Para obter uma visão geral dos conceitos do Microsoft Entra, consulte Autenticação com o Azure Maps.

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

Os aplicativos que usam autenticação de chave compartilhada devem armazenar as chaves em um armazenamento seguro. Este cenário descreve como armazenar com segurança sua chave de aplicativo como um segredo no Cofre de Chaves do Azure. Em vez de armazenar a chave compartilhada na configuração do aplicativo, o aplicativo pode recuperar a chave compartilhada como um segredo do Cofre de Chaves do Azure. Para simplificar a regeneração de chaves, recomendamos que os aplicativos usem uma chave de cada vez. Os aplicativos podem regenerar a chave não utilizada e implantar a chave regenerada no Cofre de Chaves do Azure enquanto ainda mantêm as conexões atuais com uma chave. Para entender como configurar o Azure Key Vault, consulte o Guia do desenvolvedor do Azure Key Vault.

Importante

Este cenário acede indiretamente ao Microsoft Entra ID através do Azure Key Vault. No entanto, recomendamos que você use a autenticação do Microsoft Entra diretamente. O uso do Microsoft Entra ID evita diretamente a complexidade adicional e os requisitos operacionais do uso da autenticação de chave compartilhada e da configuração do Cofre de Chaves.

As etapas a seguir descrevem esse processo:

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

Gorjeta

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, consulte Tutorial: Usar uma identidade gerenciada para conectar o Cofre da Chave a um aplicativo Web do Azure no .NET.

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

Depois que uma conta do Azure Maps é criada, o valor do Azure Maps Client ID está presente na página de detalhes de autenticação do portal do Azure. Esse valor representa a conta que deve ser usada para solicitações de API REST. Esse valor deve ser armazenado na configuração do aplicativo e recuperado antes de fazer solicitações HTTP. O objetivo do cenário é permitir que o aplicativo daemon se autentique no Microsoft Entra ID e chame APIs REST do Azure Maps.

Gorjeta

Para habilitar os benefícios dos componentes de identidade gerenciados, recomendamos que você hospede em Máquinas Virtuais do Azure, Conjuntos de Dimensionamento de Máquinas Virtuais ou Serviços de Aplicativo.

Hospedar um daemon nos recursos do Azure

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

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

Alguns benefícios de identidade gerenciada são:

  • Autenticação de criptografia de chave pública de certificado X509 gerenciada pelo sistema do Azure.
  • Segurança do Microsoft Entra com certificados X509 em vez de segredos de 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 armazenamento secreto seguro, como o Cofre de Chaves do Azure.

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

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

Criar novo registro de aplicativo

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

Para criar um novo registro de aplicativo:

  1. Inicie sessão no portal do Azure.

  2. Selecione Microsoft Entra ID.

  3. Em Gerir no painel esquerdo, selecione Registos de aplicações.

  4. Selecione a guia + Novo registro .

    A screenshot showing application registration in Microsoft Entra ID.

  5. Introduza um Nome e, em seguida, selecione um tipo de conta de Suporte.

    Create app registration.

  6. Selecione Registar.

Atribuir permissões de API delegadas

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

  1. Se ainda não o fez, inicie sessão no portal do Azure.

  2. Selecione Microsoft Entra ID.

  3. Em Gerir no painel esquerdo, selecione Registos de aplicações.

  4. Selecione a sua candidatura.

    Select app registrations.

  5. Em Gerenciar no painel esquerdo, selecione Permissões de API.

  6. Selecione Adicionar uma permissão.

    Add app permission.

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

  8. Na caixa de pesquisa, insira Azure Maps.

  9. Selecione Azure Maps.

    Request app permission.

  10. Marque a caixa de seleção Access Azure Maps .

  11. Selecione Adicionar permissões.

    Select app API permissions.

Criar um segredo de cliente ou configurar certificado

Para implementar a autenticação baseada em servidor ou aplicativo em seu aplicativo, você pode escolher uma das duas opções:

  • Carregue 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 esquerdo, selecione Certificados & segredos.

  2. Selecione Carregar o certificado. Upload certificate.

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

  4. Selecione um ficheiro .crt, .cer ou .pem e, em seguida, selecione Adicionar.

    Upload certificate file.

Criar um segredo do cliente

Para criar um segredo do cliente:

  1. Em Gerenciar no painel esquerdo, selecione Certificados & segredos.

  2. Selecione + Novo segredo do cliente.

    New client secret.

  3. Introduza 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 na seção Token de solicitação com identidade gerenciada deste artigo.

    Copy client secret.

    Importante

    Para armazenar com segurança o certificado ou segredo, consulte 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 ao Azure Maps

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

Para exibir as definições de função do Azure disponíveis para o Azure Maps, consulte Exibir definições de função internas do Azure Maps.

Para obter etapas detalhadas sobre como atribuir uma função disponível do Azure Maps à identidade gerenciada criada ou à entidade de serviço, consulte Atribuir funções do Azure usando o portal do Azure

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

Importante

Para que os usuários tenham permissão para se autenticar em um aplicativo, os usuários devem primeiro ser criados no Microsoft Entra ID. Para mais informações, consulte Adicionar ou eliminar utilizadores com o Microsoft Entra ID.

Para saber mais sobre como gerenciar efetivamente um diretório grande para usuários, consulte ID do Microsoft Entra.

Aviso

As definições de função internas do Azure Maps fornecem um acesso de autorização muito grande a muitas APIs REST do Azure Maps. Para restringir o acesso às APIs ao mínimo, consulte Criar uma definição de função personalizada e atribuir a identidade atribuída pelo sistema à definição de função personalizada. Isso permite o menor privilégio necessário para o aplicativo acessar o Azure Maps.

Solicitar um token com identidade gerenciada

Depois que uma identidade gerenciada é configurada para o recurso de hospedagem, você pode usar o SDK do Azure ou a API REST para adquirir um token para o Azure Maps. Para saber como adquirir um token de acesso, consulte Adquirir um token de acesso.

Solicitar token com registro de aplicativo

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

Para adquirir o token de acesso:

  1. Se ainda não o fez, inicie sessão no portal do Azure.

  2. Selecione Microsoft Entra ID.

  3. Em Gerir no painel esquerdo, selecione Registos de aplicações.

  4. Selecione a sua candidatura.

  5. Você deve ver a página Visão geral. Copie a ID do aplicativo (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 ambiente de desenvolvimento de API diferente.

  1. No aplicativo Postman, selecione Novo.

  2. Na janela Criar novo, 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 o seguinte URL para a barra de endereço (substitua {Tenant-ID} pelo ID do diretório (locatário), pelo ID do aplicativo (cliente) e {Client-Secret} pelo {Client-ID} 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, consulte Fluxo de credenciais do cliente OAuth 2.0 na plataforma de identidade da Microsoft

Próximos passos

Para exemplos mais detalhados:

Encontre as métricas de uso da API para sua conta do Azure Maps:

Explore exemplos que mostram como integrar o Microsoft Entra ID com o Azure Maps: