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

# Cifrado de datos

> Consulta qué controles de cifrado están activos en el entorno MKA1 desplegado, cómo los validamos y la evidencia capturada desde producción.

MKA1 tiene controles de cifrado activos en el entorno de producción desplegado.
Verificamos el cifrado en reposo para los secretos de Kubernetes y los volúmenes respaldados por EBS, y el cifrado en tránsito para el edge público y el clúster de producción CNPG/PostgreSQL.

## Qué está activo

### Cifrado en reposo

Los siguientes controles fueron verificados en el entorno de producción en vivo:

* El cifrado envelope de secretos EKS está activo en `mk1-eks-production`.
* El clúster EKS en vivo reporta `encryptionConfig` para el tipo de recurso `secrets`.
* El clúster en vivo reporta una clave de proveedor KMS ARN: `arn:aws:kms:us-west-2:REDACTED:key/5d84bfa7-REDACTED`.
* La clase de almacenamiento de producción `ebs-sc` utiliza el provisionador `ebs.csi.aws.com` con `encrypted: "true"` y `type: gp3`.

La infraestructura desplegada también declara almacenamiento respaldado por EBS cifrado:

* `infra-resources/mk1/resources/storage/ebs-storage-class.yaml` establece `encrypted: "true"` en `ebs-sc`.
* `infra-resources/helm/cnpg/kube/cluster-production.yaml` usa `storageClass: ebs-sc` para el clúster de PostgreSQL de producción.

### Cifrado en tránsito

Los siguientes controles fueron verificados en el entorno de producción en vivo:

* `apigw.mka1.com:443` negoció `TLSv1.3` con el conjunto de cifrado `TLS_AES_128_GCM_SHA256`.
* `livekit.mka1.com:443` negoció `TLSv1.3` con el conjunto de cifrado `TLS_AES_128_GCM_SHA256`.
* Ambas comprobaciones públicas de TLS se completaron con la verificación de certificado `OK`.
* El ingreso público de Kong está configurado con `alb.ingress.kubernetes.io/ssl-policy: ELBSecurityPolicy-TLS13-1-2-2021-06`.
* El clúster CNPG/PostgreSQL en vivo reporta `ssl_min_protocol_version: TLSv1.3` y `ssl_max_protocol_version: TLSv1.3`.
* El clúster CNPG/PostgreSQL en vivo reporta material de certificado activo en `clientCASecret`, `serverCASecret`, `serverTLSSecret` y `replicationTLSSecret`.

La infraestructura desplegada también declara la política de ingreso pública compatible con TLS:

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

## Cómo lo validamos

Validamos el estado desplegado con scripts propios del repositorio en `infra-resources` e inspección directa del clúster en vivo.

`tools/compliance/verify_storage_encryption.sh` captura evidencia de cifrado de almacenamiento ejecutando:

```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 evidencia pública de TLS ejecutando `openssl s_client` con `-tls1_3` contra 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
```

También verificamos directamente la configuración del clúster en vivo:

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

## Evidencia

Los siguientes fragmentos saneados son extractos de comprobaciones contra nuestro despliegue de producción en vivo.
Preservan las señales de cifrado verificadas y redactan detalles de infraestructura no relacionados.

### Cifrado envelope de secretos 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]"
        }
      }
    ]
  }
}
```

### Clase de almacenamiento respaldada por EBS cifrada

```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 del gateway API público

```text theme={null}
Verificando TLS 1.3 para apigw.mka1.com:443
Conectando a [redacted-ip]
CONEXIÓN ESTABLECIDA
Versión del protocolo: TLSv1.3
Cifrado: TLS_AES_128_GCM_SHA256
Verificación: OK
Clave temporal del par: X25519, 253 bits
...
Nuevo, TLSv1.3, Cifrado es TLS_AES_128_GCM_SHA256
Protocolo: TLSv1.3
Clave pública del servidor es de 2048 bits
Código de retorno de verificación: 0 (ok)
```

### Handshake TLS 1.3 de LiveKit

```text theme={null}
Verificando TLS 1.3 para livekit.mka1.com:443
Conectando a [redacted-ip]
CONEXIÓN ESTABLECIDA
Versión del protocolo: TLSv1.3
Cifrado: TLS_AES_128_GCM_SHA256
Verificación: OK
Clave temporal del par: X25519, 253 bits
...
Nuevo, TLSv1.3, Cifrado es TLS_AES_128_GCM_SHA256
Protocolo: TLSv1.3
Clave pública del servidor es de 2048 bits
Código de retorno de verificación: 0 (ok)
```

### Extractos verificados del clúster en vivo

```text theme={null}
Ingreso público de 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]
```
