問題タブ [audit-trail]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
6 に答える
18419 参照

database - DBアプリケーションの監査証跡/変更履歴を残すための効果的な戦略は?

かなり複雑なデータベースでデータの変更履歴を維持するために人々が成功したいくつかの戦略は何ですか. 私が頻繁に使用して開発しているアプリケーションの 1 つは、レコードが時間の経過とともにどのように変化したかを追跡するためのより包括的な方法から本当に恩恵を受ける可能性があります。たとえば、現在、レコードには多数のタイムスタンプと変更されたユーザー フィールドを含めることができますが、操作がロールバックされた場合など、複数の変更をログに記録するためのスキームは現在ありません。完璧な世界では、保存などのたびに記録を元どおりに再構築することができます.

DBに関するいくつかの情報:

  • 1 週間に数千件のレコードを処理できる容量が必要
  • 50~60台
  • メインの改訂されたテーブルには、それぞれ数百万のレコードがある場合があります
  • 適切な量​​の外部キーとインデックス セット
  • PostgreSQL 8.x の使用
0 投票する
3 に答える
7196 参照

database - ジャンゴ監査証跡と復帰

テーブルを監査するためにデータベースに変更を保存する必要がある新しい Web アプリに取り組んでいます。このような監査テーブルの目的は、後で実際の物理的な監査で、ある状況で何が起こったのか、誰が何を編集したのか、複雑な計算などの時点でデータベースの状態がどうだったのかを確認できるようにすることです。したがって、ほとんどの監査テーブルは書き込まれ、読み取られません。場合によってはレポートが生成されることがあります。

利用可能なソリューションを探しました

  1. AuditTrail - シンプルで、それが私がそれに傾倒している理由です。単一のファイルコードを理解できます。
  2. 復帰- 使用するのは簡単に見えますが、必要に応じて変更するのがどれほど簡単かはわかりません。
  3. rcsField は非常に複雑で、私のニーズには多すぎるようです

私はこれらのどれも試したことがないので、実際の経験と、どれを使用すべきかを知りたいと思いました. たとえば、どちらがより高速で、使用するスペースが少なく、拡張と保守が簡単ですか?

0 投票する
2 に答える
1385 参照

logging - NLog/Log4Net を使用してデータベースの変更追跡を自動化する方法は?

多くのテーブル監査方法を認識しています。一部はトリガー ベースであり、各テーブルのトリガーを監査する必要があります。一部には、列のデータ型に基づく制限があります。NLog や Log4Net などのロギング フレームワークを使用するにはどうすればよいですか。ログ (テーブル内) で、「現時点で、このテーブルのこの列を val0 から val1 に更新したのは誰ですか?」という質問に答える必要があります。

ORマッパーはまだ決めていません。NHibernate または EF に傾いています。

前もって感謝します !

0 投票する
1 に答える
3192 参照

audit - 監査証跡と HIPAA のベスト プラクティスの実装

データベースの設計から始めて、HIPPA の監査証跡を実装するためのベスト プラクティスはありますか。

0 投票する
3 に答える
596 参照

database-design - 自然キーを使用するか、監査/変更ログに代理キーと監査テーブルを使用する

ここでの私の最初の質問です。

私は経験の浅い開発者で、この問題に悩まされています。

監査可能にする必要があるテーブルがあります。このテーブルに、コール センターからの電話が記録されているとします (そうではありませんが、これは単なる例です)。私はそれを「CallHistory」と呼びます。

私は当初、呼び出し先の名前、電話番号などを含む「Callees」という別のテーブルを保持することを計画していました。このテーブルは代理主キーを使用します。

CallHistory テーブルには、Callee テーブルへの外部キーがあります。

もともとこれを行ったのは、呼び出し先の電話番号を変更すると、システム全体に伝播し、複数のテーブルで電話番号を変更する必要がなくなるためです。

問題は、CallHistory テーブルの要点は、ダイヤルミス (発信者が間違った番号をダイヤルしたなど) を含む通話の履歴を記録することです。この代理キー アプローチを使用すると、履歴が失われます。

職場の上級開発者の 1 人は、履歴を保存するために、特定の時間に発信者がダイヤルするたびに電話番号のコピーを CallHistory テーブルに保持することを提案しました。

同じ目的で監査/変更ログテーブルを保持することを考えていました。

私のアプローチはこの目的に十分でしょうか、それとも完全に軌道から外れていますか? どちらのアプローチを好みますか?

乾杯、アンドリュー

0 投票する
1 に答える
630 参照

django - Django:AuditTrailとLazy Relations

フィールドをコピーせず、関連フィールドをコピーするようにAuditTrailコードを変更しようとしています(つまり、監査モデルのデータベーステーブルに外部キーが必要ありません)。ForeignKey

私はcopy_field次のような関数を作成しました。

このコードは、属性を持つモデルが(シグナルAuditTrailを介して)準備されるときに実行されます。class_prepared

ただし、これは、ForeignKeyがまだ準備されていないモデルのフィールドに関連している場合に問題が発生します。これは、モデルインスタンスではなく、関連するモデルの名前を含む文字列get_related_field()であるため、呼び出しは失敗します。field.rel.to

私はこれを回避するために何をすべきか途方に暮れています。モデルの依存関係を特定し、それらがすべて準備されるまで待ってから、フィールドのコピーを開始する必要がありますか?これについて行くための最良の方法について何かアイデアはありますか?

0 投票する
4 に答える
7495 参照

c# - asp.net c#の最高の監査証跡プロセス?

asp.netアプリケーションで実行されるアクションやアクティビティなどをログに記録するための最良の方法は何ですか。また、これらをログに記録するのに最適なストレージはどれですか?XML?DB?

どうもありがとうございます。

0 投票する
4 に答える
32241 参照

asp.net-mvc - ASP.NET MVC アプリケーションでユーザー アクティビティをログに記録する

ASP MVC アプリでユーザー アクティビティをログに記録するための適切な戦略はありますか? (ActionFilters/HTTPModules)。

最後のユーザー アクティビティ (「23 分前に表示された StackOverflow」など) のようなもの、さらにはどのページとコントローラーが使用されたか、さらにどのボタンやリンクがクリックされたかをさらにプッシュします。

ELMAH をインストールしましたが、私が知る限り、エラー ログ用です。

PD: Google アナリティクスはオプションではありません。

0 投票する
5 に答える
606 参照

java - Javaオブジェクトの過去の値を保持するためにどのようなオプションがありますか?監査ログまたはリスト?

Take my domain class for example

public class Person
{
  private Integer id;
  private String name;
  private String address;
  private String telephone;

  //Ac

Take my domain class for example

This is great for storing 1 instance of a given Person, however, the name for example would most likely change over time, and I would like to retain any previous values, I may wish to see what addresses this person has lived at over the past 10 years.

What are my options for doing this? This is a Java web app so I could potentially have an AUDIT_LOG table on my schema, but that doesn't sound a very reliable way of keeping track of these changes

Another thought is to have a PersonFamily and keep all instances of person, assuming the last item in the List is the most recent, such as..

Any suggestions on how I can achieve this? Is there a really clean and simple process I've missed?

Thanks


Google for temporal patterns or event sourcing.

http://martinfowler.com/eaaDev/timeNarrative.html

0 投票する
1 に答える
616 参照

hibernate - エンティティごとの監査可能なフィールドのストレージ

特定のエンティティ (createdBy、creationDate、modifiedBy、modifiedDate など) に何が起こったのかを追跡するために、監査可能なフィールドをキャプチャすることは良い習慣だと思います。

  1. オブジェクトが変更されていない場合、SNMPv3 イベント (createdBy、creationDate など) の次の監査可能なフィールドをキャプチャするだけで意味があると思います。

  2. オブジェクトが作成後に複数の人によって変更可能である場合、たとえば、ユーザー プロファイルが自分自身または管理者によって変更できる場合、上記のすべての属性 (createdBy、creationDate、modifiedBy、modifiedDate など) をキャプチャすることが理にかなっていると想定しています。

  3. エンティティごとの監査証跡の履歴が必要ないと仮定すると、すべての監査可能な属性をエンティティ自体に保存することは理にかなっていますか?

  4. 上記のユースケースでは、監査をサードパーティのフレームワーク (JBoss Envers - http://www.jboss.org/enversなど) に委譲することは理にかなっていますか?

  5. エンティティ (たとえば、発注書) がユーザー X によって作成および維持され、ユーザー Y が上記の PO にいくつかの改良を加えると仮定します。このエンティティの所有者としてマークする必要があるのは誰ですか (作成者または変更者)。この場合の creationDate はまったく関係がない可能性があるため、ここでこのフィールドを追跡することは理にかなっています。

注: 基礎となる永続レイヤーは、JPA、Hibernate 3.3.x に基づいています。