> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mka1.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Criptografia de dados

> Veja quais controles de criptografia estão ativos no ambiente MKA1 implantado, como os validamos e as evidências capturadas da produção.

O MKA1 possui controles de criptografia ativos no ambiente de produção implantado.
Verificamos a criptografia em repouso para segredos do Kubernetes e volumes baseados em EBS, e a criptografia em trânsito para a borda pública e o cluster CNPG/PostgreSQL de produção.

## O que está ativo

### Criptografia em repouso

Os seguintes controles foram verificados no ambiente de produção ao vivo:

* A criptografia envelope de segredos do EKS está ativa em `mk1-eks-production`.
* O cluster EKS ao vivo reporta `encryptionConfig` para o tipo de recurso `secrets`.
* O cluster ao vivo reporta uma chave de provedor KMS ARN: `arn:aws:kms:us-west-2:REDACTED:key/5d84bfa7-REDACTED`.
* A classe de armazenamento de produção `ebs-sc` utiliza o provisionador `ebs.csi.aws.com` com `encrypted: "true"` e `type: gp3`.

A infraestrutura implantada também declara armazenamento baseado em EBS criptografado:

* `infra-resources/mk1/resources/storage/ebs-storage-class.yaml` define `encrypted: "true"` em `ebs-sc`.
* `infra-resources/helm/cnpg/kube/cluster-production.yaml` utiliza `storageClass: ebs-sc` para o cluster PostgreSQL de produção.

### Criptografia em trânsito

Os seguintes controles foram verificados no ambiente de produção ao vivo:

* `apigw.mka1.com:443` negociou `TLSv1.3` com o conjunto de cifras `TLS_AES_128_GCM_SHA256`.
* `livekit.mka1.com:443` negociou `TLSv1.3` com o conjunto de cifras `TLS_AES_128_GCM_SHA256`.
* Ambas as verificações públicas de TLS foram concluídas com verificação de certificado `OK`.
* O ingress público do Kong está configurado com `alb.ingress.kubernetes.io/ssl-policy: ELBSecurityPolicy-TLS13-1-2-2021-06`.
* O cluster CNPG/PostgreSQL ao vivo reporta `ssl_min_protocol_version: TLSv1.3` e `ssl_max_protocol_version: TLSv1.3`.
* O cluster CNPG/PostgreSQL ao vivo reporta material de certificado ativo em `clientCASecret`, `serverCASecret`, `serverTLSSecret` e `replicationTLSSecret`.

A infraestrutura implantada também declara a política de ingress pública compatível com TLS:

* `infra-resources/kong/resources/ingress-proxy.yaml` define `alb.ingress.kubernetes.io/ssl-policy: ELBSecurityPolicy-TLS13-1-2-2021-06`.

## Como validamos

Validamos o estado implantado com scripts de propriedade do repositório em `infra-resources` e inspeção do cluster ao vivo.

`tools/compliance/verify_storage_encryption.sh` captura evidências de criptografia de armazenamento executando:

```bash theme={null}
aws eks describe-cluster --name mk1-eks-production --region us-west-2
kubectl get storageclass ebs-sc efs-sc -o yaml
aws efs describe-file-systems --region us-west-2
aws ec2 describe-volumes --region us-west-2 \
  --filters Name=tag:kubernetes.io/created-for/pvc/name,Values='*'
```

`tools/compliance/verify_tls13.sh` captura evidências públicas de TLS executando `openssl s_client` com `-tls1_3` em cada endpoint público:

```bash theme={null}
openssl s_client -connect apigw.mka1.com:443 -servername apigw.mka1.com -tls1_3 -brief
openssl s_client -connect apigw.mka1.com:443 -servername apigw.mka1.com -tls1_3 -showcerts

openssl s_client -connect livekit.mka1.com:443 -servername livekit.mka1.com -tls1_3 -brief
openssl s_client -connect livekit.mka1.com:443 -servername livekit.mka1.com -tls1_3 -showcerts
```

Também verificamos diretamente a configuração do cluster ao vivo:

```bash theme={null}
kubectl -n kong get ingress kong-alb-ingress -o yaml
kubectl -n cnpg get cluster -o yaml
```

## Evidências

Os trechos sanitizados a seguir são extraídos de verificações contra nossa implantação de produção ao vivo.
Eles preservam os sinais de criptografia verificados e ocultam detalhes de infraestrutura não relacionados.

### Criptografia envelope de segredos do EKS

```json theme={null}
{
  "cluster": {
    "name": "mk1-eks-production",
    "encryptionConfig": [
      {
        "resources": [
          "secrets"
        ],
        "provider": {
          "keyArn": "arn:aws:kms:us-west-2:[redacted-account]:key/[redacted-key-id]"
        }
      }
    ]
  }
}
```

### Classe de armazenamento baseada em EBS criptografada

```yaml theme={null}
kind: StorageClass
metadata:
  name: ebs-sc
parameters:
  encrypted: "true"
  type: gp3
provisioner: ebs.csi.aws.com
volumeBindingMode: WaitForFirstConsumer
```

### Handshake TLS 1.3 do gateway de API público

```text theme={null}
Verificando TLS 1.3 para apigw.mka1.com:443
Conectando a [redacted-ip]
CONEXÃO ESTABELECIDA
Versão do protocolo: TLSv1.3
Ciphersuite: TLS_AES_128_GCM_SHA256
Verificação: OK
Chave temporária do par: X25519, 253 bits
...
Novo, TLSv1.3, Cipher é TLS_AES_128_GCM_SHA256
Protocolo: TLSv1.3
Chave pública do servidor é 2048 bits
Código de retorno da verificação: 0 (ok)
```

### Handshake TLS 1.3 do LiveKit

```text theme={null}
Verificando TLS 1.3 para livekit.mka1.com:443
Conectando a [redacted-ip]
CONEXÃO ESTABELECIDA
Versão do protocolo: TLSv1.3
Ciphersuite: TLS_AES_128_GCM_SHA256
Verificação: OK
Chave temporária do par: X25519, 253 bits
...
Novo, TLSv1.3, Cipher é TLS_AES_128_GCM_SHA256
Protocolo: TLSv1.3
Chave pública do servidor é 2048 bits
Código de retorno da verificação: 0 (ok)
```

### Trechos verificados do cluster ao vivo

```text theme={null}
Ingress público do Kong:
- alb.ingress.kubernetes.io/ssl-policy: ELBSecurityPolicy-TLS13-1-2-2021-06

CNPG/PostgreSQL:
- ssl_min_protocol_version: TLSv1.3
- ssl_max_protocol_version: TLSv1.3
- clientCASecret: mk1-db-[redacted]
- serverCASecret: mk1-db-[redacted]
- serverTLSSecret: mk1-db-[redacted]
- replicationTLSSecret: mk1-db-[redacted]
```
