1

私のクライアントはかなり長い間 Microsoft Access 2010 を使用しており、いくつかのセキュリティ監査要件を受けました。Microsoft SQL Server 2012 Express に接続するリンク テーブル アプローチを使用しています。

要件には、データに対するすべてのアクションをログに記録する必要があることが記載されています。(INSERT、UPDATE、DELETE、および SELECT ステートメント)

INSERT、UPDATE、DELETE ステートメントの場合、変更をログに記録するトリガーを作成できます。

問題は、SELECT ステートメントの監査に関するものです。データが読み取り専用の場合、クエリをログに記録するストアド プロシージャを使用できたはずです。ただし、Stored Proc を実行すると、Recordset は更新できなくなります。

この課題に取り組む方法を知っている人はいますか?

私は多くの戦略にオープンです...(Webサービスを介してSQLへのアクセスを接続する、何でも...)

私のクライアントは、従業員が 10 人未満の中小企業であるため、SQL Server の Enterprise エディションに 30,000 ドルを費やす余裕がないことに注意することが重要です。

4

3 に答える 3

1

SELECT ステートメントは、SQL Server のデータベース レベルの監査アクション グループの一部です。(そのページで「データベース レベルの監査アクション」を検索してください。) ただし、そのレベルの監査には、SQL Server Enterprise エディションが必要です。

理論的には、データが読み取り専用かどうかに関係なく、ストアド プロシージャのみを使用するようにすべてのアクセスを制限できます。最初に監査情報をログに書き込むストアド プロシージャを作成し、次に、SELECT、INSERT など、他に必要な処理を実行します。

実際には、それができない場合あります。データベースにアクセスするアプリケーションによって異なります。ストアド プロシージャのみを使用するようにすべてのアクセスを制限すると、他のことを期待するアプリケーションが機能しなくなる可能性があります。(ストアド プロシージャだけに切り替えた場合、Ruby on Rails アプリケーションはどのように応答しますか?)

データベースを使用不能にする防弾監査システムはあまり良くありません。データベース サーバーを完全にシャットダウンする方が簡単で安価です。

于 2012-11-30T20:09:50.880 に答える
0

JET showplan をオンにすることができます。これにより、Access で使用されるすべてのクエリがログに記録されます。

http://www.techrepublic.com/article/use-microsoft-jets-showplan-to-write-more-effective-queries/?siu-container

コメントで指摘したように、フォーム内のデータの表示を 1 つのレコードに制限する where 句を使用して各フォームを開かない限り、監査要件を本当にごまかしています。これを行わないと、リンクされたテーブルに開かれたフォームに数千のレコードが含まれる可能性があり、ユーザーが ctrl-f を押して 1 つのレコードを見つけてジャンプすると、SELECT ステートメントはユーザーが実際に何をしているのかについてゼロを伝えます。をみました。したがって、表示計画をオンにすることはできますが、フォームを 1 つのレコードに制限するようにアプリケーションの設計を変更しない限り、監査の概念はユーザーが実際に見たものについて何も教えてくれません。公平を期すために、私のアプリケーションの 99% は実際に開き、where 句を使用してメインの編集フォームを 1 つのレコードに制限しています。

したがって、上記のようにすべての SELECT コマンドを技術的にログに記録することはできますが、そのようなログは、ユーザーが実際にどのレコードを参照したかを判断するのに何の役にも立たないため、実際にはそのようなログの精神ではありません。

于 2015-01-29T19:44:19.820 に答える
0

SQL Server プロファイラーをサポートする SQL Server エディションにアップグレードできます。もう 1 つのオプションは、たとえば SQL 監査などの他のツールを監査に使用することです。

于 2015-01-29T04:03:09.777 に答える