Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
Cette page décrit différents mécanismes de contrôle des accès pour l'interface utilisateur d'Airflow et l'UI du 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 du DAG de votre environnement.
Présentation du contrôle des accès à l'interface utilisateur d'Airflow dans Cloud Composer
L'accès à l'interface utilisateur d'Airflow et à l'interface utilisateur du DAG, ainsi que la visibilité des données et des opérations dans ces interfaces utilisateur, sont contrôlés à deux niveaux dans Cloud Composer :
L'accès à l'UI Airflow et à l'UI du DAG dans Cloud Composer est contrôlés par IAM.
Si un compte ne dispose pas d'un rôle afficher les environnements Cloud Composer dans votre les interfaces utilisateur Airflow et DAG ne sont pas disponibles.
IAM ne fournit aucun contrôle d'autorisation supplémentaire dans l'interface utilisateur d'Airflow ni dans l'interface utilisateur du DAG.
Le modèle de contrôle des accès Apache Airflow permet de réduire la visibilité dans l'interface utilisateur d'Airflow et de DAG en fonction du rôle de l'utilisateur.
Le contrôle des accès 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 Apache Airflow utilise des autorisations basées sur les ressources. Tous les flux Airflow
Les utilisateurs disposant d'un rôle Airflow spécifique obtiennent les autorisations de ce rôle. Par exemple :
Utilisateurs Airflow disposant d'un rôle doté de l'autorisation can delete on Connections
peut supprimer des connexions sur la page "Connexions" de l'interface utilisateur Airflow.
Vous pouvez également attribuer Autorisations au niveau du DAG pour les DAG individuels Par exemple, pour que seuls les utilisateurs disposant d'un rôle Airflow spécifique puissent voir un DAG spécifique dans l'interface utilisateur Airflow. Dans Cloud Composer, vous pouvez attribuer automatiquement des autorisations au niveau du DAG, en fonction du sous-dossier dans lequel se trouve le fichier DAG 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, commencez par accorder 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 des valeurs différentes sont renseignées dans d'autres champs d'enregistrement utilisateur que les comptes Google.
Avant de commencer
- L'enregistrement des rôles par dossier est disponible dans Cloud Composer 2.0.16 et versions ultérieures.
Gérer les rôles et les paramètres de contrôle des accès Airflow
Les utilisateurs disposant du rôle Administrateur (ou équivalent) peuvent afficher et modifier les paramètres de contrôle d'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 Sécurité. Pour en savoir plus sur le contrôle des accès les autorisations disponibles et les rôles par défaut, consultez les Documentation sur le contrôle des accès à l'interface utilisateur Airflow
Airflow gère sa propre liste d'utilisateurs. Utilisateurs disposant d'un accès administrateur (ou équivalent) peut consulter la liste des utilisateurs qui ont ouvert l'interface utilisateur d'Airflow d'un environnement et ont été enregistrés dans Airflow. Cette liste comprend également les utilisateurs manuellement préenregistrée 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 l'interface utilisateur Airflow d'un Cloud Composer pour la première fois.
Lors de l'inscription, les utilisateurs se voient attribuer le rôle spécifié dans le
[webserver]rbac_user_registration_role
: option de configuration Airflow. Vous pouvez contrôler le rôle des nouveaux utilisateurs enregistrés en remplaçant cette option de configuration Airflow par une autre valeur.
S'il n'est pas spécifié, le rôle d'enregistrement par défaut est Op
dans les environnements avec
Airflow 2.
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 d'environnement ouvrent l'interface utilisateur Airflow pour le nouvel élément environnement.
Attribuer le rôle
Admin
aux comptes administrateur. Le rôle par défaut pour les nouveaux comptes dans les environnements avec Airflow 2 estOp
. Pour attribuer le rôleAdmin
, exécutez la commande de CLI Airflow suivante avec la CLI gcloud :gcloud composer environments run ENVIRONMENT_NAME \ --location LOCATION \ users add-role -- -e USER_EMAIL -r Admin
Remplacez :
ENVIRONMENT_NAME
par le nom de l'environnement.LOCATION
par la région dans laquelle se trouve l'environnement.USER_EMAIL
par 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 les utilisateurs
Les utilisateurs sont automatiquement inscrits auprès de identifiants numériques des comptes utilisateur Google adresses e-mail) comme nom 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 disposant d'une adresse e-mail la mise en correspondance d'un enregistrement utilisateur préinscrit avec l'interface utilisateur Airflow pour la première fois, son nom d'utilisateur est remplacé par l'identifiant actuel de la première connexion) identifiés par leur 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éinscrire des utilisateurs, vous pouvez utiliser l'interface utilisateur Airflow ou exécuter une commande de CLI Airflow. via la 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 où se trouve l'environnementROLE
: rôle Airflow pour l'utilisateur, par exempleOp
USER_EMAIL
: adresse e-mail de l'utilisateurFIRST_NAME
etLAST_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 comptes utilisateur
La suppression d'un utilisateur d'Airflow ne révoque pas son accès, car il
sont automatiquement réenregistrés la prochaine fois qu'ils accéderont à l'interface utilisateur d'Airflow. Pour révoquer l'accès à l'ensemble de l'interface utilisateur Airflow, supprimez l'autorisation composer.environments.get
de la stratégie 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 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
DAG dont le fichier source est stocké dans ce 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 et leurs autorisations au niveau du DAG. Par conséquent, il peut provoquer des conflits avec d'autres mécanismes Airflow qui accordent des autorisations au niveau du DAG :
- Attribuer manuellement des autorisations de DAG à des rôles
- Affecter des DAG à des rôles via la propriété
access_control
d'un DAG
Pour éviter de tels conflits, l'activation de l'enregistrement des rôles par dossier modifie le comportement de ces mécanismes.
Dans Airflow 2 :
- Vous pouvez accorder au DAG l'accès aux rôles via la propriété
access_control
défini dans le code source du DAG. - Accorder manuellement des autorisations DAG (via l'interface utilisateur d'Airflow ou gcloud CLI) peuvent provoquer des conflits. Par exemple, si vous accorder manuellement des autorisations au niveau du DAG à un rôle par dossier, les autorisations peuvent être supprimées ou remplacées lorsque le processeur DAG synchronise un DAG. Nous vous recommandons de ne pas accorder manuellement les autorisations liées aux DAG.
- Les rôles possèdent une union d'autorisations d'accès au DAG enregistrées via les autorisations par dossier
Enregistrement des rôles et défini dans la propriété
access_control
de le DAG.
Les DAG situés directement dans le dossier /dags
de premier niveau ne sont pas automatiquement attribués à un rôle par dossier. Ils ne sont accessibles qu'avec un rôle par dossier. D'autres rôles tels qu'administrateur, opérateur, utilisateur ou tout rôle personnalisé auquel des autorisations sont accordées peuvent y accéder via l'interface utilisateur d'Airflow et l'interface utilisateur du 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 Cloud Composer, les autorisations des DAG dans ces sous-dossiers sont toujours attribuées à ces rôles. Par exemple, si vous importez un
Le DAG sur le dossier /dags/Admin
accorde les autorisations nécessaires à ce DAG à l'administrateur
rôle de ressource. Les rôles Airflow intégrés incluent "Admin", "Op", "User", "Viewer" et "Public".
Cloud Composer crée des NoDags et des 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 planificateur Airflow. Si votre environnement comporte plus d'une centaine de DAG, vous constaterez peut-être une augmentation du temps d'analyse des DAG.
Dans ce cas, nous vous recommandons
utiliser davantage de mémoire et de processeur pour les programmeurs. Toi
permet aussi d'augmenter la valeur de la classe Airflow [scheduler]parsing_processes
.
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 webserver
rbac_autoregister_per_folder_roles
True
Remplacez le rôle d'enregistrement des nouveaux utilisateurs par un rôle sans accès à aucun DAG. De cette manière, les nouveaux utilisateurs n'ont accès à aucun DAG tant qu'un administrateur n'a pas attribué à leurs comptes un rôle disposant d'autorisations pour des DAG spécifiques.
Le rôle "UserNoDags" est créé par Cloud Composer uniquement La fonctionnalité d'enregistrement des rôles par dossier est activée. Il équivaut au rôle "Utilisateur", mais sans accès à aucun DAG.
Remplacez l'option de configuration Airflow suivante:
Section Clé Valeur webserver
rbac_user_registration_role
UserNoDags
Assurez-vous que les utilisateurs sont inscrits dans Airflow.
Attribuez des rôles aux utilisateurs à l'aide de l'une des approches suivantes:
- Laissez Airflow créer automatiquement des rôles basés sur les sous-dossiers des DAG, puis attribuez ces rôles à des utilisateurs.
- Créez des rôles vides pour les sous-dossiers de DAG, avec des noms de rôle 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 le nom correspond aux rôles attribués aux utilisateurs. Ces sous-dossiers doivent se trouver dans le dossier
/dags
du bucket de l'environnement. Airflow ajoute des autorisations aux DAG dans un sous-dossier de ce type, de sorte que seuls les utilisateurs disposant du rôle correspondant puissent y accéder via l'interface utilisateur d'Airflow et l'interface utilisateur du DAG.
Configurer manuellement des autorisations au niveau du DAG
Vous pouvez configurer Les autorisations au niveau du DAG pour les rôles personnalisés pour spécifier les DAG visibles par des groupes d'utilisateurs spécifiques.
Pour configurer les 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 via 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 requises au niveau du DAG aux rôles appropriés dans l'interface utilisateur d'Airflow.
Cette opération n'est pas disponible dans l'interface utilisateur du DAG.
Attribuer des DAG aux rôles en utilisant les propriétés de DAG
Vous pouvez définir le paramètre de DAG access_control
sur un DAG, en spécifiant le ou les rôles de regroupement auxquels le DAG est attribué.
Dans les versions d'Airflow 2 antérieures à 2.1.0, l'administrateur, le développeur du DAG ou un processus automatisé doivent exécuter la commande Airflow sync-perm
pour appliquer les nouveaux paramètres de contrôle d'accès.
Dans Airflow 2.1.0 et versions ultérieures, l'exécution de cette commande n'est plus car le programmeur applique des autorisations au niveau du DAG lorsqu'il analyse une DAG.
dag = DAG(
access_control={
'DagGroup': {'can_edit', 'can_read'},
},
...
)
Mappez les journaux d'audit dans l'UI d'Airflow sur les utilisateurs
Les journaux d'audit dans l'interface utilisateur d'Airflow sont mappés sur les ID numériques des comptes utilisateur Google. Pour Par exemple, si un utilisateur met un DAG en pause, une entrée est ajoutée aux journaux.
Vous pouvez afficher les journaux d'audit sur la page Parcourir > Journaux d'audit dans l'interface utilisateur d'Airflow.
Une entrée type indique un identifiant numérique dans le champ Owner (Propriétaire) :
accounts.google.com:NUMERIC_ID
Vous pouvez mapper des ID numériques aux adresses e-mail des utilisateurs sur la page Sécurité > Répertorier les utilisateurs. Cette page est disponible pour les utilisateurs disposant du rôle Admin
.
Notez que la relation entre Identités Google (adresses e-mail) et 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 à Cloud Composer