問題タブ [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.
hibernate - 行ごとに監査証跡を実装する方法
すべてのテーブルに 2 つの列 [Create Time] と [Modify Time] を追加して、監査証跡を取得したいと考えています。将来、これらのフィールドはテーブルのパーティション分割に使用される可能性があります。これを行うための最良のアプローチは何ですか?DBでいくつかのトリガーを介してそれを行うか、コードを介してこれらの値を更新するのが賢明ですか. Hibernate API を使用して Oracle 11g と通信しています。
entity-framework - 関係の更新を監査するエンティティへのLinq
Linq to EntitiesObjectContextにジェネリック監査を実装しようとしています。
私はこれを組み込みのObjectStateEntryアプローチで大部分達成しましたが、これで欠陥を特定し、それを回避する方法があるかどうか疑問に思いました。以下の例を見てください。
tblServerに組み込まれている変更追跡を使用すると、ServerTypeKey = 2に変更すると、次のようになります。
サーバーキー1古いサーバータイプキー[1]新しいサーバータイプキー[2]。
監査を行うときに、キー値の代わりにForegn Keyテーブルの説明を書き出すことができますか?
database - SQL Server 2008 の特定のデータベースのすべてのテーブルで挿入/更新/削除された行をログに記録する
SQL Server 2008 の特定のデータベースのすべてのテーブルで挿入/更新/削除された行を追跡/記録する最良の方法は何ですか?
または、SQL Server 2008 にはより優れた "監査" 機能がありますか?
audit-trail - 監査証跡アイテムリスト2BusCompは、アソシエートまたはディスアソシエート操作を表示していません。ver 8.0 +
実装:バスコンプに監査証跡機能を使用した監査を追加し、ブックシェルフごとに(交差テーブルを使用して)自身と子の間のM:M関係を監視します->親子の指定Siebelアプリケーション管理者ガイドの「監査の関連付け」セクション。
監査証跡の表示:1)監査証跡画面の使用->レコードの関連付け/関連付け解除を見つけることができます。2)監査証跡アイテムリスト2 Bus Compを使用して、Siebelアプリケーション管理者ガイドのセクション->監査証跡をビジネスコンポーネントにリンクするセクションを使用して、特定のビューの監査証跡タブを表示します。そして、これが問題 です。明確に記録されていて、監査証跡画面で表示できるにもかかわらず、操作レコードの関連付け/関連付け解除が表示されません。
Audit Trail Item List 2がVBCであるため、これらの操作が表示されない場所または理由のロジックを確認できません。
よろしくお願いします!
architecture - 完全な Web サイト アクセスの監査と報告のための戦略
以下の問題の解決策を改善するための指針を探しています。私は Unix ツールチェーンを使用していますが、実装よりも一般的なアプローチを求めています。
どうぞ:
Web サイトへのすべてのアクセスをログに記録し、ビジネス ユーザーがほぼリアルタイムでレポートできるようにする必要があります (5 分の遅延は許容されます)。レポートは、ユーザーまたは期間、またはその両方の組み合わせによってフィルター処理されます。
匿名ユーザーのアクセスもログに記録され、匿名ユーザーがログインすると、ログイン前の情報が登録ユーザーに関連付けられる必要があります。
すべてのページ アクセス (GET または POST) と、すべてのパラメーターとタイムスタンプをログに記録したいと考えています。
レポートの要件は次のとおりです。
そして、応答は次のようになります。
- 11:15:23 に彼はホームページに来ました。
- 11:15:49 に、彼は私たちについてのページに行きました。
- 11:16:23 に、彼はログイン ページに移動しました。
- 11:16:34 に、彼はユーザー名「hacked」でログインを試みました。
- 11:16:38 にログイン要求が失敗しました - ユーザー名/パスワードが正しくありません
- 11:16:45 に、彼はユーザー名「myuser」でログインしました
- 11:17:12 に彼は製品ページに行きました。
解決策は、セッション ID を主キーとして使用し、アカウント ID と要求データをデータベースに挿入することです。
DB が停滞しないように、その間にメッセージ キューを挿入し、データベースへの書き込みを遅らせます。
ただし、データベース内のデータ量が増えると、レポート作成がすぐに遅くなる可能性があります。
woopraのようなソリューションは知っていますが、訪問者データを内部で保持したいと考えています。また、データへの社内の役割ベースのアクセスを使用した社内レポートのアイデアも気に入っています。
編集:過去にこのようなことをどのように行いましたか、またはオプションを完全に選択できるとしたら、どのように取り組みますか?
python - RDBMS 監査証跡に DVCS を使用する
スキーマが変更されやすいかなり複雑なリレーショナル データベースの監査証跡を実装しようとしています。私が考えている 1 つの方法は、DVCS を使用して変更を追跡することです。
(私が想像できる利点は、スキーマレスな履歴、システム全体の状態のスナップショット、分析、再生、および移行のための標準ツール、効率的なストレージ、別のシステム、DB をきれいに保つことです。データベースは書き込み負荷が高くなく、履歴はコアではありません。監査証跡を残すためのものです.ああ、私は問題に対してクレイジーな新しいアプローチを試すのが好きです.)
私はこれらのシステムの専門家ではない (基本的な git の知識しかない) ため、実装がどれほど難しいかはわかりません。Mercurial のアプローチを採用することを考えていますが、実際のファイルを使用するのではなく、ファイルの内容/マニフェスト/変更セットをキーと値のデータ ストアに格納する可能性があります。
データ行はjsonにシリアル化され、各「ファイル」は行になる可能性があります。または、テーブル全体を「ファイル」に格納し、各行を主キーに等しい行番号に格納することもできます (テーブルが大きすぎないと仮定すると、すべての行が 4000 行未満になると予想されます。これは、テーブル「ファイル」の残りの部分を調べなくても、変更セットが自動的に生成される可能性があることを意味する場合があります。
(しかし、ファイル全体の SHA-1 ハッシュが必要だと思うので、私はそれを疑っています。ファイルはおそらく予測可能な行数で分割される可能性があります。たとえば0 < primary key < 1000
、ファイル 1、1000 < primary key < 2000
ファイル 2 などで、それらを小さく保ちます)
このようなアプローチについてコメントできる一般的な DVCS の内部またはデータ構造に精通している人はいますか? どうすればそれを機能させることができますか? また、そもそも実行する必要がありますか?
このようなシステムには 2 つの側面があると思います。1) SQL データを DVCS システムにマッピングし、2) DVCS データをキー/値データ ストア (ファイルではない) に格納して効率を高めます。
(NB json シリアライゼーション ビットは私の ORM でカバーされています)
ruby-on-rails-3 - Rails通知からcurrent_userにアクセスするにはどうすればよいですか?
現在どのユーザーがリクエストを行っているかを知る必要がある監査証跡を作成しています。私の監査証跡は、監査が必要なものを受け取るためにActiveSupport::Notificationsを使用して作成されています。
私がやりたいのは、ActiveSupport :: Concernを使用して、監査のニーズに合わせてロジックをカプセル化することです。これにより、システム内の任意のモデルに監査を簡単に追加できます。
一般に、これは簡単に実行できます。私もしばらく前にそれについてブログを書きました。ただし、現在のユーザーがWebサーバーにリクエストを送信していることを確認する方法を理解するのに苦労しています。これにより、監査証跡で誰がどのような変更を行っているかをログに記録できます。
「モデルでcurrent_userを取得するにはどうすればよいですか」という質問がたくさんあることは知っていますが、モデルでそれを行うことについては質問していないので、より良い回答が得られることを期待しています。私の監査コードはインフラストラクチャに関連しているので、処理中の現在のリクエスト、または現在ログインしている/リクエストを行っている人を明確に教えてくれる何かを利用できる方法があることを望んでいます。
スレッドストレージを使用してcurrent_userをそこに配置するという「回答」をたくさん読みました。他の人が好まない多くの理由から、私はこの答えが好きではありません-スレッドストレージが安全であるという保証はありません。サーバーが同じスレッドを使用して複数のリクエストを処理する場合など、複数のリクエストにまたがってブリードする可能性があります。
つまり...モデルからcurrent_userにアクセスしようとしているのではなく、ActiveSupport::ConcernまたはActiveSupport::Notificationsイベントサブスクリプションからアクセスしようとしているとすると、現在のユーザーが誰であるかを知るための良いオプションはありますか?
アップデート
私は認証にdeviseを使用しています。これは、バックエンドでWardenを使用します。deviseは、を呼び出すことによってcurrent_userを取得しますrequest.env['warden'].authenticate(:scope => :user)
(認証に「ユーザー」モデルを使用すると仮定します)。
request
懸念事項または通知サブスクリプション内から現在のオブジェクトにアクセスする方法はありますか?.NETの時代に戻ると、電話をかけることができHttpContext.Current.Request
、すべてが順調でした。Railsで同等のものは何ですか?
java - 実行時に Java サービスで単一ユーザーのロギングを有効にする方法
前文 -
オンライン Java アプリケーション (Tomcat->Java->Mysql) を SAAS (Software As A Service) として実行しています。これは基本的に、ユーザーが携帯電話を使用して当社のサービス/サーバーに接続し、ユーザーが認証されるとデータ転送が行われるモバイル ユーティリティ サービスです。このサービスはデータ センターで実行され、アプリ サーバーはロード バランサーなどによってリクエストを処理します。アプリケーションのライブ更新は、実際にサービスを完全に停止することなく、サーバーを追加および削除し、ロード バランサーによって要求を迂回させることによって行われます。
シナリオ -
ログから、サービスに常時接続しているユーザーが少なくとも 1 万人いることがわかります。そのため、アップグレードのためにサービスを停止することは現実的ではありません。私は Java の API (HashMap、ArrayList など) を使用して多くのメモリ内キャッシュを使用しています。memcache などのキャッシング フレームワークはまだ使用していません。また、多くの携帯電話を使用してこのサービスに接続しているため、すべての携帯電話をサポートすることは非常に困難です。
使用事例
ユーザーがサービスが機能していないと苦情を申し立てた場合、ユーザーの最後に何が問題なのかを見つけるために、彼 (および彼だけで、他の人ではなく) のログを有効にする必要があります。彼のクライアントは携帯電話であり、これはオンライン サービスであるため、サーバーでログを有効にすることはできず、すべてのユーザーに対してログが有効になり、ログがすぐにロールオーバーされたり、ユーザーのデータが失われたりすることはありません。ロガーによって生成されたテキストの全範囲で簡単に追跡できます。また、クライアント側のエラーのスクリーン ショットを要求することもできません (一部の携帯電話にはこの機能がありますが、ほとんどの携帯電話にはこの機能がなく、問題が発生する携帯電話です)。そのため、他のユーザーは影響を受けずに、ライブ サーバーで処理を行う必要があります。
実行時にパラメーターを指定して、1人のユーザーのみのログを有効にするさまざまな方法は何ですか? (ユーザーが実際にサーバーに接続されている場合)
急いでやってみた簡単なこと
1)最初は空の単一列テーブルを保持し、一部のユーザーがサービスが機能していないと言うと、テーブルにユーザー名を追加します。特定の間隔でテーブルをスキャンするスレッドは、ユーザー名を取得し、ユーザー固有のログの出力を開始します。ログが出力されたら、エントリを削除します。しかし、スレッドが来てアクションを実行するまで待つ必要があります。また、ポリシーとして、リクエスト/レスポンス スレッド以外のスレッドを生成/実行することは想定されていません。
2)空のファイルを保持してエントリを追加し、ポイント1で述べたdbテーブルと同じ方法に従います
3)管理者が認証したプライベートサーブレットにリクエストを発行し(ユーザーはこれにアクセスできず、内部IPのみが許可されます)、ログに記録されるユーザー名をパラメーター値として渡し、後で再度呼び出してユーザーを削除します
他の/より良い方法はありますか?
PS。java.util.logging.Logger をロガーとして使用する
jsf - JSFアプリケーションの監査証跡 - グローバルなvalueChangeListenerは可能ですか?
以下を記録する Web アプリケーションの監査証跡機能を実装しようとしています。
- lastModified (タイムスタンプ)
- modifiedBy (ユーザー情報)
- userComment (値変更の理由)
入力フィールドごとに (入力フィールドは、異なるバッキング Bean と異なる valueHolder クラスを持つ複数のフォームに分散しています)。
最初の 2 つ (lastModified と modifiedBy) は、JPA AuditListener と @PrePersit および @PreUpdate メソッドを使用して簡単に実行できます。
3 つ目は、ユーザーの操作が必要なため、少し注意が必要です。ユーザーのコメントを求めるダイアログが最適です。
したがって、(少なくとも) 未解決の問題が 2 つあります。アプリケーションのすべての入力フィールドに対して「グローバルな」valueChangeListener を確立できますか? <f:valueChangeListener>
これは、各単一の入力コンポーネントにアタッチせずに可能ですか? 2 番目: ユーザーのコメントを取得するにはどうすればよいですか。私の考えはp:dialog
、Web ページ テンプレートに を配置することですが、このダイアログは、どの入力コンポーネントから呼び出されたかを知る必要があります。