運用・保守
前提知識
このドキュメントを理解するには、以下の基礎知識が役立ちます:
- コントロールプレーン - Management APIの概要
- 監査ログ - 監査証跡の保持
概要
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は、アプリケーション停止時にデータロスを最小化するグレースフルシャットダウンをサポートします。
シャットダウン時の処理順序:
| 順序 | コンポーネント | 処理 | 最大時間 |
|---|---|---|---|
| 1 | GracefulShutdownLifecycle | Readiness DOWN、K8s endpoint削除待機 | 5秒 |
| 2 | Tomcat GracefulShutdown | 処理中のHTTPリクエスト完了待機 | 30秒 |
| 3 | ThreadPoolTaskExecutor ×3 | 非同期タスク(セキュリティイベント/監査ログ/ユーザーライフサイクル)完了待機。3つの executor が順次停止(各最大30秒、通常は数秒以内に完了) | 30秒※ |
| 4 | RetryScheduler @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件)
関連ドキュメント
- 監査ログ - 監査証跡、データ保持ポリシー
- コントロールプレーン - Management API、System Administrator権限
- 運用ガイダンス - 詳細な運用手順、トラブルシューティング
参考
運用ベストプラクティス
- Spring Boot Actuator - ヘルスチェック・メトリクス