Mantén los secretos fuera del código y de los registros

Uso de la seguridad de AWS para desarrolladores

Rahul Singh

Technical Product Manager

No todo lo sensible es un secreto

Tres tipos de cadena

  • Secreto: alguien desconocido puede hacerse pasar por ti
  • Dato sensible: se expone a una persona
  • Config: no hay nada que ganar

Tres filas apiladas comparan un secreto, datos sensibles y configuración. Cada fila muestra dos valores de ejemplo y qué podría hacer un extraño con ellos, desde hacerse pasar por ti hasta no obtener nada.

Uso de la seguridad de AWS para desarrolladores

No todo lo sensible es un secreto

Tres tipos de cadena

  • Secreto: alguien desconocido puede hacerse pasar por ti
  • Dato sensible: se expone a una persona
  • Config: no hay nada que ganar

Dos nombres para datos personales

  • PII: información de identificación personal
  • PHI: información sanitaria protegida

Tres filas apiladas comparan un secreto, datos sensibles y configuración. Cada fila muestra dos valores de ejemplo y qué podría hacer un extraño con ellos, desde hacerse pasar por ti hasta no obtener nada.

Uso de la seguridad de AWS para desarrolladores

Cuatro formas de que se filtre un secreto

Un secreto en un sistema en ejecución se reparte en cuatro salidas numeradas: 1) al código fuente y su historial, 2) a variables de entorno, 3) a registros de la aplicación, 4) a salida de errores y trazas. Las cuatro convergen en una caja que dice legible por alguien.

  1. Código fuente y su historial
  2. Variables de entorno
Uso de la seguridad de AWS para desarrolladores

Cuatro formas de que se filtre un secreto

Un secreto en un sistema en ejecución se reparte en cuatro salidas numeradas: 1) al código fuente y su historial, 2) a variables de entorno, 3) a registros de la aplicación, 4) a salida de errores y trazas. Las cuatro convergen en una caja que dice legible por alguien.

  1. Código fuente y su historial
  2. Variables de entorno
  3. Registros de la aplicación
  4. Salida de errores y trazas
Uso de la seguridad de AWS para desarrolladores

Cifrado en reposo no significa oculto

La opción que parece segura

  • Cifrado en reposo, siempre
  • Clave AWS KMS, gestionada por AWS por defecto

Una función Lambda con una variable de entorno se divide en dos rutas. En disco está cifrada en reposo con una clave de AWS KMS (en verde). Por la API, una llamada a GetFunctionConfiguration devuelve el valor en claro (en rojo). Ambas rutas terminan en una nota: solo una ruta está protegida.

Uso de la seguridad de AWS para desarrolladores

Cifrado en reposo no significa oculto

La opción que parece segura

  • Cifrado en reposo, siempre
  • Clave AWS KMS, gestionada por AWS por defecto

Qué devuelve GetFunctionConfiguration

  • El valor, en texto plano

Una respuesta de almacenamiento a una pregunta de acceso

Una función Lambda con una variable de entorno se divide en dos rutas. En disco está cifrada en reposo con una clave de AWS KMS (en verde). Por la API, una llamada a GetFunctionConfiguration devuelve el valor en claro (en rojo). Ambas rutas terminan en una nota: solo una ruta está protegida.

Uso de la seguridad de AWS para desarrolladores

Qué almacén usar y por qué

Dos servicios, un cometido cada uno

  • Secrets Manager: creado para secretos
  • Parameter Store: creado para configuración, y un parámetro SecureString se cifra con una clave KMS

Un diagrama de espectro. Secrets Manager a la izquierda, Systems Manager Parameter Store a la derecha, y cuatro carriles horizontales entre ambos. Un marcador numerado en cada carril: el 1 muy a la izquierda, el 2 a la izquierda del centro, el 3 en el centro, el 4 a la derecha; en el cuarto carril hay cifras de coste en los extremos y una nota: la rotación es la que decide.

Uso de la seguridad de AWS para desarrolladores

Qué almacén usar y por qué

Dos servicios, un cometido cada uno

  • Secrets Manager: creado para secretos
  • Parameter Store: creado para configuración, y un parámetro SecureString se cifra con una clave KMS

Cuatro factores deciden

  1. Rotación gestionada
  2. Uso entre cuentas
  3. Versionado
  4. Coste

Un diagrama de espectro. Secrets Manager a la izquierda, Systems Manager Parameter Store a la derecha, y cuatro carriles horizontales entre ambos. Un marcador numerado en cada carril: el 1 muy a la izquierda, el 2 a la izquierda del centro, el 3 en el centro, el 4 a la derecha; en el cuarto carril hay cifras de coste en los extremos y una nota: la rotación es la que decide.

Uso de la seguridad de AWS para desarrolladores

Léelo fresco, cachéalo un rato

Tu proceso en ejecución llama a GetSecretValue en un almacén de secretos en el marcador uno, usando un rol acotado en el marcador dos limitado a un ARN de secreto más kms:Decrypt, y guarda el valor devuelto en una caché en memoria en el marcador tres antes de llamar a una base de datos o a la API de un socio.

  1. Llama a GetSecretValue al inicio
  2. Rol acotado a un ARN de secreto más kms:Decrypt
Uso de la seguridad de AWS para desarrolladores

Léelo fresco, cachéalo un rato

Tu proceso en ejecución llama a GetSecretValue en un almacén de secretos en el marcador uno, usando un rol acotado en el marcador dos limitado a un ARN de secreto más kms:Decrypt, y guarda el valor devuelto en una caché en memoria en el marcador tres antes de llamar a una base de datos o a la API de un socio.

  1. Llama a GetSecretValue al inicio
  2. Rol acotado a un ARN de secreto más kms:Decrypt
  3. Guarda el valor en caché en memoria

Si cacheas para siempre, la rotación te rompe

Uso de la seguridad de AWS para desarrolladores

La rotación te cambia el valor por debajo

Por qué cuatro pasos y no un único cambio

  • El valor nuevo se valida antes de que nadie lo use
  • Un único cambio rompería a todos los clientes a la vez

Tres columnas verticales: los pasos de rotación, la etiqueta y tu caché. Secrets Manager ejecuta createSecret, setSecret y testSecret; una línea discontinua marca cuando finishSecret mueve la etiqueta. Arriba: la etiqueta dice AWSCURRENT igual al valor antiguo y la caché es correcta; abajo: AWSCURRENT igual al valor nuevo y la misma caché aparece rayada en rojo. Dos soluciones cierran el diagrama: vida corta de la caché y refresco al fallar la autenticación.

Uso de la seguridad de AWS para desarrolladores

La rotación te cambia el valor por debajo

Por qué cuatro pasos y no un único cambio

  • El valor nuevo se valida antes de que nadie lo use
  • Un único cambio rompería a todos los clientes a la vez

Cuatro pasos, un traspaso

  • AWSPENDING, AWSCURRENT, AWSPREVIOUS

Tres columnas verticales: los pasos de rotación, la etiqueta y tu caché. Secrets Manager ejecuta createSecret, setSecret y testSecret; una línea discontinua marca cuando finishSecret mueve la etiqueta. Arriba: la etiqueta dice AWSCURRENT igual al valor antiguo y la caché es correcta; abajo: AWSCURRENT igual al valor nuevo y la misma caché aparece rayada en rojo. Dos soluciones cierran el diagrama: vida corta de la caché y refresco al fallar la autenticación.

Uso de la seguridad de AWS para desarrolladores

La rotación te cambia el valor por debajo

Por qué cuatro pasos y no un único cambio

  • El valor nuevo se valida antes de que nadie lo use
  • Un único cambio rompería a todos los clientes a la vez

Cuatro pasos, un traspaso

  • AWSPENDING, AWSCURRENT, AWSPREVIOUS

Nada avisa a tu caché

  • Vida útil de minutos, luego vuelve a leer
  • Refresca al fallar la autenticación

Tres columnas verticales: los pasos de rotación, la etiqueta y tu caché. Secrets Manager ejecuta createSecret, setSecret y testSecret; una línea discontinua marca cuando finishSecret mueve la etiqueta. Arriba: la etiqueta dice AWSCURRENT igual al valor antiguo y la caché es correcta; abajo: AWSCURRENT igual al valor nuevo y la misma caché aparece rayada en rojo. Dos soluciones cierran el diagrama: vida corta de la caché y refresco al fallar la autenticación.

Uso de la seguridad de AWS para desarrolladores

Enmascara, redacta y sigue pudiendo depurar

Una línea de log en bruto con un ID de solicitud, un número completo de tarjeta y un token, enmarcados en rojo. Debajo, los mismos tres campos tras el tratamiento: el ID igual, la tarjeta enmascarada a sus cuatro últimos dígitos y el token reemplazado por un marcador de «redactado», con una nota: queda lo suficiente para depurar.

Limpia antes de escribir

  • Mask: mantiene la forma, oculta el valor
Uso de la seguridad de AWS para desarrolladores

Enmascara, redacta y sigue pudiendo depurar

Una línea de log en bruto con un ID de solicitud, un número completo de tarjeta y un token, enmarcados en rojo. Debajo, los mismos tres campos tras el tratamiento: el ID igual, la tarjeta enmascarada a sus cuatro últimos dígitos y el token reemplazado por un marcador de «redactado», con una nota: queda lo suficiente para depurar.

Limpia antes de escribir

  • Mask: mantiene la forma, oculta el valor
  • Redact: elimina el valor, deja un marcador
Uso de la seguridad de AWS para desarrolladores

Enmascara, redacta y sigue pudiendo depurar

Una línea de log en bruto con un ID de solicitud, un número completo de tarjeta y un token, enmarcados en rojo. Debajo, los mismos tres campos tras el tratamiento: el ID igual, la tarjeta enmascarada a sus cuatro últimos dígitos y el token reemplazado por un marcador de «redactado», con una nota: queda lo suficiente para depurar.

Limpia antes de escribir

  • Mask: mantiene la forma, oculta el valor
  • Redact: elimina el valor, deja un marcador

Quien está de guardia necesita config; un extraño, lo demás no

Uso de la seguridad de AWS para desarrolladores

¡Vamos a practicar!

Uso de la seguridad de AWS para desarrolladores

Preparing Video For Download...