alphaspirit - Fotolia

P
Lo básico Póngase al día con nuestro contenido introductorio.

Cómo almaceno secretos en AWS para que no aparezcan en mi código

Para asegurar un entorno en la nube, los equipos de TI deben mantener ocultos los secretos de sus aplicaciones. Aprenda cómo los usuarios de AWS pueden mantener la información confidencial fuera de su código con herramientas como Secrets Manager.

Los desarrolladores suelen separar los secretos del código fuente y la información de configuración cuando diseñan aplicaciones seguras. Esto es particularmente cierto para los secretos relacionados con las configuraciones (nombres de usuario, contraseñas, claves API u otras credenciales) que la aplicación necesita para acceder a recursos restringidos o confidenciales.

Los desarrolladores y administradores de AWS deben seguir estos principios para almacenar y administrar secretos:

  • Nunca defina secretos en el código fuente. Los secretos almacenados en el código fuente pueden hacer que la información sensible sea visible para el público o subirse a repositorios ampliamente disponibles. Si no sigue esta regla, corre el riesgo de infringir la seguridad.
  • Restrinja la presencia de secretos en los archivos de configuración locales tanto como sea posible.
  • Asegúrese de que las aplicaciones tengan acceso a los secretos correctos según el entorno de alojamiento, incluidos los entornos de desarrollo, preparación o producción.

Las aplicaciones solo deben definir una referencia a secretos específicos en el código. Luego, la aplicación puede cargar los secretos reales durante la implementación o el tiempo de ejecución, en lugar de acceder a ellos directamente.

Para hacer esto, identifique las áreas funcionales en la aplicación que necesitan acceder a recursos restringidos. Identifique cómo la aplicación accede a cualquier base de datos o API que requieren autenticación. Por ejemplo, ¿están codificados, tomados de archivos de configuración locales o variables de entorno?

Para los usuarios de AWS, hay dos formas principales de garantizar que las credenciales nunca aparezcan en el código fuente.

El rol de las credenciales de AWS y los roles de IAM en la administración de secretos

Si una aplicación necesita llamar a las API de AWS y requiere acceso a las credenciales de AWS, no es necesario configurar estas credenciales en los servidores de aplicaciones o componentes de código.

Para las aplicaciones que se ejecutan en instancias EC2, asigne un perfil de instancia EC2. Un perfil de instancia EC2 está asociado con un rol de AWS Identity and Access Management (IAM). Ese rol define y otorga permisos para que un servidor autorizado pueda llamar a las API de AWS.

Para las aplicaciones implementadas en Elastic Container Service (ECS), las tareas de ECS se pueden vincular a un rol de IAM para otorgar los permisos pertinentes. De esta manera, los contenedores no necesitan tener ninguna credencial de AWS configurada mediante archivos internos o código de aplicación.

Las funciones de Lambda usan un rol de ejecución de IAM de manera predeterminada, que es la forma estándar de otorgar permisos de AWS a una función.

Cómo almacenar y administrar secretos con AWS Secrets Manager

Para proteger los secretos en AWS, configúrelos en AWS Secrets Manager, luego inserte una referencia descriptiva en el código de la aplicación. Por ejemplo, la contraseña para una base de datos de producción se puede almacenar en Secrets Manager y llamarse my_db_password_production. Luego, la aplicación recupera la contraseña real con el nombre configurado en AWS Secrets Manager. La contraseña real es un secreto almacenado y encriptado por AWS, recuperado según sea necesario por la aplicación de manera segura.

A través de este enfoque, la aplicación solo conoce una referencia a un secreto y no el secreto en sí. Nadie que lea el código fuente de la aplicación descubrirá la contraseña para acceder a la base de datos de producción. Esta configuración en AWS también simplifica la rotación secreta, que debe realizarse regularmente como parte de las tareas de mantenimiento del sistema.

Las aplicaciones pueden recuperar el secreto correcto para un entorno específico al usarlo en el nombre secreto real. Por ejemplo, my_db_password_development para el entorno limitado de desarrollo o my_db_password_production para sistemas en vivo.

ECS puede integrarse con Secrets Manager de forma nativa. Al configurar una definición de tarea ECS, especifique una sección de secretos, que se refiere a un secreto utilizando los parámetros valueFrom y name. Con este enfoque, los contenedores implementados en ECS pueden referirse a un valor secreto como una variable de entorno, mientras que AWS almacena el secreto por separado.

El acceso a Secrets Manager está controlado por AWS IAM. Las capacidades de IAM aumentan la gestión de secretos, ya que permite a los propietarios de aplicaciones restringir qué usuarios y entidades pueden acceder a un secreto específico.

Si está ejecutando una aplicación de gran volumen, es importante tener en cuenta el gasto adicional de la gestión de secretos a través de AWS. Secrets Manager cuesta $ 5 por un millón de llamadas API. Puede convertirse rápidamente en un gasto considerable, dependiendo de la aplicación.

Investigue más sobre Protección de datos empresarial

Inicie la conversación

Envíenme notificaciones cuando otros miembros comenten sobre este artículo.

Por favor cree un Nombre de usuario para poder comentar.

Close