問題タブ [auditing]
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.
c# - ビジネス層で監査を実装する方法
ユーザーがログインしたり、パスワードや電子メールを変更したりできるシステムに基本的な監査を実装しようとしています。
監査したい関数はすべてビジネス層にあり、結果を含めて関数が呼び出された日時を格納する Audit オブジェクトを作成したいと考えています。
私は最近カンファレンスに参加しましたが、そのセッションの 1 つは巧妙に作成された Web アプリケーションに関するもので、いくつかのアイデアを実装しようとしています。基本的に、列挙型を使用して関数の結果を返し、switch ステートメントを使用してそのレイヤーの UI を更新しています。関数は、監査の作成、設定、および保存のための時間を残さない早期復帰を使用します。
私の質問は、ビジネス機能を監査するときに他の人がとるアプローチと、私のような機能があればどのようなアプローチをとるかということです (あなたがそれを捨てると言うなら、私は耳を傾けますが、私は不機嫌になります)。
コードは次のようになります。
if ステートメントを拡張して、それぞれに新しい監査を作成することもできますが、関数が乱雑になり始めます。switch ステートメントの UI レイヤーで監査を行うことができましたが、それは間違っているようです。
すべてを try catch に finally で貼り付け、finally を使用して Audit オブジェクトを作成し、その情報をそこに設定して早期復帰の問題を解決するのは本当に悪いことですか? 私の印象では、finally は監査用ではなくクリーンアップ用です。
私の名前はデビッドです。より良いコードになろうとしています。ありがとう。
java - ユーザー提供のクラス ファイルを監査して、パッケージ、クラス、およびメソッドをブラックリストに登録する方法
Java クラス ファイルとして提供されるユーザー定義のストアド プロシージャをホストするアプリケーションに取り組んでいます。手順は決定論的である必要があり、非決定論の原因となるさまざまなパッケージとメソッドをブラックリストに載せたいと思います。java.lang.Class と javax.tools.* で利用できるものを見てきました。
java.lang.Class を使用して、メンバー、メソッド パラメーター、戻り値の型を監査できるようです。ただし、メソッドの内容を監査するには、生のクラス ファイルを分析する必要があるようです。
監査が必要な静的初期化ブロックやメンバー変数の初期化などのまれなケースもあります。デフォルトのコンストラクターが非決定論的である java.util.Date のようなケースがありますが、それ以外は問題ありません。
クラスファイルのこれらの側面を簡単に分析できるフレームワークまたはツールはありますか?
jpa - Spring Data JPA による監査
すべてのエンティティ オブジェクトに監査が必要なアプリケーションで Spring Data JPA を使用しています。それぞれに Auditable を実装するか、AbstractAuditable を拡張できることはわかっていますが、監査の実装全体に問題があります。
Spring Data JPA リファレンス ページの例は、エンティティごとに AuditableAware Bean が必要であることを示しているようです。この余分なコードを回避し、1 つの場所または 1 つの構成で処理する方法はありますか?
asp.net-mvc - ASP.NET MVC での NInject、nHibernate、および監査
ASP.NET MVC (C#) アプリケーションの一部として NInject と nHibernate を使用する継承されたアプリケーションに取り組んでいます。現在、変更の監査に関する問題を調べています。各エンティティには、ChangedOn/ChangedBy および CreatedOn/CreatedBy フィールドがあり、データベース列にマップされます。ただし、これらは間違ったユーザー名で埋められるか、ユーザー名がまったくないかのいずれかです。これは間違った方法で構成されているためだと思いますが、問題を解決するために nHibernate と NInject について十分に知らないので、誰かが助けてくれることを願っています. アプリケーションで十分な洞察を提供できるように、いくつかのコード スニペットを以下に示します。
セッション ファクトリとセッションの作成:
セッション ファクトリの構成:
イベントリスナーからのスニペット:
ご覧のとおり、セッション ファクトリはシングルトン スコープにあります。したがって、イベントリスナーとスタンパーもこのスコープでインスタンス化されます (私はそう思います)。これは、ユーザーがまだログインしていない場合、スタンパーのユーザー名が空の文字列または「不明」に設定されることを意味します。スタンパーを改造することで、この問題を補おうとしました。ユーザー名が null または空かどうかをチェックします。これが true の場合、アクティブなユーザーを見つけようとし、username-property にそのユーザーの名前を入力します。
ただし、これにより、アプリケーションにもログインし、データベースにログインしている、まったく異なるユーザー名が発生します。これは、トランザクションを開始したユーザーではなく、最後にログインしたユーザーである間違ったアクティブなユーザーを解決するためだと思います。
sql - データベース行を含む行に関するメタデータを保存しますか?
行に関するメタデータの保存に関するベスト プラクティスは何ですか?
銀行間金融送金の例を見てみましょう。次のTransfer
ようになります。
しかし今ではもちろん、人々はメタデータを見たいと思うでしょう:
これらはすべて明確に定義された値であり、転送に関連するハードコピーにすべて表示されます。
テーブルの変更の監査ログは既にありますが、次のようなものはキャッチされません。
変更を加えた人のusername、fullname、およびmachine nameをキャッチします。しかし、転送の受け取りを「承認」する資格情報を入力するためにその人の肩越しにいたスーパーバイザーの名前を知ることはできません。
彼らが別の情報を追跡するように求めたとき、私の苛立ちが生じ、データテーブルにさらにメタデータ列を追加する必要がありました。
これはベストプラクティスですか?
linux - Linux から Windows レジストリ キーを照会するにはどうすればよいですか?
私は、Windows マシンからインストール済みのソフトウェアとライセンスを取得する必要がある Linux 監査アプリケーションを開発しています。アプリケーションはエージェントフリーでなければなりません。wmi-client は実際に私が望むものを実装しています。アプリケーションにクエリを実行しようとしましたが、うまくいきました:
私の質問は、特定のアプリケーションのプロダクト キーを取得するにはどうすればよいですか? それらがレジストリ キーに保存される場合があることは知っていますが、WMI を介してクエリを実行できますか?
編集:ウェブサイトでそれを見つけました:
WQL クエリは、一連のプロパティを提供する特定の WMI クラスに基づいています。代わりに、WMI レジストリ アクションは "Default" 名前空間の "StdRegProv" に基づいており、結果を取得するには特定のメソッドを呼び出す必要があります。つまり、レジストリ クエリ ベースの WMI フィルタは使用できません。
WQL はレジストリ キーを調査できないようですが、どうすればよいですか? 何か案は?
database - データベースの監査ログ (証跡) の改ざん
たとえば、MySQL、SQL Server、または Oracle などのデータベースを持つアプリケーションがあるとします。そして、データベースへの管理者アクセス権限を持つデータベース管理者や監査管理者など、複数の人がいると仮定しましょう。誰かがレコードを変更し、監査証跡を変更したとしましょう (彼らは管理者権限を持っているので、データベースに対して何でもできると思いますが、間違っている場合は修正してください)。
これを検出する他の方法はありますか?監査証跡を変更すると、データベース レコードの改ざんが隠蔽されるためです。
これに対する解決策を提供しているデータベース ベンダーはありますか? これは、データベース フォレンジックの監査ログの改ざん検出に該当すると思います。
linux - リモートLinuxマシンを監視し、インストールされているソフトウェアをPerlで取得するにはどうすればよいですか?
WMIを介してリモートのWindowsマシンを監視できるPerlスクリプトがいくつかあります。現在、CPU使用率、メモリ使用率、ディスク使用率、およびインストールされているソフトウェアを確認できます。しかし、リモートのLinuxマシンで同じ仕事をしたい場合はどうなりますか?もちろん、WMIはないので、似たようなものを使用するつもりです。Linuxが/procと/sysを介して情報を公開するという別の古いStackOverflowの質問を読みましたが、リモートコンピューターからそれらを照会できますか?そして、どうすればPerlでそれを正確に行うことができますか?専用モジュールはありますか?
編集:明確にするために、スクリプトはエージェントフリーでなければなりません。
java - 特定のフィールドの MySQL/Java 監査
一部のフィールドが更新される可能性のあるテーブルはほとんどありません。
さまざまな分野の変化の歴史を残したい。 ただし、異なるフィールドには異なるタイプがありますが、「監査」テーブルに多くの異なる列を作成したくありません。
したがって、シリアライゼーションを使用する必要がありますが (PHP でよく使用していました)、Java/MySQL でどれほど効率的かはわかりません (データ フレームワークなどは使用していません)。連載なら何に?XML/JSON?
私は2つのテーブルを考えました:
- AuditEntityProperty (ID (PK)、EntityId (FK)、PropertyName、From、To、DateTime、Username)
- AuditEntity (エンティティ ID (PK)、エンティティ名)
From/To は、対処方法がわからない現在の問題です。 私は XML に傾倒しており、両方のデータ型として TEXT を使用しています。アイデア?