Prácticas recomendadas de seguridad para Amazon MWAA
Amazon MWAA proporciona una serie de características de seguridad que debe tener en cuenta a la hora de desarrollar e implementar sus propias políticas de seguridad. Las siguientes prácticas recomendadas son directrices generales y no constituyen una solución de seguridad completa. Puesto que es posible que estas prácticas recomendadas no sean adecuadas o suficientes para el entorno, considérelas como consideraciones útiles en lugar de como normas.
-
Utilice las políticas de permisos que sean menos permisivas. Otorgue permisos únicamente a los recursos o a las acciones que los usuarios necesiten para llevar a cabo las tareas.
-
Utilice AWS CloudTrail para monitorizar la actividad de los usuarios en su cuenta.
-
Asegúrese de que la política de buckets de Amazon S3 y las listas de control de acceso (ACL) a objetos concedan permisos a los usuarios del entorno de Amazon MWAA asociado para que puedan colocar objetos en el bucket. Esto garantizará que los usuarios con permisos para añadir flujos de trabajo al bucket también dispongan de permisos para ejecutar los flujos de trabajo en Airflow.
-
Utilice los buckets de Amazon S3 asociados a los entornos de Amazon MWAA. Su bucket de Amazon S3 puede tener cualquier nombre. No almacene otros objetos en el bucket ni lo use con otro servicio.
Prácticas recomendadas de seguridad en Apache Airflow
Apache Airflow no es multitenencia. Si bien Amazon MWAA implementa algunas medidas de control de acceso
Recomendamos seguir los siguientes consejos al trabajar con Apache Airflow en Amazon MWAA a fin de garantizar la seguridad de la base de metadatos y los DAG de su entorno.
-
Utilice entornos separados para equipos distintos que tengan acceso a la escritura de los DAG, o bien tengan la capacidad de añadir archivos a su carpeta
/dagsde Amazon S3, suponiendo que los usuarios que puedan escribir en el entorno también podrían acceder a cualquier a la que se pueda acceder mediante el rol de ejecución de Amazon MWAA o las conexiones de Apache Airflow. -
No proporcione acceso directo a las carpetas de los DAG de Amazon S3. En su lugar, utilice las herramientas de integración continua (CI) y entrega continua (CD) para escribir los DAG en Amazon S3, añadiendo un paso de validación que garantice que el código de los DAG cumple con las directrices de seguridad de su equipo.
-
Evite que los usuarios puedan acceder al bucket de Amazon S3. En su lugar, utilice un generador de DAG que genere DAG basados en un archivo YAML, JSON u otro archivo de definición que esté almacenado en una ubicación diferente a la de su bucket de Amazon S3 de Amazon MWAA en el que almacena los DAG.
-
Almacene la información secreta en Secrets Manager. Si bien esto no impedirá que los usuarios que pueden escribir DAG lean esa información, sí evitará que puedan modificar la información secreta que utiliza su entorno.
Detección de cambios en los privilegios de los usuarios de Apache Airflow
Puede utilizar la información de los registros de CloudWatch para detectar si algún DAG cambia los privilegios de los usuarios de Apache Airflow. Para ello, puede utilizar una regla programada de EventBridge, una función de Lambda y la información de registros de CloudWatch para que se envíe una notificación a las métricas de CloudWatch cada vez que uno de sus DAG cambie los privilegios de los usuarios de Apache Airflow.
Requisitos previos
Para completar los pasos que se detallan a continuación, necesita lo siguiente:
-
Un entorno de Amazon MWAA que tenga habilitados todos los tipos de registros de Apache Airflow en el nivel de registro
INFO. Para obtener más información, consulta Visualización de registros en Amazon CloudWatch.
Configuración de las notificaciones acerca de cualquier cambio que se produzca en los privilegios de los usuarios de Apache Airflow
-
Cree una función de Lambda que ejecute la siguiente cadena de consulta de la información de los registros de CloudWatch en los cinco grupos de registros del entorno Amazon MWAA (
DAGProcessing,Scheduler,Task,WebServeryWorker).fields @log, @timestamp, @message | filter @message like "add-role" | stats count() by @log -
Cree una regla de EventBridge que se ejecute según una programación, con la función de Lambda que creó en el paso anterior como objetivo de la regla. Configure su programación mediante una expresión de frecuencia o una expresión cron para que se ejecute a intervalos regulares.