Aller au contenu

Autoriser GitHub OAuth avec Apache Airflow

29 septembre 2023

Allan Dawson

Dans ce guide technique, nous vous montrons comment autoriser GitHub OAuth avec Apache Airflow étape par étape.

Table des matières

  1. Qu’est-ce qu’Apache Airflow?
  2. Jeton GitHub
  3. GitHub OAuth
  4. Configurer Airflow

Qu’est-ce que Apache Airflow?

Apache Airflow est une plateforme à code source libre qui permet de programmer la création, l’exécution planifiée et le suivi de flux de travail. Cette plateforme repose sur une architecture modulaire et sur l’utilisation de files d’attente de messages pour orchestrer les flux de travail d’un nombre arbitraire d’utilisateurs.

Airflow et les scripts permettant de créer les flux de travail sont écrits en Python. Le logiciel fonctionne selon le principe « configuration en tant que code » (CaC).  Alors que d’autres plateformes de flux de travail de « configuration en tant que code » existent et utilisent des langages de balisage comme XML, l’utilisation de Python permet aux développeurs d’importer des bibliothèques et des classes pour les aider à créer leurs flux.

Airflow utilise des graphes acycliques dirigés (DAG) pour gérer l’orchestration des workflows. Les tâches et les dépendances sont définies en Python, puis Airflow gère la planification et l’exécution. Les DAG peuvent être exécutés selon un calendrier défini (par exemple, toutes les heures ou tous les jours) ou en fonction de déclencheurs d’événements externes (par exemple, un fichier apparaissant dans Hive). Les anciens planificateurs basés sur des DAG, comme Oozie et Azkaban, avaient tendance à s’appuyer sur plusieurs fichiers de configuration et arborescences de système de fichiers pour créer un DAG, alors que dans Airflow, les DAG peuvent généralement être écrits dans un seul fichier Python.

Jeton GitHub

Les jetons d’accès personnel représentent une alternative à l’utilisation de mots de passe pour l’authentification auprès de GitHub durant l’utilisation de l’API de GitHub ou de la ligne de commande.

Créez un jeton d’accès personnel à partir de https://github.com/settings/tokens (read: enterprise, read: org, user scopes).

Identifiant d'équipe du jeton

Pour obtenir votre identifiant d’équipe, appelez le point de terminaison https://api.github.com/orgs/<org-name>/teams avec votre jeton. Vous devriez obtenir le texte JSON suivant :

La valeur de la clé « id » devrait correspondre à l’identifiant de votre équipe.

GitHub OAuth

L’implantation d’OAuth dans GitHub prend en charge les types d’autorisation standard.

Pour autoriser votre application OAuth, déterminez le flux d’autorisations qui correspond le mieux à votre application.

  • Flux d’application web : permet d’accorder des autorisations aux utilisateurs pour les applications OAuth standard qui s’exécutent dans le navigateur (le type d’autorisation implicite n’est pas pris en charge).
  • Flux d’appareil : utilisé pour les applications sans périphérique de contrôle, par exemple les outils de ligne de commande.

Dans notre exemple, nous utiliserons un flux d’application web pour autoriser Airflow :

  • Les utilisateurs sont dirigés vers une requête leur demandant leur identifiant GitHub.
  • Les utilisateurs sont redirigés vers votre site par GitHub.
  • Votre application accède à l’API via le jeton d’accès de l’utilisateur.

Créez une application OAuth à l’adresse https://github.com/settings/developers pour obtenir les deux éléments suivants :

  • Identifiant du client
  • Clé secrète du client

Configurer Airflow

Lorsque vous exécuterez Airflow pour la première fois, le logiciel créera un fichier nommé airflow.cfg dans votre dossier $AIRFLOW_HOME (~/airflow par défaut). Ce fichier contient les paramètres de configuration d’Airflow, que vous pouvez éditer. Ajoutez l’information que nous avons recueillie jusqu’ici dans le fichier airflow.cfg.

airflow.cfg
[webserver]
auth_backend = airflow.contrib.auth.backends.github_enterprise_auth

[github_enterprise]
api_rev = v3
host = github.com
client_id = <ID_DE_VOTRE_CLIENT>
client_secret = <CLE_SECRETE_DE_VOTRE_CLIENT>
oauth_callback_route = /home
allowed_teams = <ID_DE_VOTRE_EQUIPE>

Désormais, lorsque vous exécuterez Airflow, vous devriez être redirigés vers la page de connexion à GitHub. Une fois connectés, si vous faites partie d’une des équipes autorisées, vous serez automatiquement redirigés vers votre page d’application Airflow.

Conclusion

Implanter GitHub OAuth dans Airflow offre deux avantages aux développeurs qui utilisent déjà GitHub dans leur projet. D’abord, ils n’ont pas besoin d’utiliser des identifiants séparés pour Apache Airflow. Ensuite, ils peuvent gérer les autorisations d’accès à leur application Airflow des différentes équipes de leur organisation. Cette approche simplifie l’implantation d’OAuth tout en reposant sur des outils que les développeurs utilisent déjà.

VOUS AVEZ UN PROJET?