# IAM: Usuários Infrequentes do IAM

> Esta regra identifica usuários IAM que não apresentaram atividade recente, considerando:
>
> * Último login no Console AWS (`PasswordLastUsed`)
> * Último uso de Access Keys
>
> O objetivo é detectar usuários inativos que podem representar risco de segurança ou oportunidade de limpeza administrativa.

***

**Contexto da regra e impacto no negócio**

Usuários IAM inativos representam:

* Superfície de ataque desnecessária
* Risco de credenciais comprometidas sem monitoramento ativo
* Complexidade de governança
* Falta de controle sobre identidades obsoletas

Cenários comuns:

* Colaboradores desligados
* Projetos encerrados
* Contas técnicas não mais utilizadas
* Ambientes de teste descontinuados

Manter usuários inativos viola o princípio de menor privilégio e aumenta o risco organizacional.

***

**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 todos os usuários via `list_users`.
3. Aplica filtros de tag (inclusão/exclusão).
4. Para cada usuário:
   * Verifica `PasswordLastUsed`.
   * Consulta todas as Access Keys via `list_access_keys`.
   * Para cada chave, consulta `get_access_key_last_used`.
5. Calcula a diferença de dias entre a data atual e:
   * Último login
   * Último uso de access key
6. Se nenhuma atividade ocorreu dentro do período configurado, o usuário é sinalizado.

***

**Lógica aplicada**

Um usuário será considerado inativo quando:

```
Não houve login recente
E
Nenhuma Access Key foi utilizada dentro do período configurado
```

Se qualquer uma das condições de uso recente for verdadeira, o usuário não é sinalizado.

***

**Campos analisados**

IAM User:

* `UserName`
* `Arn`
* `CreateDate`
* `PasswordLastUsed`
* `Tags`

Access Keys:

* `AccessKeyId`
* `LastUsedDate`

***

**Parâmetros considerados na busca**

APIs utilizadas:

* `iam:ListUsers`
* `iam:ListAccessKeys`
* `iam:GetAccessKeyLastUsed`

Condições técnicas:

* Comparação de data atual com:
  * `PasswordLastUsed`
  * `LastUsedDate`
* Período definido por `self.checker.period.days`

***

**Período Avaliado (Filtro Temporal)**

Período Avaliado (Filtro Temporal): A regra avalia a última atividade do usuário com base no número de dias configurado na regra.

Exemplo: Se configurado para 30 dias, qualquer usuário sem login ou uso de access key nos últimos 30 dias será considerado inativo.

> 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 de savings direto.

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**

* Credenciais esquecidas e comprometidas.
* Usuários antigos com permissões elevadas.
* Falta de rastreabilidade.
* Violação de compliance.

***

**Exemplo prático**

Configuração da regra:

```
Período = 120 dias
```

Usuário:

* Último login: 200 dias atrás
* Último uso de access key: 180 dias atrás

Resultado:

Usuário será sinalizado como inativo.

***

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

* Desabilitar usuários antes de excluir.
* Rotacionar ou remover access keys antigas.
* Implementar revisão periódica de identidades.
* Preferir uso de IAM Roles em vez de usuários.
* Integrar com IAM Identity Center quando possível.
* Automatizar processo de offboarding.

Possíveis exceções:

* Contas de serviço com uso esporádico.
* Contas mantidas para auditoria histórica.

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