Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
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 a los usuarios en la IU de Airflow y la IU de DAG de tu entorno.
Descripción general del control de acceso a la IU de Airflow en Cloud Composer
El 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 controlan en dos niveles en Cloud Composer:
El acceso a la IU de Airflow y a la IU de DAG en Cloud Composer está controlado por IAM.
Si una cuenta no tiene un rol que pueda ver los entornos de Cloud Composer en tu proyecto, la IU de Airflow y la IU de DAG no estarán disponibles.
IAM no proporciona ningún control de permisos detallado adicional en la IU de Airflow ni en la IU de DAG.
El modelo de control de acceso de Apache Airflow permite reducir la visibilidad en la IU de Airflow y la IU de DAG según el rol del usuario.
El control de acceso de Apache Airflow es una función de Airflow, que cuenta con su propio modelo de usuarios, roles 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 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. Por ejemplo, para que solo los usuarios con un rol específico de Airflow puedan ver un DAG determinado 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.
Si deseas configurar el acceso de identidades externas a través de la federación de identidades de Workforce Identity, primero otorga acceso a tu entorno en IAM, como se describe en la sección Otorga roles de IAM a identidades externas. Luego, puedes usar el control de acceso de la IU de Airflow como de costumbre. Los usuarios de Airflow para identidades externas usan su identificador principal en lugar de la dirección de correo electrónico y tienen valores diferentes propagados en otros campos de registro de usuario que las Cuentas de Google.
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 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 la opción de configuración de Airflow [webserver]rbac_user_registration_role
. Puedes controlar la función de los usuarios registrados recientemente si anulas esta 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.
Se recomiendan los siguientes pasos para crear una configuración de roles básica para la IU de Airflow:
Los administradores del entorno abren la IU de Airflow para el entorno recién creado.
Otorga a las cuentas de administrador la función
Admin
. La función predeterminada para las cuentas nuevas en entornos con Airflow 2 esOp
. Para asignar el rolAdmin
, 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
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.
Los administradores ahora pueden configurar el control de acceso para usuarios nuevos, incluida la asignación de la función
Admin
a otros usuarios.
Registro previo de usuarios
Los usuarios se registran automáticamente con los IDs numéricos de las Cuentas de Google (no las direcciones de correo electrónico) como sus nombres de usuario. También puedes realizar un registro previo manual de un usuario y asignarle un rol si agregas un registro de usuario con el campo de nombre de usuario configurado en su dirección de correo electrónico principal. Cuando un usuario con una dirección de correo electrónico que coincide con un registro de usuario accede a la IU de Airflow por primera vez, su nombre de usuario se reemplaza por el ID del usuario (en el momento del primer acceso) que identifica 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 preregistrar.
Para registrar usuarios previamente, puedes usar la IU de Airflow o ejecutar un comando de la CLI de Airflow con Google Cloud CLI.
Para registrar previamente a 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
: Es un rol de Airflow para el usuario, por ejemplo,Op
.USER_EMAIL
: La dirección de correo electrónico del usuarioFIRST_NAME
yLAST_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
Cómo 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 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 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. Esto
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:
- Asignar permisos de DAG a roles de forma manual
- Asignar DAG a roles a través de la propiedad
access_control
en un DAG
Para evitar estos conflictos, habilitar el Registro de roles por carpeta también cambia el comportamiento de estos mecanismos.
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. - Otorgar permisos de DAG de forma manual (a través de la IU de Airflow o de la CLI de gcloud) puede causar conflictos. Por ejemplo, si otorgas permisos a nivel de DAG de forma manual a un rol por carpeta, estos permisos se pueden quitar o reemplazar cuando el procesador de DAG 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. Otros roles, como Administrador, Operador, Usuario o cualquier rol personalizado al que se le otorguen permisos, pueden acceder a ellos a través de la IU de Airflow y la IU de DAG.
Si subes DAG a subcarpetas con nombres que coinciden con los roles integrados de Airflow y los roles creados por Cloud Composer, los permisos de los DAG en estas subcarpetas seguirán asignados 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 que se habilita la función de registro de roles por carpeta.
Airflow realiza el registro de roles por carpeta cuando procesa DAGs 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 uses más memoria y CPU para los programadores. También puedes aumentar el valor de la opción de configuración de Airflow [scheduler]parsing_processes
.
Cómo asignar DAG automáticamente a roles por carpeta
Para asignar DAG automáticamente a roles por carpeta, haz lo siguiente:
Anula la siguiente opción de configuración de Airflow:
Sección Clave Valor webserver
rbac_autoregister_per_folder_roles
True
Cambia el rol de registro de usuario nuevo a uno sin acceso a ningún DAG. De esta manera, los usuarios nuevos 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 está habilitada la función de registro de roles por carpeta. Es equivalente al rol de 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
Asegúrate de que los usuarios estén registrados en Airflow.
Asigna roles a los usuarios con uno de los siguientes enfoques:
- Permite que Airflow cree roles automáticamente según las subcarpetas de DAG y, luego, asigna usuarios a estos 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 llamadoCustomFolder
.
Sube DAG a subcarpetas con nombres que coincidan con los roles asignados a los usuarios. Estas subcarpetas deben estar dentro de la carpeta
/dags
en el bucket del ambiente. 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 los permisos a nivel del DAG de forma manual
Puedes configurar los permisos a nivel del DAG para 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, haz lo siguiente:
- El administrador crea roles vacíos para agrupar los DAG.
- El administrador asigna usuarios a los roles adecuados.
- El administrador o los usuarios asignan DAG a los roles.
- 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 requeridos a nivel del DAG a los roles adecuados en 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 el parámetro de DAG access_control
en un DAG y especificar los roles de agrupación de DAG a los que se asigna el DAG.
El programador aplica permisos a nivel del DAG cuando analiza un DAG.
dag = DAG(
access_control={
'DagGroup': {'can_edit', 'can_read'},
},
...
)
Asigna los registros de auditoría de la IU de Airflow a los usuarios
Los registros de auditoría de 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.
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 de Airflow 2](https://cloud.google.com/static/composer/docs/images/airflow-2-audit-log.png?authuser=6&hl=es)
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 > Listar 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.
¿Qué sigue?
- Anula las opciones de configuración de Airflow
- Descripción general de seguridad
- Control de acceso de Cloud Composer