Managed Airflow (3e génération) | Managed Airflow (2e génération) | Managed Airflow (1re génération, version héritée)
Cette page décrit différents mécanismes de contrôle des accès pour l'interface utilisateur d'Airflow et l'interface utilisateur DAG. Vous pouvez utiliser ces mécanismes, en plus du contrôle des accès fourni par IAM, pour séparer les utilisateurs dans l'interface utilisateur d'Airflow et l'interface utilisateur DAG de votre environnement.
Présentation du contrôle des accès à l'interface utilisateur d'Airflow dans Managed Airflow
L'accès à l'interface utilisateur d'Airflow et à l'interface utilisateur DAG et la visibilité des données et des opérations dans ces interfaces utilisateur sont contrôlés à deux niveaux dans Managed Airflow :
L'accès à l'interface utilisateur d'Airflow et à l'interface utilisateur DAG dans Managed Airflow est contrôlé par IAM.
IAM ne fournit aucun contrôle d'autorisation supplémentaire dans l'interface utilisateur d'Airflow ni dans l'interface utilisateur DAG.
Le modèle de contrôle des accès d'Apache Airflow permet de réduire la visibilité dans l'interface utilisateur d'Airflow et dans l'interface utilisateur DAG en fonction du rôle de l'utilisateur.
Le contrôle des accès d'Apache Airflow est une fonctionnalité d'Airflow qui propose un modèle d'utilisateurs, de rôles et d'autorisations différent de celui d'IAM.
Le contrôle des accès d'Apache Airflow utilise des autorisations basées sur les ressources. Tous les utilisateurs Airflow disposant d'un rôle Airflow spécifique bénéficient des autorisations de ce rôle. Par exemple, les utilisateurs Airflow disposant d'un rôle avec l'autorisation can delete on Connections peuvent supprimer des connexions sur la page "Connections" (Connexions) de l'interface utilisateur d'Airflow.
Vous pouvez également attribuer des autorisations au niveau du DAG pour des DAG individuels. Par exemple, pour que seuls les utilisateurs disposant d'un rôle Airflow spécifique puissent voir un certain DAG dans l'interface utilisateur d'Airflow. Dans Managed Airflow, vous pouvez attribuer automatiquement des autorisations au niveau du DAG, en fonction du sous-dossier dans lequel le fichier DAG est situé dans le bucket de l'environnement.
Si vous souhaitez configurer l'accès pour des identités externes via la fédération des identités des employés, accordez d'abord l'accès à votre environnement dans IAM, comme décrit dans la section Attribuer des rôles IAM à des identités externes. Vous pouvez ensuite utiliser le contrôle des accès à l'interface utilisateur d'Airflow comme d'habitude. Les utilisateurs Airflow pour les identités externes utilisent leur identifiant principal au lieu de l'adresse e-mail, et d'autres valeurs sont renseignées dans les autres champs d'enregistrement utilisateur que pour les comptes Google.
Gérer les rôles Airflow et les paramètres de contrôle des accès
Les utilisateurs disposant du rôle Administrateur (ou équivalent) peuvent afficher et modifier les paramètres de contrôle des accès dans l'interface utilisateur d'Airflow.
Dans l'interface utilisateur d'Airflow, vous pouvez configurer les paramètres de contrôle des accès à partir du menu Security (Sécurité). Pour en savoir plus sur le modèle de contrôle des accès d'Airflow , les autorisations disponibles et les rôles par défaut, consultez la documentation sur le contrôle des accès à l'interface utilisateur d'Airflow.
Airflow gère sa propre liste d'utilisateurs. Les utilisateurs disposant du rôle Administrateur (ou équivalent) peuvent afficher la liste des utilisateurs qui ont ouvert l'interface utilisateur d'Airflow d'un environnement et qui ont été enregistrés dans Airflow. Cette liste inclut également les utilisateurs préenregistrés manuellement par un administrateur, comme décrit dans la section suivante.
Enregistrer des utilisateurs dans l'interface utilisateur d'Airflow
Les nouveaux utilisateurs sont automatiquement enregistrés lorsqu'ils ouvrent pour la première fois l'interface utilisateur d'Airflow d'un environnement Managed Airflow.
Lors de l'enregistrement, le rôle spécifié dans l'option de configuration Airflow [webserver]rbac_user_registration_role est attribué aux utilisateurs. Vous pouvez
contrôler le rôle des nouveaux utilisateurs enregistrés en remplaçant cette
option de configuration Airflow par une autre valeur.
Si l'option n'est pas spécifiée, le rôle d'enregistrement par défaut est Op dans les environnements Airflow 2 et 3.
Les étapes ci-dessous sont recommandées pour créer une configuration de rôle de base pour l'interface utilisateur d'Airflow :
Les administrateurs de l'environnement ouvrent l'interface utilisateur d'Airflow pour le nouvel environnement.
Attribuez le rôle
Adminaux comptes administrateur. Le rôle par défaut pour les nouveaux comptes estOp. Pour attribuer le rôleAdmin, exécutez la commande de CLI Airflow suivante avec gcloud CLI :gcloud composer environments run ENVIRONMENT_NAME \ --location LOCATION \ users add-role -- -e USER_EMAIL -r AdminRemplacez :
ENVIRONMENT_NAMEpar le nom de l'environnement.LOCATIONpar la région dans laquelle se trouve l'environnement.USER_EMAILpar l'adresse e-mail d'un compte utilisateur.
Les administrateurs peuvent désormais configurer le contrôle des accès pour les nouveaux utilisateurs, ce qui inclut l'attribution du rôle
Adminà d'autres utilisateurs.
Préenregistrer des utilisateurs
Les utilisateurs sont automatiquement enregistrés avec des ID numériques de comptes utilisateur Google (et non des adresses e-mail) comme noms d'utilisateur. Vous pouvez également préenregistrer manuellement un utilisateur et lui attribuer un rôle en ajoutant un enregistrement utilisateur avec le champ de nom d'utilisateur défini sur l'adresse e-mail principale de l'utilisateur. Lorsqu'un utilisateur dont l'adresse e-mail correspond à un enregistrement se connecte pour la première fois à l'interface utilisateur d'Airflow, le nom d'utilisateur est remplacé par l'ID d'utilisateur actuellement associé à son adresse e-mail. La relation entre les identités Google (adresses e-mail) et les comptes utilisateur (ID utilisateur) n'est pas fixe. Les groupes Google ne peuvent pas être préenregistrés.
Pour préenregistrer des utilisateurs, vous pouvez utiliser l'interface utilisateur d'Airflow ou exécuter une commande de CLI Airflow via Google Cloud CLI.
Pour préenregistrer un utilisateur avec un rôle personnalisé via Google Cloud CLI, exécutez la commande de CLI Airflow suivante :
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
Remplacez les éléments suivants :
ENVIRONMENT_NAME: nom de l'environnementLOCATION: région dans laquelle se trouve l'environnementROLE: rôle Airflow pour l'utilisateur, par exempleOpUSER_EMAIL: adresse e-mail de l'utilisateurFIRST_NAMEetLAST_NAME: prénom et nom de l'utilisateur
Exemple :
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
Supprimer des utilisateurs
La suppression d'un utilisateur d'Airflow ne révoque pas son accès, car il est automatiquement enregistré à nouveau lors de sa prochaine visite dans l'interface utilisateur d'Airflow. Pour
révoquer l'accès à l'ensemble de l'interface utilisateur d'Airflow, supprimez l'autorisation composer.environments.get
de la règle d'autorisation correspondante dans votre projet.
Vous pouvez également définir le rôle de l'utilisateur sur "Public", ce qui conserve l'enregistrement de l'utilisateur, mais supprime toutes ses autorisations pour l'interface utilisateur d'Airflow.
Configurer automatiquement les autorisations au niveau du DAG
La fonctionnalité d'enregistrement des rôles par dossier crée automatiquement un
rôle Airflow personnalisé pour chaque sous-dossier
directement dans le dossier /dags et accorde à ce rôle un accès au niveau du DAG à tous les
DAG dont le fichier source est stocké dans le sous-dossier respectif. Cela simplifie la gestion des rôles Airflow personnalisés et de leur accès aux DAG.
Fonctionnement de l'enregistrement des rôles par dossier
L'enregistrement des rôles par dossier est un moyen automatisé de configurer les rôles et leurs autorisations au niveau du DAG. Par conséquent, il peut entraîner des conflits avec d'autres mécanismes Airflow qui accordent des autorisations au niveau du DAG :
- Attribution manuelle d'autorisations DAG à des rôles.
- Attribution de DAG à des rôles via la propriété
access_controldans un DAG.
Pour éviter de tels conflits, l'activation de l'enregistrement des rôles par dossier modifie également le comportement de ces mécanismes.
Dans Airflow 2 et 3 :
- Vous pouvez accorder l'accès aux DAG à des rôles via la
access_controlpropriété définie dans le code source du DAG. - L'attribution manuelle d'autorisations DAG (via l'interface utilisateur d'Airflow ou gcloud CLI) peut entraîner des conflits. Par exemple, si vous accordez manuellement des autorisations au niveau du DAG à un rôle par dossier, ces autorisations peuvent être supprimées ou remplacées lorsque le processeur DAG synchronise un DAG. Nous vous recommandons de ne pas accorder manuellement d'autorisations DAG.
- Les rôles disposent d'une union d'autorisations d'accès aux DAG enregistrées via l'enregistrement des rôles par dossier
et définies dans la propriété
access_controldu DAG.
Les DAG situés directement dans le dossier /dags de premier niveau ne sont pas attribués automatiquement à un rôle par dossier. Ils ne sont accessibles avec aucun rôle par dossier. D'autres rôles tels qu'Administrateur, Opérateur, Utilisateur ou tout rôle personnalisé disposant d'autorisations peuvent y accéder via l'interface utilisateur d'Airflow et l'interface utilisateur DAG.
Si vous importez des DAG dans des sous-dossiers dont les noms correspondent à des rôles Airflow intégrés et à des rôles créés par Managed Airflow, les autorisations pour les DAG de ces sous-dossiers sont toujours attribuées à ces rôles. Par exemple, l'importation d'un DAG dans le dossier /dags/Admin accorde des autorisations à ce DAG au rôle Administrateur. Les rôles Airflow intégrés incluent Administrateur, Opérateur, Utilisateur, Lecteur et Public.
Managed Airflow crée UserNoDags une fois la fonctionnalité d'enregistrement des rôles par dossier activée.
Airflow effectue l'enregistrement des rôles par dossier lorsqu'il traite les DAG dans le programmeur Airflow. Si votre environnement contient plus d'une centaine de DAG, le temps d'analyse des DAG peut augmenter. Dans ce cas, nous vous recommandons d' utiliser plus de mémoire et de processeur pour les programmeurs.
Attribuer automatiquement des DAG à des rôles par dossier
Pour attribuer automatiquement des DAG à des rôles par dossier :
Ignorez l'option de configuration Airflow suivante :
Section Clé Valeur webserverrbac_autoregister_per_folder_rolesTrueRemplacez le rôle d'enregistrement du nouvel utilisateur par un rôle sans accès à aucun DAG. De cette façon, les nouveaux utilisateurs n'ont accès à aucun DAG tant qu'un administrateur ne leur attribue pas un rôle disposant d'autorisations pour des DAG spécifiques.
UserNoDags est un rôle créé par Managed Airflow uniquement lorsque la fonctionnalité d'enregistrement des rôles par dossier est activée. Il est équivalent au rôle Utilisateur, mais sans accès à aucun DAG.
Ignorez l'option de configuration Airflow suivante :
Section Clé Valeur webserverrbac_user_registration_roleUserNoDagsAssurez-vous que les utilisateurs sont enregistrés dans Airflow.
Attribuez des rôles aux utilisateurs à l'aide de l'une des approches suivantes :
- Laissez Airflow créer automatiquement des rôles en fonction des sous-dossiers des DAG, puis attribuez des utilisateurs à ces rôles.
- Préez des rôles vides pour les sous-dossiers des DAG, avec des noms de rôles correspondant au nom d'un sous-dossier, puis attribuez des utilisateurs à ces rôles. Par exemple,
pour le dossier
/dags/CustomFolder, créez un rôle nomméCustomFolder.
Importez des DAG dans des sous-dossiers dont les noms correspondent aux rôles attribués aux utilisateurs. Ces sous-dossiers doivent se trouver dans le dossier
/dagsdu bucket de l'environnement. Airflow ajoute des autorisations aux DAG dans un tel sous-dossier, de sorte que seuls les utilisateurs disposant du rôle correspondant peuvent y accéder via l'interface utilisateur d'Airflow et l'interface utilisateur DAG.
Configurer manuellement les autorisations au niveau du DAG
Vous pouvez configurer des autorisations au niveau du DAG pour les rôles personnalisés afin de spécifier les DAG qui sont visibles pour différents groupes d'utilisateurs.
Pour configurer des autorisations au niveau du DAG dans l'interface utilisateur d'Airflow :
- L'administrateur crée des rôles vides pour regrouper les DAG.
- L'administrateur attribue des rôles appropriés aux utilisateurs.
- L'administrateur ou les utilisateurs attribuent des DAG aux rôles.
- Dans l'interface utilisateur d'Airflow, les utilisateurs ne peuvent voir que les DAG attribués à leur groupe.
Les DAG peuvent être attribués à des rôles en utilisant des propriétés de DAG ou l'interface utilisateur d'Airflow.
Attribuer des DAG à des rôles dans l'interface utilisateur d'Airflow
Un administrateur peut attribuer les autorisations au niveau du DAG requises à des rôles spécifiques dans l'interface utilisateur d'Airflow.
Cette opération n'est pas prise en charge dans l'interface utilisateur DAG.
Attribuer des DAG à des rôles en utilisant les propriétés de DAG
Vous pouvez définir le
access_control paramètre de DAG pour définir
le ou les rôles de regroupement auxquels le DAG est attribué.
Le programmeur applique les autorisations au niveau du DAG lorsqu'il analyse un DAG.
dag = DAG(
access_control={
'DagGroup': {'can_edit', 'can_read'},
},
...
)
Mapper les journaux d'audit dans l'interface utilisateur d'Airflow aux utilisateurs
Les journaux d'audit dans l'interface utilisateur d'Airflow sont mappés sur les ID numériques des comptes utilisateur Google. Par exemple, si un utilisateur met en pause un DAG, une entrée est ajoutée aux journaux.
Airflow 3
Dans Airflow 3, vous pouvez afficher les journaux d'audit sur la page Browse > Audit Log (Parcourir > Journal d'audit) de l'interface utilisateur d'Airflow.
Airflow 2
Vous pouvez afficher les journaux d'audit sur la page Browse > Audit Logs (Parcourir > Journaux d'audit) de l'interface utilisateur d'Airflow.
Une entrée typique répertorie un ID numérique dans le champ Owner (Propriétaire) : accounts.google.com:NUMERIC_ID. Vous pouvez mapper des ID numériques sur des adresses e-mail d'utilisateur sur la page
Security > List Users (Sécurité > Répertorier les utilisateurs). Cette page est disponible pour les utilisateurs disposant du rôle Admin.
Notez que la relation entre les identités Google (adresses e-mail) et les comptes utilisateur (ID utilisateur) n'est pas fixe.
Étape suivante
- Remplacer les options de configuration Airflow
- Présentation de la sécurité
- Contrôle des accès Managed Airflow