Usar el control de acceso de la interfaz de usuario de Airflow

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

En esta página se describen los diferentes mecanismos de control de acceso de la interfaz de usuario de Airflow y de la interfaz de usuario de DAGs. Puedes usar estos mecanismos, además del control de acceso que proporciona IAM, para separar a los usuarios en la interfaz de usuario de Airflow y en la interfaz de usuario de DAG de tu entorno.

Información general sobre el control de acceso a la interfaz de usuario de Airflow en Cloud Composer

El acceso a la interfaz de usuario de Airflow y a la interfaz de usuario de DAG, así como la visibilidad de los datos y las operaciones en esas interfaces, se controlan en dos niveles en Cloud Composer:

  1. El acceso a las interfaces de usuario de Airflow y DAG en Cloud Composer se controla mediante IAM.

    Si una cuenta no tiene un rol que pueda ver entornos de Cloud Composer en tu proyecto, la interfaz de usuario de Airflow y la interfaz de usuario de DAG no estarán disponibles.

    Gestión de identidades y accesos no proporciona ningún control pormenorizado de los permisos adicional en la interfaz de usuario de Airflow o en la interfaz de usuario de DAG.

  2. El modelo de control de acceso de Apache Airflow permite reducir la visibilidad en la interfaz de usuario de Airflow y en la interfaz de usuario de DAG en función del rol del usuario.

    El control de acceso de Apache Airflow es una función de Airflow que tiene su propio modelo de usuarios, roles y permisos, que es diferente de la gestión de identidades y accesos.

El control de acceso de Apache Airflow usa permisos basados en recursos. Todos los usuarios de Airflow que tengan un rol específico de Airflow obtienen los permisos de ese rol. Por ejemplo, los usuarios de Airflow que tengan un rol con el permiso can delete on Connections pueden eliminar conexiones en la página Conexiones de la interfaz de usuario de Airflow.

También puedes asignar permisos a nivel de DAG a DAGs concretos. Por ejemplo, para que solo los usuarios con un rol de Airflow específico puedan ver un determinado DAG en la interfaz de usuario de Airflow. En Cloud Composer, puedes asignar permisos a nivel de DAG automáticamente en función de la subcarpeta en la que se encuentre el archivo DAG en el segmento del entorno.

Si quieres configurar el acceso para identidades externas mediante la federación de identidades de trabajo, primero debes conceder acceso a tu entorno en IAM, tal como se describe en la sección Conceder roles de IAM a identidades externas. Después, podrás usar el control de acceso de la interfaz de usuario de Airflow como de costumbre. Los usuarios de Airflow con identidades externas usan su identificador principal en lugar de la dirección de correo y tienen valores diferentes en otros campos de registro de usuario que las cuentas de Google.

Gestionar roles y ajustes de control de acceso de Airflow

Los usuarios con el rol de administrador (o equivalente) pueden ver y modificar los ajustes de control de acceso en la interfaz de usuario de Airflow.

En la interfaz de usuario de Airflow, puedes configurar los ajustes de control de acceso desde el menú Seguridad. Para obtener más información sobre el modelo de control de acceso de Airflow, los permisos disponibles y los roles predeterminados, consulta la documentación sobre el control de acceso de la interfaz de usuario de Airflow.

Airflow mantiene su propia lista de usuarios. Los usuarios con el rol de administrador (o equivalente) pueden ver la lista de usuarios que han abierto la interfaz de usuario de Airflow de un entorno y que se han registrado en Airflow. Esta lista también incluye a los usuarios que un administrador haya preregistrado manualmente, tal como se describe en la siguiente sección.

Registrar usuarios en la interfaz de usuario de Airflow

Los nuevos usuarios se registran automáticamente cuando abren la interfaz de usuario de Airflow de un entorno de Cloud Composer por primera vez.

Durante el registro, se asigna a los usuarios el rol especificado en la opción de configuración [webserver]rbac_user_registration_role de Airflow. Puedes controlar el rol de los usuarios recién registrados sustituyendo esta opción de configuración de Airflow por otro valor.

Si no se especifica, el rol de registro predeterminado es Op en entornos con Airflow 2.

Te recomendamos que sigas estos pasos para crear una configuración de rol básica para la interfaz de usuario de Airflow:

  1. Los administradores del entorno abren la interfaz de usuario de Airflow del entorno que acaban de crear.

  2. Asigna el rol Admin a las cuentas de administrador. El rol predeterminado de las cuentas nuevas en entornos con Airflow 2 es Op. Para asignar el rol Admin, ejecuta el siguiente comando de la CLI de Airflow con la CLI de gcloud:

      gcloud composer environments run ENVIRONMENT_NAME \
        --location LOCATION \
        users add-role -- -e USER_EMAIL -r Admin
    

    Sustituye:

    • ENVIRONMENT_NAME con el nombre del entorno.
    • LOCATION con la región en la que se encuentra el entorno.
    • USER_EMAIL con el correo de una cuenta de usuario.
  3. Ahora los administradores pueden configurar el control de acceso para los nuevos usuarios, lo que incluye conceder el rol Admin a otros usuarios.

Usuarios prerregistrados

Los usuarios se registran automáticamente con IDs numéricos de cuentas de usuario de Google (no con direcciones de correo electrónico) como nombres de usuario. También puedes preregistrar manualmente a un usuario y asignarle un rol añadiendo un registro de usuario con el campo de nombre de usuario configurado como la dirección de correo principal del usuario. Cuando un usuario con una dirección de correo que coincide con un registro de usuario pre-registrado inicia sesión en la interfaz de usuario de Airflow por primera vez, su nombre de usuario se sustituye por el ID de usuario identificado en ese momento por su dirección de correo. La relación entre las identidades de Google (direcciones de correo electrónico) y las cuentas de usuario (IDs de usuario) no es fija. Los grupos de Google no se pueden registrar previamente.

Para pre-registrar usuarios, puedes usar la interfaz de usuario de Airflow o ejecutar un comando de la CLI de Airflow a través de Google Cloud CLI.

Para pre-registrar a un usuario con un rol personalizado mediante la CLI de Google Cloud, ejecuta el siguiente comando de la CLI de Airflow:

gcloud composer environments run ENVIRONMENT_NAME \
  --location LOCATION \
  users create -- \
  -r ROLE \
  -e USER_EMAIL \
  -u USER_EMAIL \
  -f FIRST_NAME \
  -l LAST_NAME \
  --use-random-password # The password value is required, but is not used

Haz los cambios siguientes:

  • ENVIRONMENT_NAME: el nombre del entorno
  • LOCATION: la región en la que se encuentra el entorno
  • ROLE: un rol de Airflow para el usuario, por ejemplo, Op
  • USER_EMAIL: la dirección de correo del usuario
  • FIRST_NAME y LAST_NAME: nombre y apellidos del usuario

Ejemplo:

gcloud composer environments run example-environment \
  --location us-central1 \
  users create -- \
  -r Op \
  -e "example-user@example.com" \
  -u "example-user@example.com" \
  -f "Name" \
  -l "Surname" \
  --use-random-password

Quitar usuarios

Si eliminas a un usuario de Airflow, no se revoca su acceso, ya que se registrará automáticamente de nuevo la próxima vez que acceda a la interfaz de usuario de Airflow. Para revocar el acceso a toda la interfaz de usuario de Airflow, quita el permiso composer.environments.get de su política de permiso de tu proyecto.

También puedes cambiar el rol del usuario a Público, lo que mantiene el registro del usuario, pero elimina todos los permisos de la interfaz de usuario de Airflow.

Configurar permisos a nivel de DAG automáticamente

La función de registro de roles por carpeta crea automáticamente un rol de Airflow personalizado para cada subcarpeta que se encuentre directamente en la carpeta /dags y le concede acceso a nivel de DAG a todos los DAGs cuyo archivo de origen esté almacenado en esa subcarpeta. De esta forma, se simplifica la gestión de los roles de Airflow personalizados y su acceso a los DAGs.

Cómo funciona el registro de roles por carpeta

El registro de roles por carpeta es una forma automatizada de configurar roles y sus permisos a nivel de DAG. Por lo tanto, puede provocar conflictos con otros mecanismos de Airflow que conceden permisos a nivel de DAG:

Para evitar estos conflictos, al habilitar el registro de roles por carpeta también se cambia el comportamiento de estos mecanismos.

En Airflow 2:

  • Puede conceder acceso a DAGs a los roles a través de la propiedad access_control definida en el código fuente de DAG.
  • Si se conceden permisos de DAG manualmente (a través de la interfaz de usuario de Airflow o de la interfaz de línea de comandos de gcloud), pueden producirse conflictos. Por ejemplo, si asignas manualmente permisos a nivel de DAG a un rol por carpeta, estos permisos se pueden quitar o sobrescribir cuando el procesador de DAG sincronice un DAG. No recomendamos conceder permisos de DAG manualmente.
  • Los roles tienen una unión de permisos de acceso a DAGs registrados a través de Per-folder Roles Registration y definidos en la propiedad access_control del DAG.

Los DAGs que se encuentran directamente en la carpeta /dags de nivel superior no se asignan automáticamente a ningún rol por carpeta. No se puede acceder a ellas con ningún rol por carpeta. Otros roles, como Administrador, Operador, Usuario o cualquier rol personalizado al que se le hayan concedido permisos, pueden acceder a ellos a través de las interfaces de usuario de Airflow y DAG.

Si subes DAGs a subcarpetas con nombres que coincidan con los roles integrados de Airflow y los roles creados por Cloud Composer, los permisos de los DAGs de estas subcarpetas se seguirán asignando a estos roles. Por ejemplo, si subes un DAG a la carpeta /dags/Admin, se concederán permisos a este DAG al rol de administrador. Los roles de Airflow integrados son Administrador, Operador, Usuario, Lector y Público. Cloud Composer crea NoDags y UserNoDags después de habilitar la función de registro de roles por carpeta.

Airflow registra las funciones por carpeta cuando procesa los DAGs en el programador de Airflow. Si hay más de cien DAGs en tu entorno, es posible que observes un aumento en el tiempo de análisis de los DAGs. Si es así, te recomendamos que uses más memoria y CPU para los programadores. También puedes aumentar el valor de la opción de configuración [scheduler]parsing_processes Airflow.

Asignar automáticamente DAGs a roles por carpeta

Para asignar automáticamente DAGs a roles por carpeta, sigue estos pasos:

  1. Anula la siguiente opción de configuración de Airflow:

    Sección Clave Valor
    webserver rbac_autoregister_per_folder_roles True
  2. Cambia el rol de registro de nuevos usuarios a un rol que no tenga acceso a ningún DAG. De esta forma, los nuevos usuarios no tienen acceso a ningún DAG hasta que un administrador les asigna un rol que tenga permisos para DAGs específicos a sus cuentas.

    UserNoDags es un rol que crea Cloud Composer solo cuando se habilita la función de registro de roles por carpeta. Es equivalente al rol Usuario, pero sin acceso a ningún DAG.

    Anula la siguiente opción de configuración de Airflow:

    Sección Clave Valor
    webserver rbac_user_registration_role UserNoDags

  3. Asegúrate de que los usuarios estén registrados en Airflow.

  4. Asigna roles a los usuarios de una de las siguientes formas:

    • Permite que Airflow cree automáticamente roles basados en las subcarpetas de los DAGs y, a continuación, asigna usuarios a esos roles.
    • Crea roles vacíos para las subcarpetas de los DAGs, con nombres de rol que coincidan con el nombre de una subcarpeta, y luego asigna usuarios a esos roles. Por ejemplo, para la carpeta /dags/CustomFolder, crea un rol llamado CustomFolder.
  5. Sube los DAGs a subcarpetas con nombres que coincidan con los roles asignados a los usuarios. Estas subcarpetas deben estar en la carpeta /dags del contenedor del entorno. Airflow añade permisos a los DAGs de esa subcarpeta para que solo los usuarios con el rol correspondiente puedan acceder a ellos a través de las interfaces de usuario de Airflow y de los DAGs.

Configurar manualmente los permisos a nivel de DAG

Puedes configurar permisos a nivel de DAG para roles personalizados y especificar qué DAGs son visibles para grupos de usuarios concretos.

Para configurar los permisos a nivel de DAG en la interfaz de usuario de Airflow, sigue estos pasos:

  1. El administrador crea roles vacíos para agrupar los DAGs.
  2. El administrador asigna a los usuarios los roles adecuados.
  3. El administrador o los usuarios asignan DAGs a los roles.
  4. En la interfaz de usuario de Airflow, los usuarios solo pueden ver los DAGs asignados a su grupo.

Los DAGs se pueden asignar a roles a través de las propiedades de los DAGs o desde la interfaz de usuario de Airflow.

Asignar DAGs a roles en la interfaz de usuario de Airflow

Un administrador puede asignar los permisos necesarios a nivel de DAG a los roles correspondientes en la interfaz de usuario de Airflow.

Esta operación no se admite en la interfaz de usuario de DAG.

Asignar DAGs a roles en las propiedades de DAG

Puedes definir el access_controlparámetro DAG en un DAG, especificando los roles de agrupación de DAG a los que se asigna el DAG.

El programador aplica permisos a nivel de DAG cuando analiza un DAG.

dag = DAG(
  access_control={
    'DagGroup': {'can_edit', 'can_read'},
  },
  ...
  )

Asignar registros de auditoría de la interfaz de usuario de Airflow a usuarios

Los registros de auditoría de la interfaz de usuario de Airflow se asocian a IDs numéricos de cuentas de usuario de Google. Por ejemplo, si un usuario pausa un DAG, se añade una entrada a los registros.

Puedes ver los registros de auditoría en la página Examinar > Registros de auditoría en la interfaz de usuario de Airflow.

Una entrada en la página Registros de auditoría de Airflow 2
Imagen 1. Una entrada en la página Registros de auditoría de Airflow 2

Una entrada típica muestra un ID numérico en el campo Propietario: accounts.google.com:NUMERIC_ID. Puede asignar IDs numéricos a correos de usuarios en la página Seguridad > Lista de usuarios. Esta página está disponible para los usuarios con el rol Admin.

Ten en cuenta que la relación entre las identidades de Google (direcciones de correo electrónico) y las cuentas de usuario (IDs de usuario) no es fija.

Siguientes pasos