Saltar para o conteúdo principal
A MKA1 tem controles de criptografia ativos no ambiente de produção implantado. Nós verificamos criptografia em repouso para segredos do Kubernetes e volumes baseados em EBS, e criptografia em trânsito para a borda pública e o cluster de produção CNPG/PostgreSQL.

O que está ativo

Criptografia em repouso

Os controles abaixo foram verificados no ambiente de produção ao vivo:
  • A criptografia de 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 ARN de chave do provedor KMS: arn:aws:kms:us-west-2:REDACTED:key/5d84bfa7-REDACTED.
  • A storage class de produção ebs-sc usa o provisionador ebs.csi.aws.com com encrypted: "true" e type: gp3.
A fonte da infraestrutura implantada também declara armazenamento 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 usa storageClass: ebs-sc para o cluster PostgreSQL de produção.

Criptografia em trânsito

Os controles abaixo foram verificados no ambiente de produção ao vivo:
  • apigw.mka1.com:443 negociou TLSv1.3 com a cipher suite TLS_AES_128_GCM_SHA256.
  • livekit.mka1.com:443 negociou TLSv1.3 com a cipher suite TLS_AES_128_GCM_SHA256.
  • As duas verificações públicas de TLS foram concluídas com validaçã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 fonte da infraestrutura implantada também declara a política de ingress público 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 isso

Validamos o estado implantado com scripts do repositório infra-resources e inspeção direta do cluster em produção. tools/compliance/verify_storage_encryption.sh captura as evidências de criptografia de armazenamento executando:
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 as evidências públicas de TLS executando openssl s_client com -tls1_3 em cada endpoint público:
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 a configuração ao vivo do cluster diretamente:
kubectl -n kong get ingress kong-alb-ingress -o yaml
kubectl -n cnpg get cluster -o yaml

Evidências

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

Criptografia de envelope dos segredos do EKS

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

Storage class EBS criptografada

kind: StorageClass
metadata:
  name: ebs-sc
parameters:
  encrypted: "true"
  type: gp3
provisioner: ebs.csi.aws.com
volumeBindingMode: WaitForFirstConsumer

Handshake TLS 1.3 do gateway público da API

Verifying TLS 1.3 for apigw.mka1.com:443
Connecting to [redacted-ip]
CONNECTION ESTABLISHED
Protocol version: TLSv1.3
Ciphersuite: TLS_AES_128_GCM_SHA256
Verification: OK
Peer Temp Key: X25519, 253 bits
...
New, TLSv1.3, Cipher is TLS_AES_128_GCM_SHA256
Protocol: TLSv1.3
Server public key is 2048 bit
Verify return code: 0 (ok)

Handshake TLS 1.3 do LiveKit

Verifying TLS 1.3 for livekit.mka1.com:443
Connecting to [redacted-ip]
CONNECTION ESTABLISHED
Protocol version: TLSv1.3
Ciphersuite: TLS_AES_128_GCM_SHA256
Verification: OK
Peer Temp Key: X25519, 253 bits
...
New, TLSv1.3, Cipher is TLS_AES_128_GCM_SHA256
Protocol: TLSv1.3
Server public key is 2048 bit
Verify return code: 0 (ok)

Trechos verificados do cluster ao vivo

Kong public ingress:
- 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]