Usa el control de acceso de la IU de Airflow

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

En esta página, se describen los diferentes 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 el IU de Airflow y IU de DAG de tu entorno.

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

Acceso a la IU de Airflow y a 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 las IU de Airflow y de DAG en Cloud Composer es controlados por IAM.

    Si una cuenta no tiene un rol que pueda visualizar entornos de Cloud Composer en tus la IU de Airflow y la IU del DAG no estarán disponibles.

    IAM no proporciona información detallada adicional el control de permisos en la IU de Airflow o la IU del DAG.

  2. El modelo de control de acceso de Apache Airflow permite hacer lo siguiente: Reducir la visibilidad en la IU de Airflow y en la IU del DAG según el rol del usuario

    El control de acceso de Apache Airflow es una función de Airflow, con su propio modelo de usuarios, roles y permisos, que es diferente del IAM.

El control de acceso de Apache Airflow usa permisos basados en recursos. Todos los usuarios de Airflow con un rol específico de Airflow obtienen los permisos de este rol. 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 de la IU de Airflow.

También puedes asignar permisos a nivel del DAG para DAG individuales. Para ejemplo, para que solo los usuarios con un rol específico de Airflow puedan ver un determinado DAG en la IU de Airflow. En Cloud Composer, puedes asignar permisos a nivel del DAG automáticamente, 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 Cloud Composer 1.13.4 o versiones posteriores Airflow 1.10.10 y versiones posteriores. El entorno también debe ejecutar Python 3.

  • El registro de roles 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 el control de acceso de la IU de Airflow

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 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 de control de acceso

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

En la IU de Airflow, puedes configurar el control de acceso desde el menú Security. 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 de control de acceso de la IU de Airflow.

Airflow 1 trata el rol de usuario como una plantilla para todos los roles personalizados. Airflow copia continuamente los permisos del rol del usuario en todos los roles personalizados, excepto permisos para all_dags.

Airflow mantiene su propia lista de usuarios. Los usuarios con el rol de administrador (o equivalente) pueden ver la lista de usuarios que abrieron la IU de Airflow de un entorno y se registraron en Airflow. Esta lista también incluye a 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.

Durante el registro, se otorga a los usuarios el rol especificado en el [webserver]rbac_user_registration_role Opción de configuración de Airflow. Puedes controlar el rol de los usuarios recién registrados anulando este Opción de configuración de Airflow con un valor diferente.

Si no se especifica, el rol de registro predeterminado 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 roles básica 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 el rol Admin, ejecuta el siguiente comando: Comando de la CLI de Airflow con Gcloud CLI:

      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 la IU entorno, donde se registran automáticamente con el archivo Admin en el área de la seguridad en la nube.

  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 de la IU de Airflow para usuarios nuevos, incluida la asignación del rol Admin a otros usuarios.

Cómo registrar usuarios previamente

Los usuarios se registran automáticamente con los IDs numéricos de las cuentas de usuario de Google (no direcciones de correo electrónico) como nombres de usuario. También puedes realizar el registro previo de un usuario de forma manual y asignarles un rol agregando un registro de usuario con el campo de nombre de usuario configurado a la dirección de correo electrónico principal del usuario. Cuando un usuario con una dirección de correo electrónico hacer coincidir el registro de un usuario con registro previo en la IU de Airflow por primera vez su nombre de usuario se reemplaza por el ID de usuario actual (en ese momento, del primer acceso) identificados 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 (IDs de usuario) no es fija. Los Grupos de Google no se pueden registrar previamente.

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, sigue estos pasos: 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: Es 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 el acceso para ese usuario, ya que se vuelve a registrar de forma automática 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 su política de permisos para tu proyecto.

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

Configura permisos a nivel del DAG automáticamente

La función de registro de roles por carpeta crea automáticamente un rol de Airflow personalizado para cada subcarpeta directamente dentro de la carpeta /dags y le otorga a este rol acceso a nivel de DAG a todos los DAG que tienen su archivo fuente almacenado en esa subcarpeta respectiva. Esta Optimiza la administración de los roles personalizados de Airflow y su acceso a los DAG.

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 del DAG. Por lo tanto, puede causar conflictos con otros mecanismos de Airflow que otorgan permisos a nivel del DAG:

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

En Airflow 1, la posibilidad de utilizar estos mecanismos está inhabilitada cuando El registro de roles por carpeta está habilitado. Todos los permisos a nivel del DAG la administración solo se realiza a través del Registro de roles por carpeta.

En Airflow 2:

  • Puedes otorgar acceso de DAG a roles a través de la propiedad access_control definida en el código fuente de DAG.
  • Otorga permisos de DAG de forma manual (a través de la IU de Airflow o gcloud CLI) pueden causar conflictos. Por ejemplo, si otorgar permisos a nivel del DAG de forma manual a un rol por carpeta, los permisos se pueden quitar o reemplazar cuando el encargado que sincroniza un DAG. Te recomendamos que no otorgues permisos de DAG de forma manual.
  • Los roles tienen una unión de permisos de acceso de DAG registrados a través del registro de roles por carpeta y se definen en la propiedad access_control del DAG.

Los DAG 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 ellos con ningún rol por carpeta. Otra opción roles como Administrador, Operaciones, Usuario o cualquier rol personalizado al que se le otorguen permisos y acceder a ellos mediante la IU de Airflow y la IU del DAG.

Si subes DAG a subcarpetas con nombres que coinciden con los roles integrados de Airflow y roles creados por Cloud Composer, luego los permisos estas subcarpetas siguen asignadas a estos roles. Por ejemplo, subir un DAG a la carpeta /dags/Admin otorga permisos a este DAG al rol de administrador. Los roles integrados de Airflow incluyen administrador, operador, usuario, visualizador y público. Cloud Composer crea NoDags y UserNoDags después de la Se habilitó la función Registro de roles.

Airflow realiza el registro de roles por carpeta cuando procesa DAG en el programador de Airflow. Si hay más de cien DAG en tu ambiente, es posible que veas un aumento en el tiempo de análisis de 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 Airflow 2.

Cómo asignar DAG automáticamente a roles por carpeta

Para asignar automáticamente DAG a 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 a uno sin acceso a ningún DAG. De esta manera, los usuarios nuevos no tendrán acceso a ningún DAG hasta que asigna a sus cuentas un rol que tiene permisos para DAG específicos.

    UserNoDags y NoDags son roles que crea Cloud Composer solo cuando se habilita la función de registro de roles por carpeta. Son un equivalente al rol de usuario, pero sin acceso a ningún DAG. El rol de UserNoDags se crea en Airflow 2 y el rol de NoDags se crea en Airflow 1.

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

    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. Usa uno de los siguientes enfoques para asignar roles a los usuarios:

    • Permitir que Airflow cree automáticamente roles según las subcarpetas de DAG y, luego, asignar usuarios a esos roles.
    • Crea roles vacíos para las subcarpetas de DAGs, con nombres de roles que coincidan con el nombre de una subcarpeta y, luego, asigna usuarios a estos roles. Por ejemplo: Para la carpeta /dags/CustomFolder, crea un rol llamado CustomFolder
  5. Sube DAG a subcarpetas con nombres que coincidan con los roles asignados a los usuarios. Estas subcarpetas deben estar ubicadas en la carpeta /dags en el en el bucket de tu entorno. Airflow agrega permisos a los DAG en una subcarpeta de este tipo, de modo que solo los usuarios con el rol correspondiente puedan acceder a ellos a través de la IU de Airflow y la IU de DAG.

Configura permisos a nivel del DAG de forma manual

Puedes configurar los permisos a nivel del DAG para los roles personalizados para 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 roles vacíos para agrupar los DAG.
  2. El administrador asigna usuarios a los roles adecuados.
  3. El administrador o los usuarios asignan los DAG a las funciones.
  4. En la IU de Airflow, los usuarios solo pueden ver los DAG asignados a su grupo.

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

Asigna DAG a roles en la IU de Airflow

Un administrador puede asignar los permisos a nivel del DAG de la IU de Airflow.

Esta operación no se admite en la IU del DAG.

Asigna DAG a funciones en propiedades de DAG

Puedes configurar Parámetro de DAG access_control en un DAG, que especifica los roles de agrupación de DAG a los que está asignado el 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'},
  },
  ...
  )

Asigna los registros de auditoría de la IU de Airflow a los usuarios

Los registros de auditoría en la IU de Airflow se asignan ID numéricos de las cuentas de usuario de Google. Para 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 Explorar > Registros de auditoría de la IU de Airflow.

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

Airflow 1

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

Entrada en la página Logs de Airflow 1
Figure 1. Entrada en la página Registros de 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 Seguridad > página Lista de usuarios. Esta página está disponible para 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.

¿Qué sigue?