SEC03-BP02 Conceder acesso de privilégio mínimo
Conceda somente o acesso de que os usuários precisam para realizar ações em recursos específicos e sob condições específicas. Use grupos e atributos de identidade para definir permissões dinamicamente em escala, em vez de definir permissões para usuários individuais. Por exemplo, é possível permitir o acesso de um grupo de desenvolvedores para gerenciar apenas recursos de seu próprio projeto. Dessa forma, se um desenvolvedor sair do projeto, seu acesso será automaticamente revogado sem que seja necessário alterar as políticas de acesso adjacentes.
Resultado desejado: os usuários têm apenas as permissões mínimas necessárias para suas funções de trabalho específicas. Use Contas da AWS separadas para isolar os desenvolvedores dos ambientes de produção. Quando os desenvolvedores precisam acessar ambientes de produção para tarefas específicas, eles recebem acesso limitado e controlado somente durante a duração dessas tarefas. O acesso à produção é imediatamente revogado após a conclusão do trabalho necessário. Você realiza revisões regulares das permissões e as revoga imediatamente quando não são mais necessárias, como quando um usuário muda de função ou sai da organização. Você restringe os privilégios de administrador a um grupo pequeno e confiável para reduzir a exposição ao risco. Você concede às contas de máquinas ou de agente apenas as permissões mínimas necessárias para executar as tarefas pretendidas.
Práticas comuns que devem ser evitadas:
-
Por padrão, você concede permissões de administrador aos usuários.
-
Você usa a conta de usuário-raiz para atividades diárias.
-
Você cria políticas excessivamente permissivas sem um escopo adequado.
-
Suas revisões de permissões não são frequentes, o que leva ao aumento de permissões.
-
Você depende exclusivamente do controle de acesso baseado em atributos para isolamento do ambiente ou gerenciamento de permissões.
Nível de risco exposto se esta prática recomendada não for estabelecida: Alto
Orientação para implementação
O princípio do privilégio mínimo afirma que as identidades só devem ter permissão para realizar o menor conjunto de ações necessárias para cumprir uma tarefa específica. Isso equilibra a usabilidade, eficiência e segurança. Operar sobre esse princípio ajuda a limitar acesso não intencional e a rastrear quem tem acesso a quais recursos. Usuários e perfis do IAM não têm permissões por padrão. O usuário-raiz tem acesso total por padrão e deve ser rigorosamente controlado, monitorado e usado somente para tarefas que exijam acesso de usuário-raiz.
Políticas do IAM são usadas para conceder explicitamente permissões aos perfis do IAM ou recursos específicos. Por exemplo, políticas com base em identidade podem ser anexadas a grupos do IAM, enquanto buckets do S3 podem ser controlados por políticas baseadas em recursos.
Ao criar uma política do IAM, você pode especificar as ações de serviço, os recursos e as condições que devem ser verdadeiras para que a AWS permita ou negue o acesso. A AWS oferece suporte a uma variedade de condições para ajudar você a reduzir o acesso. Por exemplo, usando a chave de condição PrincipalOrgID, você poderá negar ações se o solicitante não fizer parte da sua organização da AWS.
Você também pode controlar as solicitações feitas pelos serviços da AWS em seu nome, como o AWS CloudFormation criando uma função do AWS Lambda usando a chave de condição CalledVia. Você pode aplicar camadas de tipos diferentes de políticas para estabelecer a defesa em profundidade e limitar as permissões gerais dos usuários. É possível restringir as permissões que podem ser concedidas e sob quais condições. Por exemplo, você pode permitir que as equipes de workloads criem as próprias políticas do IAM para os sistemas que elas desenvolvem, mas somente se aplicarem um limite de permissão para limitar o máximo de permissões que o sistema pode receber.
Etapas de implementação
-
Implementar políticas de privilégio mínimo: atribua políticas de acesso com privilégio mínimo a grupos e perfis do IAM para refletir a função do usuário ou a função que você definiu.
-
Isolar ambientes de desenvolvimento e produção por meio de Contas da AWS separadas: use Contas da AWS separadas para ambientes de desenvolvimento e produção e controle o acesso entre eles usando políticas de controle de serviços, políticas de recursos e políticas de identidade.
-
Baseie as políticas no uso da API: uma forma de determinar as permissões necessárias é revisar os logs da AWS CloudTrail. Você pode usar essa revisão para criar permissões personalizadas para as ações que o usuário realiza na AWS. O IAM Access Analyzer pode gerar automaticamente uma política do IAM com base na atividade de acesso. É possível usar o IAM Access Advisor em nível de organização ou conta para rastrear as últimas informações acessadas para uma política específica.
-
Considere usar políticas gerenciadas pela AWS para cargos comuns: ao começar a criar políticas de permissões refinadas, pode ser útil usar políticas gerenciadas pela AWS para cargos comuns, como faturamento, administradores de banco de dados e cientistas de dados. Essas políticas podem ajudar a diminuir o acesso dos usuários enquanto você determina como implementar as políticas de privilégio mínimo.
-
Remova permissões desnecessárias: detecte e remova entidades, credenciais e permissões do IAM não utilizadas para alcançar o princípio do privilégio mínimo. Você pode usar o IAM Access Analyzer para identificar o acesso externo e não utilizado, e a geração de políticas do IAM Access Analyzer pode ajudar a ajustar as políticas de permissões.
-
Garanta que os usuários tenham acesso limitado aos ambientes de produção: os usuários só devem ter acesso aos ambientes de produção com um caso de uso válido. Depois de o usuário realizar as tarefas específicas para as quais o acesso à produção foi necessário, o acesso deve ser revogado. Limitar o acesso a ambientes de produção ajuda a prevenir eventos não intencionais e que causam impacto à produção, além de diminuir o escopo do impacto do acesso não intencional.
-
Considere usar limites de permissões: um limite de permissões é um recurso avançado para usar uma política gerenciada que define o número máximo de permissões que uma política baseada em identidade pode conceder a uma entidade do IAM. O limite de permissões de uma entidade permite que a entidade execute somente as ações permitidas por ambas as políticas baseadas em identidade e seus limites de permissões.
-
Refine o acesso usando controle de acesso por atributo e etiquetas de recursos: é possível usar o controle de acesso por atributo (ABAC) com etiquetas de recursos para refinar as permissões quando há suporte. Você pode usar um modelo ABAC que compara as tags da entidade principal às tags de recursos para refinar o acesso com base nas dimensões personalizadas que você define. Essa abordagem pode simplificar e reduzir o número de políticas de permissão em sua organização.
-
É recomendável que o ABAC seja usado apenas para controle de acesso quando as entidades principais e os recursos forem de propriedade da sua organização da AWS. Partes externas podem usar os mesmos nomes e valores de tag de sua organização para suas próprias entidades principais e recursos. Se você depende exclusivamente desses pares de nome/valor para conceder acesso a entidades principais ou recursos externos, você pode fornecer permissões não intencionais.
-
-
Use políticas de controle de serviço para o AWS Organizations: as políticas de controle de serviço controlam centralmente o máximo de permissões disponíveis para contas-membro na organização. É importante notar que você pode usar as políticas de controle de serviço para restringir as permissões do usuário-raiz nas contas-membro. Considere também usar o AWS Control Tower, que fornece controles gerenciados prescritivos que enriquecem o AWS Organizations. Também é possível definir os seus próprios controles no Control Tower.
-
Estabeleça uma política de ciclo de vida do usuário para sua organização: as políticas de ciclo de vida do usuário definem tarefas a serem executadas quando os usuários são integrados à AWS, mudam de função ou escopo de trabalho ou não precisam mais de acesso à AWS. Realize revisões das permissões durante todas as etapas do ciclo de vida do usuário para verificar se as permissões estão adequadamente restritivas e para evitar desvios nas permissões.
-
Estabeleça um cronograma regular para revisar as permissões e remover todas as permissões desnecessárias: revise regularmente o acesso dos usuários para verificar se os usuários não têm acesso excessivamente permissivo. O AWS Config e o IAM Access Analyzer podem ajudar durante as auditorias de permissões dos usuários.
-
Estabeleça uma matriz de funções de trabalho: uma matriz de funções de trabalho visualiza as várias funções e níveis de acesso necessários em sua presença da AWS. Com uma matriz de cargos, você pode definir e separar as permissões com base nas responsabilidades do usuário dentro da sua organização. Use grupos em vez de aplicar permissões diretamente a usuários ou funções individuais.
Recursos
Documentos relacionados:
-
Delegar o gerenciamento de permissões aos desenvolvedores usando os limites de permissões do IAM
-
Testar as políticas do IAM com o simulador de políticas do IAM
-
Como implementar o princípio de privilégio mínimo com o CloudFormation StackSets
-
Reduzir o escopo da política pela visualização das atividades do usuário
-
Usar a marcação com tags para organizar seu ambiente e impulsionar a responsabilidade
Vídeos relacionados:
Exemplos relacionados: