Skip to main content

Como maximizar a segurança do IAM com limites de permissões da AWS e Snyk

Escrito por
blog feature snyk iac cli enhancements

26 de junho de 2023

0 minutos de leitura

No cenário de nuvem atual, que evolui rapidamente, gerenciar permissões e garantir controles de segurança robustos é essencial para organizações que usam o Amazon Web Services (AWS). O AWS Identity and Access Management (IAM) é fundamental para gerenciar permissões de acesso aos recursos da AWS. Embora o IAM ofereça controle granular sobre as permissões, os limites de permissões do AWS IAM proporcionam mais segurança e flexibilidade para ajustar os controles de acesso.

Um limite de permissões da AWS é um mecanismo de segurança que restringe as permissões que uma entidade principal do IAM (usuários e funções) pode exercer. Ao definir um limite de permissões, as organizações podem estabelecer uma estrutura de autorização consistente e bem definida, que impede a escalada acidental ou intencional de privilégios. Definir limites para as permissões ajuda a reduzir o risco de acesso não autorizado a recursos confidenciais e limita o possível impacto de violações de segurança ou erros humanos.

Em resumo, os limites de permissões funcionam como barreiras de proteção. No entanto, eles não CONCEDEM permissões por si só. Por exemplo, este usuário não tem permissões, embora tenha o limite de permissões SecurityAudit:

Resumo de um usuário do AWS IAM mostrando acesso ao console desativado, uma chave de acesso ativa, nenhuma política anexada e um limite de permissões SecurityAudit.
Terminal mostrando uma falha no comando de listagem do AWS S3 com um erro AccessDenied para o perfil user1.

Benefícios e casos de uso

Os limites de permissões do IAM são especialmente úteis em organizações com ambientes IAM distribuídos ou complexos.

Veja alguns casos de uso em que os limites de permissões podem aumentar a segurança e a eficiência operacional:

  1. Equipes centralizadas de IAM na nuvem: Os limites de permissões permitem que equipes ou unidades de negócios gerenciem suas próprias entidades do IAM e as permissões associadas, respeitando os limites definidos pelas políticas de segurança da organização. Essa delegação de tarefas administrativas aumenta a agilidade e a autonomia sem abrir mão de uma estrutura centralizada de segurança. O “administrador delegado” é o principal caso de uso dos limites de permissões do IAM.

  2. Ambientes multilocatário: Em ambientes de infraestrutura compartilhada ou aplicações multilocatário, os limites de permissões ajudam a impedir que um locatário acesse os recursos de outro. As organizações podem garantir o isolamento e manter limites de segurança robustos ao definir limites específicos para cada locatário.

  3. Segregação de funções: Os limites de permissões são úteis para separar e fazer cumprir as responsabilidades organizacionais. Administradores podem impedir ações não autorizadas atribuindo limites com base nas funções, como desenvolvimento, teste ou produção.

  4. Acesso de terceiros: Os limites de permissões oferecem uma camada adicional de controle ao conceder acesso a terceiros, como prestadores de serviços ou fornecedores. Ao definir um limite que restringe o acesso deles apenas aos recursos necessários, as organizações podem reduzir os riscos associados à concessão de permissões amplas a terceiros.

Como os limites de permissões são avaliados

Quando uma entidade do IAM tem um limite de permissões definido, ele é avaliado perto do fim do processo de avaliação da política, como mostrado aqui:

Fluxograma de decisão de permissões da AWS que mostra a avaliação de negação, as SCPs da organização, as políticas baseadas em recursos e em identidade, os limites de permissões e as políticas de sessão.
Diagrama que mostra como as políticas da AWS baseadas em identidade e em recursos se combinam para determinar as permissões totais
Diagrama que mostra a sobreposição entre uma política baseada em identidade da AWS e um limite de permissões, com a interseção identificada como permissões efetivas

A árvore de decisão de permissões do IAM é complexa. Vale lembrar que estes diagramas não incluem o acesso entre contas nem detalham por completo as políticas baseadas em recursos. Cada coluna representa uma possível fonte para permitir ou negar permissões a entidades principais do IAM. Os limites de permissões ocupam a quinta etapa da avaliação de permissões e podem permitir ou negar permissões.

Um ponto importante é que as políticas baseadas em recursos podem se sobrepor à intenção dos limites de permissões do IAM. Se uma política baseada em recursos conceder permissões diretamente à entidade principal que faz a solicitação, uma negação implícita em um limite de permissões não afeta a decisão final. Isso ocorre porque as políticas baseadas em recursos são avaliadas antes do limite de permissões.

Para manter uma postura de segurança robusta, as organizações precisam projetar e monitorar cuidadosamente as políticas de recursos, garantindo que estejam alinhadas aos limites de segurança desejados. Auditorias e revisões regulares, ferramentas para desenvolvedores e integração das políticas de permissões com o SCM são essenciais para garantir que qualquer sobreposição seja intencional e respeite o princípio do menor privilégio.

Regras da Snyk

A Snyk é a única ferramenta de segurança para infraestrutura como código (IaC) e plataforma de código à nuvem que avalia limites de permissões do IAM e inclui as regras a seguir. As capturas de tela de cada regra foram feitas com a execução da CLI da Snyk.

A entidade principal do IAM não tem limite de permissões

Esta política gera descobertas para funções e usuários do IAM sem um limite de permissões atribuído. Uma equipe centralizada ou distribuída de IAM pode verificar rapidamente se os limites de permissões estão sendo usados. O trecho de Terraform a seguir gera descobertas para esta regra, pois nenhum dos usuários tem um limite:

Código Terraform que define um usuário e uma função do IAM da AWS, além de uma política de assunção de função para o serviço EC2
Saída do terminal mostrando erros do AWS IAM: “A entidade principal do IAM não tem limite de permissões”, com detalhes do arquivo Terraform e da regra de segurança.

A entidade principal do IAM tem um limite de permissões permissivo demais

Entre as funções e os usuários do IAM com limites de permissões, esta política identifica limites que talvez sejam abrangentes demais. Por exemplo, um limite de permissões do IAM como:

{
    "Version": "2012-10-17",
    "Statement": [{
        "Effect": "Allow",
        "Action": “*”,
        "Resource": "*"
    }]
}

Na prática, não é um limite de permissões. Com essa visibilidade adicional, as organizações conseguem restringir as permissões com mais eficiência, seguindo o princípio do menor privilégio. O código Terraform a seguir gera descobertas para cada entidade principal do IAM cujo limite de permissões seja abrangente demais:

Código Terraform que define um usuário, uma função e uma política do IAM com limites de permissões e uma ação do IAM que permite tudo.
Saída do terminal mostrando problemas de gravidade média no AWS IAM relacionados a limites de permissões excessivamente permissivos e as correções recomendadas.

A configuração do administrador delegado do IAM está incorreta

Como mencionado, os administradores delegados do IAM são o principal caso de uso dos limites de permissões. Isso permite que equipes centralizadas de IAM autorizem desenvolvedores a criar seus próprios usuários e funções para atender às necessidades do negócio, mantendo certo controle sobre as contas em que esses usuários e funções são criados. No entanto, essas novas entidades principais também precisam ter seus próprios limites de permissões. As equipes de IAM podem exigir isso usando uma política do IAM configurada corretamente, com condições do IAM. Neste caso, analisamos as permissões de usuários e funções que podem criar outras entidades principais e avaliamos suas políticas do IAM para verificar se contêm as condições adequadas. Essas descobertas dão visibilidade ao potencial de escalada de privilégios por parte de administradores delegados.

Código Terraform que define usuários e funções do AWS IAM, associações de políticas e um limite de permissões AdministratorAccess
Saída do terminal alertando que um administrador delegado do IAM está configurado incorretamente e pode permitir a escalada de privilégios.

A política de recursos se sobrepõe ao limite de permissões

Esta regra proposta da Snyk analisa as políticas de recursos para determinar a quais entidades principais do IAM o acesso ao recurso é concedido e se elas devem ter acesso, de acordo com suas políticas baseadas em identidade e seus limites de permissões. Isso ajuda as organizações a identificar possíveis lacunas na postura de segurança, ou seja, situações em que políticas baseadas em recursos podem se sobrepor aos limites de permissões. Alguns dos recursos que oferecem suporte a políticas baseadas em recursos são:

  • Buckets do S3

  • Chaves do KMS

  • Tabelas do DynamoDB

  • Segredos do SecretsManager

Automatize a governança de segurança com a Snyk

Snyk IaC ajuda desenvolvedores a proteger configurações com um mecanismo unificado de políticas, que oferece visibilidade e governança de segurança consistentes, do ambiente de desenvolvimento integrado (IDE) até os ambientes de nuvem em execução. Além dos conjuntos de regras de segurança da Snyk para permissões do IAM mencionados acima, as equipes podem definir regras personalizadas na linguagem de consulta Rego da OPA e garantir a conformidade na nuvem com conjuntos de regras mapeados para mais de 10 frameworks compatíveis.

Referências

Proteja a infraestrutura desde a origem

A Snyk automatiza a segurança e a conformidade de IaC nos fluxos de trabalho e detecta recursos com configurações divergentes ou ausentes.

Publicado em: