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
Autentica na conta AWS.
Lista todas as roles via
list_roles.Filtra apenas roles customizadas:
Exclui roles gerenciadas pela AWS:
Para cada role:
Recupera as tags via
list_role_tags.Aplica filtros de tag (inclusão/exclusão).
Verifica:
RoleLastUsed.LastUsedDateCreateDate
Calcula diferença de dias em relação à data atual.
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:
RoleNameArnCreateDateRoleLastUsed.LastUsedDateTags
Parâmetros considerados na busca
APIs utilizadas:
iam:ListRolesiam: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