💬
JupyterHub再起動時にセッションをリセットする方法
JupyterHub再起動時にセッションをリセットする方法
概要
JupyterHubは、ユーザーのログイン状態を署名付きCookieで管理している。
このCookieの署名鍵である cookie_secret を動的に生成することで、
サーバー再起動時に古いセッションを自動的に無効化し、
再ログインを求めることができる。
背景
長期間同じCookie署名鍵を使い続けると、古いセッションが残り続けたり、
他環境へのコピーや再利用によって認証整合性が崩れる可能性がある。
そのため、JupyterHub再起動時に cookie_secret を更新し、
古い署名のクッキーを破棄しておくことで、認証トークンを定期的にリフレッシュできる。
設定方法
設定ファイル: /etc/jupyterhub/jupyterhub_config.py
import os
# 再起動時に毎回ランダムな secret を生成
c.JupyterHub.cookie_secret = os.urandom(32)
この設定により、Hubを再起動すると新しいcookie_secretが生成され、
以前の署名で発行されたCookieはすべて無効になる。
注意事項
-
Hubの
cookie_secretが変更されると、既存のCookieを利用している
single-user notebook servers も再認証が必要になる。 -
実行中のノートブックは中断される場合があるため、本番環境では計画的な再起動を行うこと。
メリット
- セッションを安全にリセットできる
- 古い署名済みCookieを無効化できる
- シンプルな構成で導入可能
- 検証・共有環境などでの運用に適している
まとめ
-
c.JupyterHub.cookie_secret = os.urandom(32)を設定すると、Hub再起動時にセッションがリセットされる。 - 認証情報を都度更新することで、より安全なセッション管理が可能。
- 本番環境では再起動時の影響を考慮し、メンテナンス時間帯で実施すること。
Discussion