Airflowのユーザー認証の設定方法
Airflowのユーザー認証の設定方法
この記事のまとめ:
- Apache AirflowのWeb UIにパスワードユーザー認証の設定方法をまとめています。
背景
クラウド上でApache Airflowを動かそうと思ったのですが、AirflowのWeb UIにはデフォルトではユーザー認証などもなく、誰でもDAGsなどのすべてが変更できる状態です。そのため、ユーザー認証の設定をしていきます。なお、ユーザー認証方法は、パスワード認証、LDAP認証、Google Auth認証に対応しているようですが、今回はパスワード認証の設定を行います。
(2019.10.12修正)ユーザー登録手順をプラグインとして実装を行おうとしていましたが、プラグインとしての実装すること自体が間違っておりましたので、単純にスクリプトとしてユーザー登録を実行する方法に記事を修正しました。
Apache Airflowについて
Apache Airflowを動かすにあたって、以前の記事でDockerコンテナーでの導入した時と同様に今回もDockerコンテナーを使います。
Apache Airflow入門 Apache Airflow初心者がAirflowのアーキテクチャを理解し、チュートリアルを動かすまでの手順をまとめています。
なお、当時はAirflowのDockerコンテナーとしてDoker Hubで一番Pull数が多い puckel/docker-airflow が更新されていませんでしたが、最近更新が再開したようです。ただし、その最新版ではこの後紹介するユーザー認証がうまく動作しなかったため、今回も zhongjiajie/docker-airflow を利用します。 puckel/docker-airflow でも動作しましたので修正しました。
設定の流れ
今回行う設定は主に下記の2つです。
- Web UIを提供しているWebserverに対してユーザー認証の設定
- ユーザー登録を行うスクリプトを実行
ひとつひとつどのような設定をするか見ていきます。
ユーザー認証設定
ユーザー認証の設定は airflow.cfg
に行います。初期設定では webserver
のブロック内の authenticate
の設定が False
になっていますので、コメントアウトして下記の2つを書き込みます。
コンテナー内の設定ファイルを更新した airflow.cfg
に置き換えるために次のように Dockerfile
を作成します。また、この時にパスワード認証を行うために flask-bcrypt
のPythonパッケージが必要ですので、インストールしておきます。
ユーザー登録スクリプト
ローカルに任意のディレクトリー(ここでは auth
)を作り、下記の内容の airflow_user_add.py
を保存します。
また、ユーザー情報については user.conf
として別ファイルとして同じディレクトリーに用意します。
Airflowの実行
基本的なファイルは puckel/docker-airflow:1.10.4 のGitHubリポジトリーをクローンしてきたままを使い、先ほど変更や追加を行ったファイルの更新と、 docker-compose.yml
を変更します。
変更した airflow.cfg
と a
uth ディレクトリーを含めたディレクトリー構成は下記のようになっています。
docker-compose-LocalExecutor.yml
をベースとして、docker-compose.yml
を下記のように変更します。
後は docker-compose up -d
で実行すれば、ブラウザで webserver
にアクセスすれば、下記の通りユーザー認証画面が出てきます。
ただし、まだユーザー登録はしていませんので、最後にユーザースクリプトを実行します。
これで user.conf
に記載したユーザー情報でログインできるようになっているはずです。
今回は以上です。 最後まで読んでいただき、ありがとうございます。
関連記事
Apache Airflow入門 Apache Airflow初心者がAirflowのアーキテクチャを理解し、チュートリアルを動かすまでの手順をまとめています。
コメント
コメントを投稿