メインコンテンツまでスキップ

運用・保守


前提知識

このドキュメントを理解するには、以下の基礎知識が役立ちます:


概要

idp-serverは、運用・保守を支援する機能を提供します。

運用(Operations) とは、システムを安定稼働させるための日常的な管理作業です。

idp-serverでは以下のような用途に対応できます:

  • 期限切れデータの自動削除(トークン、認証トランザクション等)
  • ヘルスチェックエンドポイントの提供

idp-serverにおける運用の設計思想

1. 運用APIによる自動メンテナンス

idp-serverは、System Administrator API で運用操作を提供します。

運用API:

  • /v1/admin/operations/delete-expired-data: 期限切れデータの一括削除

特徴:

  • バッチ処理に最適
  • 最大削除件数を指定可能(デフォルト10,000件)
  • 定期実行(Cron等)で自動メンテナンス

2. 期限切れデータの自動削除

idp-serverは、以下のデータを自動削除します。

削除対象:

データ種別削除条件理由
OAuthトークン有効期限切れ不要なデータの削減
認証トランザクション有効期限切れセッション期限切れ
認可リクエスト有効期限切れ認可コード期限切れ
CIBAグラント有効期限切れバックチャネル認証期限切れ

削除されないデータ:

  • 監査ログ(audit_log
  • セキュリティイベント(security_event

詳細は concept-13: 監査ログ を参照。

3. ヘルスチェック・モニタリング

idp-serverは、Spring Boot Actuator でヘルスチェックを提供します。

ヘルスチェック:

GET /actuator/health
→ {"status": "UP"}

4. グレースフルシャットダウン

idp-serverは、アプリケーション停止時にデータロスを最小化するグレースフルシャットダウンをサポートします。

シャットダウン時の処理順序:

順序コンポーネント処理最大時間
1GracefulShutdownLifecycleReadiness DOWN、K8s endpoint削除待機5秒
2Tomcat GracefulShutdown処理中のHTTPリクエスト完了待機30秒
3ThreadPoolTaskExecutor ×3非同期タスク(セキュリティイベント/監査ログ/ユーザーライフサイクル)完了待機。3つの executor が順次停止(各最大30秒、通常は数秒以内に完了)30秒※
4RetryScheduler @PreDestroyリトライキューのフラッシュ試行数秒

※ 3つの ThreadPoolTaskExecutor は Bean 破棄時に順次停止するため、理論上の最大待機時間は 3×30秒 = 90秒です。ただし各タスク(DB書き込み)は通常数ミリ秒で完了するため、実運用では数秒以内に全 executor が停止します。terminationGracePeriodSeconds: 70 は実運用上十分な値です。

Kubernetes 設定:

spec:
terminationGracePeriodSeconds: 70 # 5s + 30s + 30s + margin(5s)

注意: Kubernetes の terminationGracePeriodSeconds のデフォルト(30秒)では、グレースフルシャットダウンが完了する前に SIGKILL で強制終了される可能性があります。idp-server では上記4段階の合計を考慮し、70秒以上を設定してください。

ユースケース

1. 定期メンテナンス: 期限切れデータの削除

毎日深夜に期限切れデータを自動削除。

  • 実行: CronでPOST /v1/admin/operations/delete-expired-dataを定期実行
  • 対象: 期限切れトークン、認証トランザクション、認可リクエスト、CIBAグラント
  • 効果: データベース容量の削減、パフォーマンス維持

2. 監視: ヘルスチェック

ヘルスチェックエンドポイントで稼働状態を確認可能。

  • エンドポイント: /actuator/health
  • レスポンス: {"status": "UP"}
  • 効果: 外部監視システムからの稼働確認

セキュリティ考慮事項

  • 削除対象の明確化: 期限切れのみ削除、監査ログは保持
  • 最大削除件数: 一度に大量削除を避ける(デフォルト10,000件)

関連ドキュメント


参考

運用ベストプラクティス