セキュアロギング: 制御仕様
ハッシュチェーンまたはWORMストアによる追記専用の監査記録、必須のアクター・オブジェクト・理由フィールド、アプリケーションデータベースとは別のストア、および法的例外が文書化されている場合を除き通常の消去を超えて保持する保持期間を定義します。
パッケージステータス: 参照コンテキストが人間によるレビュー準備完了。契約とテストシナリオは完成していますが、採用実装がそれらを通過したという主張はありません。
決定事項
セキュリティ関連の操作は、アプリケーションのOLTPデータベースではないストアに追記専用の監査レコードを書き込みます。各レコードはアクター、オブジェクト、および機械可読な理由を指定します。整合性は、レコードごとのハッシュチェーン、WORMロック、またはその両方によって提供されます。保持は名前付きクラスに従います。通常の消去権利に基づくジョブは、文書化された法的例外が適用されない限り、そのクラス内にあるレコードを削除しません。
範囲
event-catalog.yamlに記載された認可変更、ブレイクグラスセッション、データエクスポート、およびその他の制御プレーン操作。- ライターAPI、チェーン検証ジョブ、法的保留フラグ、および消去ワークフローとの境界。
- チェーン検証に使用されるクロックソースとダイジェストアルゴリズム。
このブロックの外
- セキュリティ証拠でない製品分析、デバッグログ、またはリクエストトレース。
- 採用プロファイルを超えた特定のベンダーWORM製品の選択。
- 関連するプライバシー履行ブロックにある完全な消去オーケストレーション。
契約
- カタログで明示的に
fail_closed: trueとマークされたイベントクラスについては、アクター識別子、オブジェクト識別子、および理由コードが存在しない限り、監査ライターは操作の完了を拒否します。他のイベントはグローバルな変更禁止ではなく、宣言された可用性ポリシーに従います。 - 保存されたレコードはアプリケーション資格情報によって更新または削除できず、追記のみが許可されます。
- 各レコードは正規化されたバイト列と
prev_record_sha256に対するrecord_sha256を格納し、検証ジョブは破損時にフェイルクローズします。 - アプリケーションデータベースの復元、切り詰め、または行削除は対応する監査レコードを削除しません。
- 保持クラスと
keep_daysはレコードに保存され、消去ジョブはそれらの行をスキップしクラスへのポインタを出力します。 - 法的保留識別子は、保持期間
keep_daysを超えて保持を延長し、指定された所有者によって保留が解除されるまで有効です。
実装ガイダンス
- アプリケーションサーバーに別の監査クラスターへの追記専用資格情報を付与します。
- ハッシュ化前にバイト列を正規化し、不明なカタログ名はフェイルクローズします。
- 理由コードは必須であり、自由テキストは任意のコメントとして扱います。
障害処理と安全策
- 監査ストアがダウンしている場合、カタログで明示的に高整合性かつ
fail_closed: trueに分類されたイベントのみが関連操作をブロックし、他のイベントは文書化されたキューまたは劣化パスを使用します。 - チェーンの破損は疑わしいライターを凍結し、セキュリティに通知します。
- 保持クラスのマッピングがない消去ワーカーは監査行を削除してはなりません。
検証と運用
- 毎晩、最後の
verify_batch_sizeレコードをヘッドダイジェストに対して検証します。 - OLTP復元後、監査がそのウィンドウをカバーしていることを証明します。
- 消去スキップを追跡し、法的保留所有者を四半期ごとにレビューします。
このパッケージ内の実行可能に見える例はフィクスチャおよび受け入れ契約です。コレクションのルートから
python tools/validate.py
を実行してパッケージ構造とメタデータをチェックし、その後ターゲットリポジトリでシナリオを実装および実行してください。
採用の前提
example.yamlの名前と数値は採用プロファイルであり、普遍的なデフォルトではありません。- 採用チームはアクター、データクラス、エラー語彙、および所有権を自システムにマッピングする必要があります。