REST APIを使用したセキュリティ上重要なサービスで、改ざん防止監査ログを生成するための最良の方法は何ですか?
各ログエントリに署名することは可能ですが、悪意のあるオペレーターが一部のログを隠すことを防ぐことはできません。
また、優れた答えがここに示されています イベントログファイルの検証可能性を確保するためのテクニック および https://crypto.stackexchange.com/questions/8104/tamper-proofing-log-files =
Intel SGXのような安全なエンクレーブ内でロギングサービスを実行することを検討してください。ハードウェアのルートオブトラストによって署名されたログがあると、攻撃者や内部関係者がログを改ざんするリスクが軽減されます。
これ以外に何もせず、アクセスが制限されている専用マシンにログインします。特別な目的のマシンは、複雑なサービスをホストするマシンよりもはるかに少ない管理で済みます。そのため、ログサーバーにアクセスする必要がある人はほとんどいません。
非常に高い完全性保証が本当に必要な場合は、紙テープに記録してください。改ざんを行うには物理的なアクセスが必要であり、紙のログを消去すると証拠(切り取られた紙、灰など)が残る傾向があります。
私の個人的な好みは Open TripWire になります。ローカルの変更についてファイルシステム全体を監視することは非常に得意です。
あなたが言ったように、データ破壊は常にリスクがあるので、おそらくログフォルダをリモートホストにRSyncします。
正しい権限を設定します。たとえば、特定のグループのユーザーのみがログの書き込みを許可され、別のグループは読み取りを実行できます。ログを複数の場所に保存して、後で比較できるようにします。ログが大きくなる場合は、アーカイブして非対称暗号化で暗号化し、署名します。
また、これらのすべての業務を外部委託するオンラインサービスも利用できます。
各エントリの前のログエントリのハッシュを含めます。セキュリティ要件に応じて、ログのハッシュをビットコインネットワークまたはタイムキーピングサービスまたは同様のものに送信して、「タイムスタンプ」を作成し、検出されない限りログを変更することを不可能にします。
ローテーションするときは、ログファイル全体をハッシュし、そのハッシュを次のログファイルの先頭に含めます。ログのローテーション時に、ビットコインネットワークや計時サービスなどによって実際のタイムスタンプを実行するのにも最適な時間です。
はい、アドバイザはログを削除または破棄できますが、これにより、完了したことを示す証拠が残ります。