# CW: Cloudwatch sem período de retenção

> Esta regra identifica Log Groups do Amazon CloudWatch Logs que **não possuem política de retenção configurada**, ou seja, não possuem o atributo `retentionInDays`.
>
> Quando não há retenção definida, os logs são armazenados indefinidamente.

***

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

Por padrão, quando um Log Group não possui retenção configurada:

* Os logs permanecem armazenados indefinidamente
* O volume de dados cresce continuamente
* O custo de armazenamento aumenta ao longo do tempo

Impactos diretos:

* Crescimento exponencial de custo
* Acúmulo de dados irrelevantes
* Risco de armazenar dados sensíveis por tempo indefinido
* Falta de governança sobre ciclo de vida de logs

Essa regra atua tanto em **ECONOMIA** quanto em **GOVERNANÇA**.

***

**Detalhamento técnico da regra**

A regra realiza varredura regional nos Log Groups do CloudWatch Logs e identifica aqueles que **não possuem o campo `retentionInDays` definido**.

***

**Como a regra é executada**

1. Autentica na conta AWS por região.
2. Executa:

   ```
   logs:DescribeLogGroups
   ```
3. Lista todos os Log Groups existentes.
4. Aplica filtros de tag (inclusão/exclusão).
5. Para cada Log Group:
   * Verifica se o campo `retentionInDays` está presente.
6. Se não estiver presente → o recurso é sinalizado.

***

**Lógica aplicada**

Um Log Group será sinalizado quando:

```
"retentionInDays" NOT IN logGroup
```

Ou seja:

```
Não possui política de retenção configurada
```

***

**Campos analisados**

Log Group:

* `logGroupName`
* `creationTime`
* `storedBytes`
* `tags`
* Região

Campo crítico:

* `retentionInDays`

***

**Parâmetros considerados na busca**

API utilizada:

* `logs:DescribeLogGroups`

Não há filtros adicionais além de filtros de tag configurados na regra.

***

### Período Avaliado (Filtro Temporal)

Período Avaliado: 15 dias

Padrão configurado é que as métricas analisadas correspondem aos últimos 15 dias, CloudWatch sem período de retenção definido.<br>

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

***

**Cálculo de Savings**

Esta regra é classificada como **ECONOMIA + GOVERNANÇA**.

O savings estimado considera uma redução média de **13%** sobre o custo atual relacionado ao armazenamento de logs, após definição de política de retenção adequada.

***

**Fórmula Oficial de Savings**

```
Savings = sum("lineitem/unblendedcost") * 0.13
```

***

**Campo de custo utilizado**

No Billing AWS:

* Service: AmazonCloudWatch
* Usage Type:
  * DataStorage-Bytes
* Line Item Type: Usage
* Campo financeiro considerado:
  * `lineitem/unblendedcost`

***

**Interpretação**

A regra assume que a definição de retenção adequada pode gerar economia média de aproximadamente **13%** sobre o custo atual de armazenamento de logs.

Exemplo:

Se o custo mensal atual for:

```
$50.000
```

Aplicando a fórmula:

```
Savings = 50.000 * 0.13
Savings = $6.500/mês
```

Novo custo estimado:

```
$43.500/mês
```

***

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

* Definir retenção padrão organizacional (ex: 30 ou 90 dias).
* Aplicar políticas automáticas via IaC.
* Revisar Log Groups antigos.
* Avaliar requisitos regulatórios antes de reduzir retenção.
* Monitorar crescimento de `storedBytes`.

Possíveis exceções:

* Logs exigidos por compliance regulatório.
* Ambientes forenses ou auditoria.
* Logs críticos para investigação de segurança.

Recomenda-se política corporativa clara de retenção de logs.
