← Volver al catálogo

AWS KMS

AWS Key Management Service (AWS KMS)

En una frase: Crea y controla claves de cifrado gestionadas e integradas con casi todos los servicios
Documentación oficial: Documentación de AWS KMS ↗

Qué es

AWS KMS (Key Management Service) crea, guarda y usa claves criptográficas en módulos de seguridad hardware (HSM) validados, sin que el material de la clave salga nunca en claro. Casi todos los servicios de AWS (S3 (Simple Storage Service), EBS (Elastic Block Store), RDS (Relational Database Service), DynamoDB, Lambda, Secrets Manager…) se integran con KMS para el cifrado en reposo, y cada uso de una clave queda registrado en CloudTrail. Tú decides quién puede usar cada clave y para qué.

Conceptos clave

  • Tipos de clave según quién la gestiona:
    • Gestionadas por el cliente: las creas tú; controlas la política, la rotación, la activación y el borrado. Se pueden compartir con otras cuentas.
    • Gestionadas por AWS (aws/s3, aws/ebs…): las crea un servicio en tu cuenta; no puedes cambiar su política ni compartirlas; rotan cada año.
    • Propiedad de AWS: las usa AWS internamente en muchas cuentas; no las ves ni auditas.
  • Simétricas (AES-256 (Advanced Encryption Standard: cifrado simétrico con claves de 256 bits), la opción por defecto, el material nunca sale de KMS), asimétricas (RSA (Rivest-Shamir-Adleman: algoritmo de clave pública) o ECC (Elliptic Curve Cryptography: criptografía de curva elíptica), para firmar o cifrar fuera de AWS con la clave pública) y HMAC (Hash-based Message Authentication Code: código que verifica integridad y autenticidad).
  • Cifrado de sobre (envelope encryption): KMS cifra directamente como máximo 4 KB. Para datos mayores se pide una clave de datos (GenerateDataKey): cifras los datos localmente con ella y guardas su copia cifrada junto a los datos. Es lo que hacen los servicios de AWS por dentro.
  • Política de clave: el control de acceso principal. Sin una política que lo permita, ni siquiera un administrador de IAM (Identity and Access Management) puede usar la clave. Las concesiones (grants) dan permisos temporales y delegables.
  • Rotación automática: para claves simétricas gestionadas por el cliente, con periodo configurable de 90 a 2560 días (365 por defecto), y rotación bajo demanda. Las versiones antiguas se conservan para descifrar lo ya cifrado.
  • Borrado programado: espera obligatoria de 7 a 30 días; lo cifrado con una clave borrada es irrecuperable. Desactivar la clave es la alternativa reversible.
  • Claves multirregión: réplicas con el mismo material en varias regiones para cifrar en una y descifrar en otra sin volver a cifrar.
  • Almacenes de claves personalizados: respaldados por un clúster de CloudHSM propio o por un gestor de claves externo (XKS).

Casos de uso típicos

  • Cifrado en reposo de S3, EBS, RDS, DynamoDB y demás, con claves bajo tu control.
  • Cumplir normativas que exigen rotación, separación de funciones y auditoría del uso.
  • Cifrar datos en la aplicación con el SDK (Software Development Kit: bibliotecas para programar contra AWS) de cifrado y claves de datos.
  • Firmar y verificar documentos o tokens con claves asimétricas.
  • Compartir datos cifrados con otra cuenta permitiéndole usar la clave.

Cuándo NO usarlo

  • Si necesitas un HSM de un solo inquilino con control exclusivo y acceso por PKCS (Public-Key Cryptography Standards: estándares de criptografía de clave pública)#11 o JCE (Java Cryptography Extension: interfaz criptográfica de Java): CloudHSM.
  • Para guardar contraseñas o claves de API (Application Programming Interface: interfaz para que los programas se comuniquen): Secrets Manager (que usa KMS por debajo).
  • Para certificados TLS (Transport Layer Security: cifrado de las conexiones): AWS Certificate Manager.

Comparativa con servicios parecidos

NecesidadServicio adecuado
Claves gestionadas e integradas con los servicios de AWSKMS
HSM dedicado bajo tu control exclusivoCloudHSM
Guardar y rotar secretos (contraseñas, tokens)Secrets Manager
Certificados SSL/TLSACM
Parámetros de configuración, algunos cifradosSystems Manager Parameter Store

Modelo de precios

Cada clave gestionada por el cliente tiene una cuota mensual (y cada versión rotada añade coste, con un tope), y se paga por cada petición a la API (cifrar, descifrar, generar claves de datos), con un nivel gratuito mensual. Las claves gestionadas por AWS no tienen cuota mensual, pero sus peticiones sí cuentan. En S3, las S3 Bucket Keys reducen mucho las llamadas a KMS y, por tanto, su coste.

Seguridad y alta disponibilidad

  • El material de las claves nunca sale de los HSM en claro.
  • Políticas de clave para separar a quien administra la clave de quien la usa.
  • Condiciones como kms:ViaService para permitir el uso solo a través de un servicio.
  • Cada llamada queda registrada en CloudTrail.
  • Servicio regional y altamente disponible; claves multirregión para recuperación entre regiones.

Trampas de examen

  • "Controlar la rotación, la política o compartir la clave con otra cuenta": clave gestionada por el cliente, no gestionada por AWS.
  • "Cifrar un fichero de más de 4 KB con KMS": cifrado de sobre con GenerateDataKey.
  • "Borrar la clave de inmediato": no se puede; espera de 7 a 30 días (desactivarla sí es inmediato).
  • "HSM de un solo inquilino" o "FIPS (Federal Information Processing Standards: normas de seguridad del gobierno de EE. UU.) 140 nivel 3 bajo control exclusivo": CloudHSM.
  • "AccessDenied al descifrar aunque IAM lo permite": falta el permiso en la política de la clave.
  • "Descifrar en otra región sin recifrar": clave multirregión.
  • "Demasiadas llamadas a KMS desde S3": S3 Bucket Keys.

Preguntas de práctica

Preguntas originales escritas para estos apuntes. No son preguntas reales de examen.

Fuentes