Reduzir permissões e aplicativos superprivilegiados
Como desenvolvedor cujo objetivo é projetar e implementar aplicativos que seguem os princípios orientadores da Confiança Zero , você quer reforçar a segurança do aplicativo com o mínimo de privilégio. É imprescindível que você reduza a superfície de ataque do seu aplicativo e o efeito de uma violação de segurança.
Neste artigo, você vai aprender por que os aplicativos não devem solicitar mais permissões do que realmente precisam. Você vai entender o que significa o termo superprivilegiado e descobrirá recomendações e melhores práticas para restringir privilégios em seus aplicativos, visando gerenciar o acesso e aumentar a segurança.
O que é superprivilegiado?
O status Superprivilegiado ocorre quando um aplicativo solicita ou recebe mais permissões do que o necessário para operar corretamente. Melhore seus conhecimentos sobre superprivilégios com exemplos de permissões desnecessárias que podem ser reduzidas ao longo deste artigo.
Permissões não utilizadas
Neste exemplo de chave não utilizada, imagine que existam três portas trancadas (azul, amarela e verde), conforme o diagrama a seguir.
Seus ativos estão atrás das portas. Você tem três chaves (azul, amarela e verde) que permitem que você abra a porta correspondente. Por exemplo, a chave azul pode abrir a porta azul. Quando você só precisa de acesso à porta amarela, você só carrega a chave amarela.
Para melhor proteger seus ativos, você só carrega as chaves de que precisa quando precisa delas e mantém as chaves não utilizadas em um local seguro.
Permissões reduzíveis
O exemplo de chaves que podem ser reduzidas é mais complicado do que o exemplo de chave não utilizada, e agora incluímos duas chaves especiais, conforme o diagrama a seguir.
A primeira chave preta é uma chave de passe que pode abrir todas as portas. A segunda chave preta pode abrir as portas amarelas e verdes. Quando você só precisa acessar as portas amarela e verde, você só carrega a segunda chave preta. Você mantém sua chave de acesso em um local seguro com a chave verde redundante.
No mundo da identidade da Microsoft, as chaves são permissões de acesso. Seus recursos e você, o detentor da chave, são aplicativos. Se você entende o risco de carregar chaves desnecessárias, está ciente do risco de seus aplicativos terem permissões desnecessárias.
Lacuna de permissão e risco
Como portas e chaves podem ajudar a entender como ocorre o superprivilégio? Por que seu aplicativo pode ter as permissões certas para executar uma tarefa, mas ainda assim ser superprivilegiado? Vamos analisar a brecha de permissões que pode causar a discrepância no diagrama a seguir.
O eixo X representa Tempo e o eixo Y, as Permissões. No início da medida Tempo, você solicita e recebe permissão para o aplicativo. À medida que os negócios crescem e mudam com o passar do tempo, você adiciona novas permissões para atender às suas necessidades e à inclinação de Permissões concedidas aumenta. As Permissões Utilizadas podem ser menores que as Permissões Concedidas quando você esquece de remover permissões desnecessárias (por exemplo, se o aplicativo continua funcionando sem problemas), resultando em uma Brecha de Permissões.
Aqui estão observações interessantes na plataforma de identidade da Microsoft.
- Temos mais de 4.000 APIs no Microsoft Graph.
- Mais de 200 permissões do Microsoft Graph estão disponíveis na plataforma de identidade da Microsoft.
- Os desenvolvedores têm acesso a uma ampla gama de dados e a capacidade de aplicar granularidade às permissões solicitadas por seus aplicativos.
- Em nossas investigações, descobrimos que os aplicativos têm apenas 10% de permissões totalmente utilizadas para seus cenários.
Pense cuidadosamente sobre quais permissões seu aplicativo realmente exige. Cuidado com a lacuna de permissão e verifique regularmente as permissões do aplicativo.
Segurança comprometida por excesso de privilégios
Vamos nos aprofundar nos riscos que resultam de lacunas de permissão com um exemplo. Esse cenário comprometedor compreende duas funções: administrador de TI e desenvolvedor.
- Administrador de TI: Jeff é um administrador de locatário que garante que os aplicativos no Microsoft Entra ID sejam confiáveis e seguros. Parte do trabalho de Jeff é conceder consentimento às permissões que os desenvolvedores de aplicativos exigem.
- Desenvolvedor: Kelly é um desenvolvedor de aplicativos que utiliza a plataforma de identidade da Microsoft e possui aplicativos. O trabalho de Kelly é garantir que os aplicativos tenham as permissões certas para executar as tarefas necessárias.
Um cenário comum de comprometimento de segurança por superprivilégios geralmente apresenta quatro fases.
- Primeiro, o desenvolvedor começa a configurar o aplicativo e adicionar as permissões necessárias.
- Em segundo lugar, o administrador de TI analisa as permissões necessárias e concede consentimento.
- Terceiro, o ator mal-intencionado começa a quebrar as credenciais do usuário e hackeia com sucesso a identidade do usuário.
- Se o usuário possui vários aplicativos, eles também são superprivilegiados. O agente mal-intencionado pode utilizar rapidamente o token da permissão concedida para recuperar dados confidenciais.
Aplicativos com excesso de privilégios
Uma entidade está superprivilegiada quando solicita ou recebe mais permissões do que precisa. Na plataforma de identidade da Microsoft, um aplicativo superprivilegiado é definido como "qualquer aplicativo com permissões não utilizadas ou que podem ser reduzidas".
Vamos utilizar o Microsoft Graph como parte da plataforma de identidade da Microsoft em um exemplo do mundo real para entender melhor a permissão não utilizada e a permissão redutível.
A permissão não utilizada ocorre quando o aplicativo recebe permissões que não são necessárias para as tarefas desejadas. Por exemplo, você está criando um aplicativo de calendário. Seu aplicativo de calendário solicita e recebe a permissão Files.ReadWrite.All
. Seu aplicativo não se integra às APIs de nenhum arquivo. Portanto, ele possui uma permissão Files.ReadWrite.All
não utilizada.
A permissão redutível é mais difícil de descobrir. Isso ocorre quando seu aplicativo recebe poucas permissões, mas tem uma alternativa com privilégios mais baixos que forneceria acesso suficiente para as tarefas necessárias. No exemplo do aplicativo de calendário, seu aplicativo solicita e recebe a permissão Files.ReadWrite.All
. No entanto, ele só precisa ler arquivos do OneDrive do usuário conectado e nunca precisa criar novos arquivos ou modificar os existentes. Nesse caso, ele utiliza apenas parcialmente a permissão Files.ReadWrite.All
, então você precisa fazer downgrade para Files.Read.All
.
Recomendações para reduzir cenários com excesso de privilégios
A segurança é uma jornada, e não um destino. Há três fases distintas no ciclo de vida da segurança:
- Prevenção
- Auditoria
- Remediação
O diagrama a seguir apresenta recomendações para diminuir cenários de superprivilégios.
- Evitar: ao criar um aplicativo, compreenda totalmente a permissão necessária para as chamadas de API que ele precisa fazer e solicite apenas o que for necessário para habilitar o cenário. A documentação do Microsoft Graph tem referências claras para permissões de privilégios mínimos para permissões mais privilegiadas para todos os pontos de extremidade. Esteja atento a cenários com privilégios excessivos ao determinar quais permissões você precisa.
- Auditar: você e os administradores de TI devem revisar regularmente os privilégios concedidos anteriormente aos aplicativos existentes.
- Remediar: se você ou os administradores de TI perceberem um aplicativo com privilégios excessivos no ecossistema, será necessário interromper a solicitação de tokens para a permissão com privilégios excessivos. Os administradores de TI devem revogar os consentimentos concedidos. Essa etapa geralmente requer uma alteração de código.
Práticas recomendadas para manter a permissão de privilégio mínimo
Dois principais incentivos para manter a permissão de privilégios mínimos com seus aplicativos são promover a adoção do aplicativo e impedir a propagação.
- Promova a adoção criando um aplicativo confiável para os clientes, evitando solicitar permissões excessivas. Limite as permissões do aplicativo apenas ao que ele precisa para concluir sua tarefa. Essa prática reduz o raio de explosão potencial de ataques e aumenta a adoção de seus aplicativos pelos clientes. Aplique mais escrutínio ao revisar as permissões solicitadas pelos aplicativos e decidir se deseja conceder permissões ao aplicativo.
- Pare a propagação garantindo que os invasores não possam utilizar privilégios excessivos para obter mais acesso. Quando você cria um aplicativo que solicita permissões desnecessárias, é menos provável que ele receba aprovação ou seja totalmente negado. A melhor maneira de controlar o dano é evitar que os invasores obtenham privilégios elevados, o que aumenta o escopo do comprometimento. Por exemplo, se um aplicativo tiver apenas
User.ReadBasic.All
para ler informações básicas do usuário, os dados do OneDrive, Outlook, Teams e quaisquer dados confidenciais estarão seguros se um aplicativo for comprometido.
Próximas etapas
- O artigo Adquirir autorização para acessar recursos ajuda você a entender a melhor forma de garantir a Confiança Zero ao adquirir permissões de acesso a recursos para o seu aplicativo.
- O artigo Criar aplicativos com uma abordagem de identidade de Confiança Zero fornece uma visão geral das permissões e das práticas recomendadas de acesso.
- O artigo Personalizar tokens descreve as informações que você pode receber nos tokens do Microsoft Entra. Esse artigo explica como personalizar tokens para melhorar a flexibilidade e o controle, aumentando a segurança de confiança zero do aplicativo com privilégios mínimos.
- O artigo Configurar declarações de grupo e funções de aplicativo em tokens mostra como configurar seus aplicativos com definições de função de aplicativo e atribuir grupos de segurança a funções de aplicativo. Esses métodos ajudam a melhorar a flexibilidade e o controle, aumentando a segurança de confiança zero do aplicativo com privilégios mínimos.
- Alcançar a prontidão para Confiança Zero em aplicativos: projeto para o mínimo de privilégios ajuda você a projetar aplicativos usando o princípio do acesso com privilégios mínimos com a plataforma de identidade da Microsoft.
- Reforçar a segurança dos aplicativos com o princípio de privilégio mínimos ajuda a reduzir a superfície de ataque de um aplicativo e o efeito de uma violação de segurança (o raio de explosão) caso ela ocorra em um aplicativo integrado à plataforma de identidade da Microsoft.
- O Explorador de gráficos e a Referência de permissões do Microsoft Graph ajuda a selecionar chamadas de API do Microsoft Graph para habilitar o cenário do aplicativo e encontrar as permissões correspondentes, do menos ao mais privilegiado.