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:
Inicie sessão no portal do Azure.
Navegue até o menu do portal do Azure. Selecione Todos os recursos e, em seguida, selecione a sua conta do Azure Maps.
Em Configurações no painel esquerdo, selecione Autenticação.
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. OClient 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
eSecondary 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:
- Crie um Cofre da Chave do Azure.
- 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.
- 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. - Atribua temporariamente a permissão de
set
acesso a segredos para você como desenvolvedor. - 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.
- Remova sua permissão de segredos
set
. - Para recuperar o segredo da chave compartilhada do Cofre de Chaves do Azure, implemente a autenticação do Microsoft Entra no aplicativo daemon.
- 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:
Inicie sessão no portal do Azure.
Selecione Microsoft Entra ID.
Em Gerir no painel esquerdo, selecione Registos de aplicações.
Selecione a guia + Novo registro .
Introduza um Nome e, em seguida, selecione um tipo de conta de Suporte.
Selecione Registar.
Atribuir permissões de API delegadas
Para atribuir permissões de API delegadas ao Azure Maps:
Se ainda não o fez, inicie sessão no portal do Azure.
Selecione Microsoft Entra ID.
Em Gerir no painel esquerdo, selecione Registos de aplicações.
Selecione a sua candidatura.
Em Gerenciar no painel esquerdo, selecione Permissões de API.
Selecione Adicionar uma permissão.
Selecione a guia APIs que minha organização usa .
Na caixa de pesquisa, insira Azure Maps.
Selecione Azure Maps.
Marque a caixa de seleção Access Azure Maps .
Selecione Adicionar permissões.
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:
Em Gerenciar no painel esquerdo, selecione Certificados & segredos.
Selecione Carregar o certificado.
À direita da caixa de texto, selecione o ícone do arquivo.
Selecione um ficheiro .crt, .cer ou .pem e, em seguida, selecione Adicionar.
Criar um segredo do cliente
Para criar um segredo do cliente:
Em Gerenciar no painel esquerdo, selecione Certificados & segredos.
Selecione + Novo segredo do cliente.
Introduza uma descrição para o segredo do cliente.
Selecione Adicionar.
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.
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:
Se ainda não o fez, inicie sessão no portal do Azure.
Selecione Microsoft Entra ID.
Em Gerir no painel esquerdo, selecione Registos de aplicações.
Selecione a sua candidatura.
Você deve ver a página Visão geral. Copie a ID do aplicativo (cliente) e a ID do diretório (locatário).
Este artigo usa o aplicativo bruno para criar a solicitação de token, mas você pode usar um ambiente de desenvolvimento de API diferente.
Abra o aplicativo bruno, selecione NOVA SOLICITAÇÃO para criar a solicitação.
Na janela NEW REQUEST, defina Type como HTTP. Insira um Nome para a solicitação, como Solicitação de Token POST.
Selecione o método HTTP GET na lista suspensa URL e insira o seguinte URL:
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
Nota
Substituir:
{Tenant-ID}
com o ID do diretório (locatário){Client-ID}
com o ID do Aplicativo (Cliente){Client-Secret}
com o segredo do seu cliente.
Selecione o botão Executar
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: