はじめに
本記事の目的
- 本記事の目的は、JupyterHubにGitHub Enterprise認証を導入する具体的な手順を、初心者にもわかりやすく解説することです
対象読者
- JupyterHubの認証機能をどのように設定すれば良いか分からない方
- GitHub Enterpriseを使用している企業ユーザー
JupyterHubとは?
JupyterHubの基本概要
- JupyterHubは、シングルユーザーのJupyter Notebook(JupyterLab)を手軽に複数人で共有できる環境を構築できます
GitHub認証を導入するメリット
認証方式
- JupyterHubの認証方式には、ローカル認証やLDAP認証、OAuthなど様々な選択肢があります
GitHub Enterprise認証の利便性
- 既存のGitHub Enterpriseアカウントを利用して手軽にログインできる利便性が得られます。特に、既にGitHub Enterpriseを活用している開発者やチームにとって、認証の一元管理が可能になり、アカウント管理の手間が大幅に軽減されます
必要な準備
- 前提条件
- Ubuntu 24.04 LTS
- GitHub Enterpriseアカウントの作成
- JupyterHub 5.1.0のインストール(参考:https://github.com/jupyterhub/jupyterhub)
oauthenticatorのインストール
JupyterHubにGitHub認証を導入するには、まずoauthenticatorライブラリをインストールする必要があります。oauthenticatorは、OAuthプロトコルを使用した認証をサポートするプラグインで、GitHubをはじめ、GoogleやGitLabなど多くのサービスと連携可能です。
以下のコマンドで、oauthenticatorをインストールします。
python3 -m pip install oauthenticator
GitHub Enterprise OAuthアプリケーションの設定
GitHub EnterpriseでのOAuthアプリの登録手順
JupyterHubでGitHub Enterprise認証を利用するためには、まずGitHub Enterprise上でOAuthアプリケーションを登録する必要があります。
GitHub Enterpriseの「Settings」から左側にあるメニューの下の方にある「Developer settings」へ進み、「OAuth Apps」を選択して新しいアプリを作成します。ここで、アプリケーション名やホームページURL、コールバックURLを入力し、アプリケーションを登録します。
クライアントIDとシークレットの取得
アプリケーションを登録すると、自動的にクライアントIDが生成されます。さらに、「Generate a new client secret」ボタンをクリックしてクライアントシークレットを生成し、表示されるシークレットを控えておきます。このクライアントIDとシークレットは、JupyterHubの設定に必要な情報であり、GitHub認証を正しく動作させるために必須です。これらの情報は機密情報となるため、慎重に管理し、外部に漏れないように注意してください。
JupyterHubでのGitHub認証設定
JupyterHubの設定ファイルを生成するために、以下のコマンドを実行します。
jupyterhub --generate-config
jupyterhub_config.pyという名前の設定ファイルが作成されます。このファイルに、GitHub Enterprise認証を有効にするための設定を追加していきます。
jupyterhub_config.pyファイルをvi等のテキストエディタで開き、GitHub Enterprise OAuth認証に必要な設定を以下のように行います。
c.JupyterHub.authenticator_class = 'oauthenticator.github.LocalGitHubOAuthenticator'
# GitHub EnterpriseでのOAuthアプリ登録で取得したクライアントIDとシークレットを設定
c.LocalGitHubOAuthenticator.client_id = 'client_idを入力'
c.LocalGitHubOAuthenticator.client_secret = 'client_secretを入力'
# GitHub EnterpriseのURLを設定
c.LocalGitHubOAuthenticator.github_url = 'https://github.enterprise.com'
# 新しいユーザーのシステムアカウントを自動作成するかどうかを設定します。
c.LocalAuthenticator.create_system_users = True
# すべてのGitHub Enterpriseユーザーのログインを許可するかどうかを設定します。
c.LocalGitHubOAuthenticator.allow_all = True
ログイン可能なユーザーを特定Organizationsに限定する方法
先ほどの設定の場合、GitHub Enterpriseユーザーは全員ログイン可能となりますが、もし特定のOrganizationsに所属しているユーザーのみを許可したい場合は以下のような設定を行います。
# すべてのGitHub Enterpriseユーザーのログインを許可するかどうかを設定します。
c.LocalGitHubOAuthenticator.allow_all = False
# 指定したGitHub EnterpriseのOrganizationsに所属するユーザーだけがログインできるように設定します。
c.LocalGitHubOAuthenticator.allowed_organizations = ['Organizations名']
動作確認
設定ファイルを保存後、JupyterHubを起動すれば、GitHub認証が有効になったことが確認できます。
jupyterhub
もし、jupyterhub_config.pyが違うディレクトリにある場合は、ファイルを指定して起動します。
jupyterhub --config /path/jupyterhub_config.py
まとめ
この記事では、JupyterHubにGitHub Enterprise認証を導入する手順を初心者向けに解説しました。GitHub Enterpriseを利用することで、企業内でのユーザー管理が簡単になり、セキュリティも強化されます。設定手順を一つずつ確認しながら進めることで、誰でも簡単にJupyterHubの認証機能を導入できるようになります。これにより、開発環境がより効率的かつ安全になり、チーム全体の生産性が向上するでしょう。ぜひ、今回の手順をベースにして、自社の環境に最適な設定を実施してみてください。
参考リンク