# VPC: Rede IPv4 pública

> Esta regra identifica recursos que possuem **endereços IP públicos expostos**, incluindo:
>
> * Network Interfaces (ENIs) com `PublicIp` associado
> * Elastic IPs (EIPs) alocados
>
> O objetivo é mapear exposição pública de rede para fins de governança, segurança e controle de custo.

***

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

Endereços IP públicos:

* Geram custo direto (modelo atual de cobrança de IPv4 público)
* Aumentam superfície de ataque
* Podem expor workloads indevidamente
* Indicam possíveis falhas de arquitetura privada

Impactos potenciais:

* Risco de segurança
* Não conformidade com políticas corporativas
* Custo recorrente por IP público
* Shadow IT

Esta regra é classificada principalmente como **GOVERNANÇA**, com impacto secundário em **ECONOMIA**.

***

**Detalhamento técnico da regra**

A regra realiza varredura regional para identificar:

1. Network Interfaces com IP público associado
2. Elastic IPs existentes na conta

Não há validação de utilização ou tráfego.

***

**Como a regra é executada**

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

**Para Network Interfaces**

```
ec2:DescribeNetworkInterfaces
```

Com filtro:

```
addresses.association.public-ip = *
```

3. Coleta todas as ENIs com IP público associado.

***

**Para Elastic IPs**

```
ec2:DescribeAddresses
```

4. Identifica todos os endereços que possuem:

```
PublicIp presente
```

5. Aplica filtros de tag (inclusão/exclusão).
6. Registra os recursos encontrados.

***

**Lógica aplicada**

Um recurso será sinalizado quando:

**Caso 1 – Network Interface**

```
Possui Association.PublicIp
```

**Caso 2 – Elastic IP**

```
Possui PublicIp
```

Não há filtro de status ou uso.

***

**Campos analisados**

**Network Interface**

* `NetworkInterfaceId`
* `PublicIp`
* `PrivateIpAddress`
* `SubnetId`
* `VpcId`
* `TagSet`
* Região

**Elastic IP**

* `AllocationId`
* `PublicIp`
* `InstanceId`
* `NetworkInterfaceId`
* `AssociationId`
* `Tags`
* Região

***

**Parâmetros considerados na busca**

APIs utilizadas:

* `ec2:DescribeNetworkInterfaces`
* `ec2:DescribeAddresses`

Filtro aplicado para ENI:

```
addresses.association.public-ip = *
```

***

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

Período Avaliado: 15 dias

Configuração padrão e que identifique recursos IPv4 com exposição pública dentro do perdiodo de 15 dias

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

Caso a política da organização determine remoção de IPs públicos desnecessários:

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

Relacionado ao custo de IPv4 público.

***

**Campo de custo utilizado**

No Billing AWS:

* Service: AmazonEC2
* Usage Type:
  * PublicIPv4:InUseAddress
  * PublicIPv4:IdleAddress
* Line Item Type: Usage
* Campo financeiro considerado:
  * `lineitem/unblendedcost`

***

**Exemplo aplicado ao Billing**

Cenário:

* 25 IPs públicos ativos
* Custo médio por IP: $3,60/mês

Cálculo:

```
Savings potencial = 25 × 3,60
Savings = $90/mês
```

Savings anual:

```
90 × 12 = $1.080
```

***

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

* Preferir arquitetura privada com NAT Gateway ou Load Balancer.
* Utilizar bastion host controlado para acesso administrativo.
* Implementar política de bloqueio de criação de IP público automático.
* Monitorar criação manual de EIPs.
* Integrar com política de segurança corporativa.

Possíveis exceções:

* Serviços que exigem exposição pública.
* APIs públicas.
* Infraestrutura de CDN.
* Bastion hosts controlados.

Recomenda-se revisão periódica de todos os IPs públicos da conta.
