IAM: Funções IAM Não Utilizadas

Esta regra identifica IAM Roles customizadas que não foram utilizadas recentemente ou que foram criadas há um período superior ao configurado sem registro de uso.

O objetivo é detectar roles obsoletas que aumentam a superfície de ataque e a complexidade de governança do ambiente.


Contexto da regra e impacto no negócio

IAM Roles são amplamente utilizadas para:

  • Assumir permissões temporárias

  • Execução de workloads (EC2, Lambda, ECS, EKS)

  • Integrações cross-account

  • Automação

Com o tempo, é comum acumular roles que:

  • Foram criadas para projetos temporários

  • Pertenciam a aplicações descontinuadas

  • Foram substituídas por novas roles

  • Nunca chegaram a ser utilizadas

Manter roles não utilizadas pode:

  • Aumentar risco de exploração indevida

  • Dificultar auditoria

  • Elevar complexidade de segurança

  • Violar princípio de menor privilégio


Detalhamento técnico da regra

A regra executa análise global da conta AWS (IAM é serviço global).


Como a regra é executada

  1. Autentica na conta AWS.

  2. Lista todas as roles via list_roles.

  3. Filtra apenas roles customizadas:

    • Exclui roles gerenciadas pela AWS:

  4. Para cada role:

    • Recupera as tags via list_role_tags.

    • Aplica filtros de tag (inclusão/exclusão).

    • Verifica:

      • RoleLastUsed.LastUsedDate

      • CreateDate

  5. Calcula diferença de dias em relação à data atual.

  6. Se a role:

    • Não foi utilizada dentro do período configurado

    • E não foi criada recentemente → A role é sinalizada.


Lógica aplicada

Uma role será considerada não utilizada quando:

Se a role foi criada recentemente dentro do período definido, ela não é sinalizada.

Se houve uso recente dentro do período definido, ela não é sinalizada.


Campos analisados

IAM Role:

  • RoleName

  • Arn

  • CreateDate

  • RoleLastUsed.LastUsedDate

  • Tags


Parâmetros considerados na busca

APIs utilizadas:

  • iam:ListRoles

  • iam:ListRoleTags

Condições técnicas:

  • Exclusão de roles AWS-managed.

  • Comparação de datas baseada em self.checker.period.days.


Período Avaliado (Filtro Temporal)

Período Avaliado (Filtro Temporal): A regra avalia:

  • A data de criação da role (CreateDate)

  • A última utilização da role (RoleLastUsed.LastUsedDate)

O intervalo de análise corresponde ao número de dias configurado na regra.

Padrão configurado configurado é para 30 dias, qualquer role que não tenha sido utilizada nos últimos 30 dias e que também não tenha sido criada nesse período será considerada não utilizada.

Esse parâmetro de avaliação pode ser ajustado nas configurações das regras.


Intervalo de Análise

Execução padrão: a cada 8 horas.


Aderência às melhores práticas

Não possui cálculo direto de savings.

Está alinhada com:

  • AWS Security Best Practices

  • AWS Well-Architected Framework – Pilar de Segurança

  • Princípio de menor privilégio

  • Gestão de ciclo de vida de identidades


Riscos associados

  • Roles esquecidas com permissões elevadas.

  • Possível uso indevido por credenciais comprometidas.

  • Complexidade de auditoria.

  • Exposição desnecessária de políticas sensíveis.


Exemplo prático

Configuração da regra:

Role:

  • Criada há 2 anos

  • Último uso há 30 dias

Resultado:

Role será sinalizada como não utilizada.


Dicas de uso e boas práticas para o usuário

  • Validar dependências antes de remover.

  • Desabilitar temporariamente antes da exclusão definitiva.

  • Revisar permissões anexadas.

  • Implementar revisão periódica de roles.

  • Utilizar naming convention clara.

  • Automatizar processo de limpeza de identidades obsoletas.

Possíveis exceções:

  • Roles utilizadas esporadicamente.

  • Roles de contingência.

  • Integrações cross-account pouco frequentes.

Recomenda-se validação técnica antes da remoção definitiva.

Last updated