null Alfrescoの監査証跡(Audit Log)データの削除方法

こんにちは。てらしたです。

前回、Alfrescoの監査証跡(Audit Log)機能で記録される情報についてご紹介しましたが、今回はその記録されたデータの削除方法についてご説明しようと思います。

AlfrescoのAuditログはデータベースに記録されていきます。alf_audit_entryやalf_prop_root、alf_prop_linkといったテーブルのレコード件数を見ていると、ブラウザから少し操作をしただけでかなりの数のレコードが記録されていくことがわかると思います。これを放っておくとデータが肥大化し、パフォーマンスに影響を与える恐れがあるため、定期的にAuditログを他の場所に退避させてAlfrescoのデータベースからは削除するといった運用にしておくことが安定稼働のために重要ではないかと思います。データの退避先や退避方法の最適解はケースバイケースで異なると思うので、今回はAlfrescoのデータベースからAuditログを削除する方法のみご説明したいと思います。

Auditログを削除するには、以下のように削除する範囲を指定してDELETEリクエストを送ります(範囲を指定しなかった場合はエラーになります)。

  • idが1から10までのAuditログを削除する場合の例
curl -X DELETE -u admin "http://{host}:{port}/alfresco/api/-default-/public/alfresco/versions/1/audit-applications/alfresco-access/audit-entries?where=(id%20BETWEEN%20('1'%2C'10'))"
  • 作成日が2020/11/20 0時から2020/11/21 0時までのAuditログを削除する場合の例
curl -X DELETE -u admin "http://{host}:{port}/alfresco/api/-default-/public/alfresco/versions/1/audit-applications/alfresco-access/audit-entries?where=(createdAt%20BETWEEN%20('2020-11-20T00%3A00%3A00.000%2B0900'%2C'2020-11-21T00%3A00%3A00.000%2B0900'))"

この操作ではalf_audit_entryテーブルのレコードが削除されます。それに付随するalf_prop_rootやalf_prop_link等のテーブルのレコードは、以下のプロパティで実行間隔が指定されているジョブが削除してくれます(以下の値はデフォルト値で、毎週土曜のAM3:00に実行されます)。

attributes.propcleaner.cronExpression=0 0 3 ? * SAT

本番環境で運用する際には、Auditログの退避から削除までの処理はおそらく何らかのツールやスクリプト等を使って自動化することになると思いますが、データの退避に失敗していたのに削除してしまったといった事故が起こらないように、データ退避の成否を検出する仕組みを組み込むことも必要になると思います。また、そういった事故が起こってしまった場合にもデータを復元できるように、バックアップポリシーとの整合性も考慮しながら設計することも重要です。

関連記事
feature

RANKING
2020.10.12
2020.11.19
2020.12.23
2020.10.05
2020.11.25