💬

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