Las aplicaciones web a menudo requieren secretos como claves API, contraseñas y certificados privados para funcionar, pero almacenar y acceder a estos recursos puede dejar a los desarrolladores vulnerables a los riesgos de seguridad.
En este artículo, aprenderá sobre los desafíos de la administración de secretos, así como algunas de las mejores prácticas para administrar, almacenar y leer secretos en aplicaciones web.
Los secretos son credenciales digitales utilizadas para la autenticación y autorización. Gestionan los derechos de acceso tanto a nivel de persona a aplicación como de aplicación a aplicación.
Los tipos comunes de secretos incluyen:
Los secretos brindan a los usuarios y aplicaciones acceso a datos, sistemas y servicios confidenciales. Por eso es fundamental mantener los secretos seguros en tránsito y en reposo.
El método más frecuente para almacenar secretos ha sido el uso de archivos .env
, a menudo conocidos como variables de entorno ; sin embargo, estos archivos pueden exponer los datos a usuarios no autorizados y la administración manual de los archivos puede generar errores.
Para obtener más detalles sobre los riesgos que plantean los archivos .env
, lea aquí .
La gestión secreta ofrece una alternativa más segura.
Para comprender la gestión de secretos, primero debe conocer el ciclo de vida del secreto.
Un secreto saludable debe seguir este proceso:
Generación/creación: El secreto es generado manualmente por el usuario o automáticamente según sea necesario. Las contraseñas generalmente se adhieren a una política que rige su creación y uso.
Rotación: una vez que un secreto está en uso, debe cambiarse periódicamente, ya sea automáticamente o mediante un aviso para la creación manual. Si un secreto está obsoleto o caduca, el acceso se bloquea hasta que se cambie el secreto.
Revocación: cuando un secreto ya no es necesario o deseado, por ejemplo, cuando un empleado deja una empresa o cuando se encuentra una actividad sospechosa, se elimina de un usuario o programa, bloqueando efectivamente el acceso al recurso. La eliminación de secretos innecesarios, vencidos, violados o débiles es un paso importante para mantener una excelente higiene de los secretos.
La gestión de secretos es el proceso de gestión segura y eficiente de la producción, rotación, revocación y almacenamiento de credenciales a lo largo del ciclo de vida del secreto. Piense en ello como una versión mejorada de la gestión de contraseñas. Si bien el alcance de las credenciales administradas se está ampliando, el propósito sigue siendo el mismo: proteger los activos vitales del acceso no deseado.
La gestión de secretos reduce o elimina la participación del usuario en la administración de secretos para limitar posibles puntos de falla.
En general, contribuye a la seguridad en tres niveles:
La seguridad de la infraestructura evita el acceso no autorizado a cuentas de usuarios y aplicaciones, dispositivos y otros elementos de la red.
La seguridad del servicio en la nube restringe y administra el acceso a cuentas en la nube y servicios críticos basados en la nube.
La seguridad de los datos evita el compromiso de los datos en sistemas vitales, almacenamiento, bases de datos y otros recursos.
Sin embargo, implementar la administración de secretos significa integrar medidas de seguridad en los niveles más vulnerables de la infraestructura de una organización (nubes, código, datos y dispositivos), lo que puede ser difícil.
Algunos de los riesgos comunes de la gestión de secretos incluyen:
Visibilidad y conciencia incompletas: esta es una falla particular en los modelos descentralizados en los que los administradores, desarrolladores y otros miembros del equipo guardan sus secretos individualmente, si es que lo hacen. La supervisión aquí significa que seguramente habrá brechas de seguridad, así como desafíos de auditoría.
Credenciales codificadas/incrustadas: las aplicaciones y los dispositivos IoT se suministran y se implementan con credenciales predeterminadas codificadas que son fáciles de descifrar mediante herramientas de escaneo y ataques simples de adivinación o estilo diccionario.
Credenciales privilegiadas y la nube: las consolas de administrador de virtualización y la nube (como las proporcionadas por AWS u Office 365) otorgan a los usuarios amplios privilegios de superusuario, lo que les permite activar y desactivar instantáneamente máquinas virtuales y aplicaciones a gran escala. Cada una de estas máquinas virtuales tiene su propio conjunto de privilegios y secretos que deben controlarse.
Herramientas de DevOps: los equipos de DevOps generalmente usan múltiples herramientas y tecnologías para orquestación, administración de configuración y otros fines (por ejemplo, contenedores Chef, Puppet, Ansible, Salt y Docker), que dependen de la automatización y otros scripts que requieren secretos para funcionar.
Cuentas de proveedores de terceros/soluciones de acceso remoto: es difícil garantizar que la autorización proporcionada a través del acceso remoto o a un tercero se utilice adecuadamente.
Procesos manuales de gestión de secretos: Más técnicas manuales de gestión de secretos implican un mayor riesgo de fallas y errores de seguridad.
Sin embargo, existen soluciones y mejores prácticas para abordar estos problemas y mantener seguros sus datos confidenciales.
Hay varios métodos que puede utilizar para proporcionar una forma segura para que sus usuarios y aplicaciones recuperen lo que necesitan para acceder a los sistemas.
Esto es lo que debe hacer para construir un sistema eficiente de gestión de secretos dentro de su organización.
Primero, necesitas centralizar tus secretos. Muchos proyectos almacenan secretos en sistemas de control de versiones como GitHub, Bitbucket y GitLab.
La centralización de sus datos facilita el control de quién puede acceder a los secretos y en qué momento.
Para centralizar los secretos, puede guardarlos en una base de datos o usar un Administrador de secretos.
Lea más sobre los administradores secretos aquí .
Una política de gestión de secretos unificados debe proporcionar pautas estrictas para la estructura de los secretos (longitud mínima, complejidad, uso de caracteres especiales, contraseñas prohibidas, reutilización y duración) al tiempo que prohíbe el uso de secretos predeterminados o codificados.
Algunas características fundamentales deben incluirse en esta política:
Cuando las acciones no están automatizadas, corre el riesgo de sufrir daños causados por un error humano. Intente confiar en la tecnología en lugar de en los humanos para desarrollar, administrar, difundir y mantener secretos y eliminar cualquier secreto codificado o incrustado.
Proporcione credenciales temporales a personas o entidades únicas a nivel granular, también conocidas como secretos dinámicos , para que, en caso de incumplimiento, las credenciales afectadas puedan revocarse sin afectar toda la infraestructura de desarrollo.
Como mínimo, se deben crear diferentes conjuntos de credenciales para diferentes sistemas o equipos de producción, idealmente para cada entorno.
Los secretos deben cifrarse en tránsito y en reposo para garantizar la máxima seguridad dentro de la red.
Sus claves de cifrado deben consolidarse en la solución de gestión de secretos, lo que le permite establecer un control adecuado sobre quién tiene acceso a esas claves.
Para mejorar la supervisión y la responsabilidad, emplee el monitoreo de sesiones privilegiadas para registrar, auditar y monitorear todas las sesiones privilegiadas para cuentas, usuarios, scripts y herramientas de automatización.
La captura de pulsaciones de teclas y pantallas también es una opción, lo que permite la visualización en vivo y la reproducción.
Algunas soluciones de administración de sesiones de privilegios comerciales también permiten que los equipos de TI detecten comportamientos sospechosos de sesiones en curso y detengan, bloqueen o finalicen la sesión hasta que la actividad pueda investigarse a fondo.
Aproveche la naturaleza distribuida de las redes actuales. Mantenga los secretos y los datos confidenciales separados en lugar de concentrarlos en la misma ubicación. Esto facilita el uso y la actualización de secretos dentro de la infraestructura de desarrollo.
La gestión de secretos es fundamental para preservar la ciberseguridad de una organización. Su organización debe desarrollar una estrategia central de administración de secretos que defina reglas y procesos uniformes para todas las fases del ciclo de vida de un secreto a fin de administrar los secretos de manera segura y eficaz.