Usa el control de acceso a la IU de Airflow

Cloud Composer 1 | Cloud Composer 2

En esta página, se describen varios mecanismos de control de acceso para la IU de Airflow y la IU de DAG. Puedes usar estos mecanismos, además del control de acceso que proporciona IAM, para separar usuarios en la IU de Airflow y la IU de DAG del entorno.

Descripción general del control de acceso a la IU de Airflow en Cloud Composer

El acceso a la IU de Airflow y la IU de DAG y la visibilidad de los datos y las operaciones en esas IU se controla en dos niveles en Cloud Composer:

  1. El acceso a la IU de Airflow y a la IU del DAG en Cloud Composer está controlado por IAM.

    Si una cuenta no tiene una función que pueda ver los entornos de Cloud Composer en tu proyecto, la IU de Airflow y la IU del DAG no están disponibles.

    IAM no proporciona ningún control de permisos detallado adicional en la IU de Airflow o de DAG.

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

    El control de acceso de Apache Airflow es una característica de Airflow, con su propio modelo de usuarios, funciones y permisos, que es diferente de IAM.

El control de acceso de Apache Airflow usa permisos basados en recursos. Todos los usuarios de Airflow con una función específica de Airflow obtienen los permisos de esta función. Por ejemplo, los usuarios de Airflow que tienen un rol con el permiso can delete on Connections pueden borrar conexiones en la página Conexiones en la IU de Airflow.

También puedes asignar permisos a nivel del DAG para DAG individuales. Por ejemplo, para que solo los usuarios con una función específica de Airflow puedan ver un DAG determinado en la IU de Airflow En Cloud Composer, puedes asignar de forma automática permisos a nivel del DAG, según la subcarpeta en la que se encuentra el archivo DAG en el bucket del entorno.

Antes de comenzar

  • La IU de Airflow con control de acceso está disponible para las versiones de Cloud Composer 1.13.4 o posteriores y Airflow 1.10.10 y versiones posteriores. El entorno también debe ejecutar Python 3.

  • El registro de funciones por carpeta está disponible en Cloud Composer 1.18.12 y versiones posteriores en Airflow 2, y en Cloud Composer 1.13.4 y versiones posteriores en Airflow 1.

Habilita la IU de Airflow con el control de acceso

Airflow 2

La IU de Airflow con control de acceso siempre está habilitada en Airflow 2.

Airflow 1

Para habilitar la IU de Airflow con el control de acceso, anula la siguiente opción de configuración de Airflow:

Sección Clave Valor
webserver rbac True

Puedes hacerlo para un entorno existente o cuando creas un entorno nuevo.

Con esta configuración, tu entorno ejecuta la IU de Airflow con control de acceso en lugar de la IU clásica de Airflow.

Administra los roles de Airflow y la configuración del control de acceso

Los usuarios con la función de administrador (o una equivalente) pueden ver y modificar la configuración del control de acceso en la IU de Airflow.

En la IU de Airflow, puedes establecer la configuración del 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 las funciones predeterminadas, consulta la documentación de Control de acceso de la IU de Airflow.

Airflow 1 trata la función del usuario como una plantilla para todos los roles personalizados. Airflow copia de forma continua los permisos de la función del usuario a todas las funciones personalizadas, excepto los permisos de all_dags.

Airflow mantiene su propia lista de usuarios. Los usuarios con la función de administrador (o una equivalente) pueden ver la lista de usuarios que abrieron la IU de Airflow de un entorno y se registraron en Airflow. En esta lista, también se incluyen los usuarios que un administrador registró previamente de forma manual, como se describe en la siguiente sección.

Registra usuarios en la IU de Airflow

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

En el registro, a los usuarios se les otorga la función especificada en la opción de configuración [webserver]rbac_user_registration_role de Airflow. Puedes controlar el rol de los usuarios recién registrados. Para ello, anula esta opción de configuración de Airflow con un valor diferente.

Si no se especifica, la función de registro predeterminada es Op en entornos con Airflow 2.

En entornos con Airflow 1.10.*, la función de registro predeterminada es Admin.

Se recomiendan los siguientes pasos para crear una configuración de rol básico para la IU de Airflow:

Airflow 2

  1. Los administradores del entorno abren la IU de Airflow para el entorno recién creado.

  2. Otorga a las cuentas de administrador la función Admin. La función predeterminada para las cuentas nuevas en entornos con Airflow 2 es Op. Para asignar la función Admin, ejecuta el siguiente comando de la CLI de Airflow con gcloud:

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

    Reemplaza lo siguiente:

    • ENVIRONMENT_NAME por el nombre del entorno.
    • LOCATION por la región en la que se encuentra el entorno
    • USER_EMAIL por el correo electrónico de una cuenta de usuario.
  3. Los administradores ahora pueden configurar el control de acceso para usuarios nuevos, incluida la asignación de la función Admin a otros usuarios.

Airflow 1

  1. Los administradores del entorno abren la IU de Airflow para el entorno recién creado, en el que se registran automáticamente con la función Admin.

  2. Anula la siguiente opción de configuración de Airflow para la función requerida para los usuarios nuevos. Por ejemplo, a User.

    Sección Clave Valor
    webserver rbac_user_registration_role User o algún otro rol que no sea de administrador
  3. Los administradores ahora pueden configurar el control de acceso a la IU de Airflow para los usuarios nuevos, lo que incluye otorgar la función Admin a otros usuarios.

Registra usuarios con anticipación

Los usuarios se registran automáticamente con los IDs numéricos de las cuentas de usuario de Google (no con direcciones de correo electrónico) como nombres de usuario. También puedes registrar de forma manual un usuario y asignarle una función. Para ello, agrega un registro de usuario con el campo de nombre de usuario configurado en la dirección de correo electrónico principal del usuario. Cuando un usuario con una dirección de correo electrónico que coincide con un registro de usuario registrado previamente accede a la IU de Airflow por primera vez, su nombre de usuario se reemplaza por el ID del usuario actual (en el momento del primer acceso) identificado por su dirección de correo electrónico. La relación entre las identidades de Google (direcciones de correo electrónico) y las cuentas de usuario (ID de usuario) no es fija. Los Grupos de Google no se pueden prerregistrar.

Para realizar el registro previo de los usuarios, puedes usar la IU de Airflow o ejecutar un comando de la CLI de Airflow a través de Google Cloud CLI.

Para realizar el registro previo de un usuario con un rol personalizado a través de Google Cloud CLI, 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

Reemplaza lo siguiente:

  • ENVIRONMENT_NAME: Es el nombre del entorno.
  • LOCATION: Es 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 electrónico del usuario
  • FIRST_NAME y LAST_NAME: Nombre y apellido 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

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

También puedes cambiar la función del usuario a Pública, lo que mantiene el registro del usuario, pero quita todos los permisos de la IU de Airflow.

Configura los permisos a nivel del DAG automáticamente

La función de registro de funciones por carpeta crea automáticamente una función personalizada de Airflow para cada subcarpeta directamente dentro de la carpeta /dags y otorga a esta función acceso a nivel de DAG a todos los DAG que tengan su archivo fuente almacenado en la subcarpeta respectiva. Esto optimiza la administración de las funciones personalizadas de Airflow y su acceso a los DAG.

Cómo funciona el registro de roles por carpeta

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

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

En Airflow 1, la posibilidad de usar estos mecanismos se inhabilita cuando se habilita el registro de funciones por carpeta. Toda la administración de permisos a nivel del DAG ocurre solo a través del registro de funciones por carpeta.

En Airflow 2:

  • Puedes otorgar acceso de DAG a las funciones a través de la propiedad access_control definida en el código fuente del DAG.
  • El otorgamiento manual de permisos del DAG (a través de la IU de Airflow o gcloud CLI) puede causar conflictos. Por ejemplo, si otorgas de forma manual permisos a nivel del DAG a un rol por carpeta, estos permisos se pueden quitar o reemplazar cuando el procesador de DAG sincronice un DAG. Recomendamos no otorgar permisos de DAG de forma manual.
  • Las funciones tienen una unión de permisos de acceso al DAG registrados a través del registro de funciones por carpeta y se definen en la propiedad access_control del DAG.

Los DAG ubicados directamente en la carpeta /dags de nivel superior no se asignan de forma automática a ninguna función por carpeta. No se puede acceder a ellas con ningún rol por carpeta. Otras funciones, como Administrador, Op, Usuario o cualquier función personalizada que tenga permisos otorgados, pueden acceder a ellos a través de la IU de Airflow y la IU del DAG.

Si subes DAG a subcarpetas con nombres que coinciden con las funciones integradas de Airflow y las funciones creadas por Cloud Composer, los permisos a los DAG en estas subcarpetas seguirán asignados a estas funciones. Por ejemplo, subir un DAG a la carpeta /dags/Admin otorga permisos a este DAG a la función de administrador. Los roles integrados de Airflow incluyen administrador, operaciones, usuario, visualizador y público. Cloud Composer crea NoDags y UserNoDags después de que se habilita la función de registro de funciones por carpeta.

Airflow realiza el registro de funciones por carpeta cuando procesa DAG en el programador de Airflow. Si hay más de cien DAG en tu entorno, es posible que veas un aumento en el tiempo de análisis del DAG. Si este es el caso, te recomendamos que aumentes el parámetro [scheduler]max_threads para un entorno de Airflow 1 o [scheduler]parsing_processes para un entorno de Airflow 2.

Asigna de forma automática DAG a las funciones por carpeta

Para asignar de forma automática los DAG a las funciones 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 usuario nuevo por uno sin acceso a ningún DAG. De esta manera, los usuarios nuevos no tienen acceso a ningún DAG hasta que un administrador asigne una función que tenga permisos para DAG específicos a sus cuentas.

    UserNoDags y NoDags son funciones que crea Cloud Composer solo cuando la función de registro de funciones por carpeta está habilitada. Son equivalentes a la función de usuario, pero sin acceso a ningún DAG. La función UserNoDags se crea en Airflow 2, y la función NoDags se crea en Airflow 1.

    En Airflow 2, anula la siguiente opción de configuración de Airflow:

    Sección Clave Valor
    webserver rbac_user_registration_role UserNoDags

    En Airflow 1, anula la siguiente opción de configuración de Airflow:

    Sección Clave Valor
    webserver rbac_user_registration_role NoDags
  3. Asegúrate de que los usuarios estén registrados en Airflow.

  4. Asigna roles a los usuarios con uno de los siguientes enfoques:

    • Permite que Airflow cree funciones automáticamente basadas en las subcarpetas de DAG y, luego, asigne usuarios a estas funciones.
    • Crea con anterioridad funciones vacías para las subcarpetas de DAG, con nombres de funciones que coincidan con el nombre de una subcarpeta y, luego, asigna usuarios a estas funciones. Por ejemplo, para la carpeta /dags/CustomFolder, crea una función llamada CustomFolder.
  5. Subir los DAG a las subcarpetas con nombres que coincidan con los roles asignados a los usuarios Estas subcarpetas deben estar ubicadas dentro de la carpeta /dags en el bucket del entorno. Airflow agrega permisos a los DAG en esa subcarpeta para que solo los usuarios con la función correspondiente puedan acceder a ellos a través de la IU de Airflow y la IU del DAG.

Configura los permisos a nivel del DAG de forma manual

Puedes configurar los permisos a nivel de DAG en las funciones personalizadas a fin de especificar qué DAG son visibles para grupos de usuarios específicos.

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

  1. El administrador crea funciones vacías para agrupar los DAG.
  2. El administrador asigna a los usuarios los roles adecuados.
  3. El administrador o los usuarios asignan los DAG a los roles.
  4. En la IU de Airflow, los usuarios solo pueden ver los DAG asignados a su grupo.

Los DAG se pueden asignar a funciones a través de sus propiedades o desde la IU de Airflow.

Asigna DAG a los roles de la IU de Airflow

Un administrador puede asignar los permisos a nivel del DAG necesarios a las funciones correspondientes en la IU de Airflow.

Esta operación no es compatible con la IU del DAG.

Asigna DAG a funciones en propiedades de DAG

Puedes establecer el parámetro access_control del DAG en un DAG y especificar las funciones de agrupación de DAG a las que está asignado el DAG.

En las versiones de Airflow 2 anteriores a la 2.1.0, el administrador, el desarrollador de DAG o un proceso automatizado deben ejecutar el comando de Airflow sync-perm para aplicar la nueva configuración de control de acceso.

En Airflow 2.1.0 y versiones posteriores, ya no es necesario ejecutar este comando, porque el programador aplica permisos a nivel del DAG cuando analiza un DAG.

Airflow 2

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

Airflow 1

dag = DAG(
  access_control={
    'DagGroup': {'can_dag_edit', 'can_dag_read'},
  },
  ...
  )

Asignar registros de auditoría en la IU de Airflow a los usuarios

Los registros de auditoría en la IU de Airflow se asignan a los IDs numéricos de las cuentas de usuario de Google. Por ejemplo, si un usuario pausa un DAG, se agrega una entrada a los registros.

Airflow 2

En Airflow 2, puedes ver los registros de auditoría en la página Explorar > Registros de auditoría en la IU de Airflow.

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

Airflow 1

En Airflow 1, puedes ver los registros de auditoría en la página Explorar > Registros.

Una entrada en la página Registros en Airflow 1
Figure 1. Una entrada en la página Registros en Airflow 1

Una entrada típica muestra un ID numérico en el campo Propietario: accounts.google.com:NUMERIC_ID. Puedes asignar IDs numéricos a los correos electrónicos de los usuarios en la página Seguridad > Enumerar usuarios. Esta página está disponible para los usuarios con la función 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.

¿Qué sigue?