6

データベースに監査テーブルがあります。このテーブルへの記録は、トリガーを使用して行われます。

現在、ユーザーがデータベース サーバーにログオンし、管理スタジオからテーブルを開き、監査テーブルのデータを変更することを妨げるものは何もありません。

監査データの改ざんを防止 (または少なくとも検出) できるメカニズムにはどのようなものがありますか?

その行に入力された値に基づいて計算されたハッシュを含む必要がある監査テーブルに1つの列を追加することを考えています。ただし、監査はトリガーを使用して行われるため、悪意のあるユーザーは任意のトリガーを開いて、このハッシュが計算されるロジックを見ることができます。

編集:

私は十分に明確ではありませんでした。アプリケーション ユーザーにはデータベースへのアクセス権がありません。データベースに対する適切な権限を持つDB管理者のようなユーザーを指していました。それでも、この DB 管理者がログインし、監査テーブルを調整する権限を持っている場合、少なくともこの改ざんを検出するメカニズムが必要です。

4

5 に答える 5

9

だれかが SQL マネージャー経由でデータベースにアクセスして内容を変更するのを防ぐことはできません。ただし、改ざんを明らかにすることはできます。

基本的に、キー付きハッシュであるHMACを使用する必要があります。残念ながら、これにより、トリガーでは不可能な可能性があるキーを秘密のままにするために、キー管理が必要になります。キー管理を提供するために暗号化サービスを使用しますが、これはコードからアクセスされます。

また、レコードの内容を変更するのではなく、レコードを削除できるユーザーの能力についても考慮する必要があります。1 つはレコードの内容を使用して計算され (レコードへの変更を明らかにするため)、2 つ目は現在のレコードの HMAC と前の行の HMAC を使用して行削除の改ざんを明らかにします。

次に、最初または最後の x レコードの削除について心配する必要があります。このために、常に同じ内容を持つトレーラとヘッダー レコードを使用します。これらが存在しない場合は、テーブルの上部または下部が削除されます。ヘッダーの結合された HMAC は、前のレコードではなく後のレコードを使用します (前にレコードがないため)。

もちろん、保存するデータ量を管理するために古いレコードを削除する場合は、削除後に新しいヘッダー レコードを追加するメカニズムが必要になります。

于 2011-01-21T10:26:36.863 に答える
2

以下にいくつかの可能性を示します。

  • sysadmin (sa) 権限を持つユーザーによる改ざんを防止または検出することはできません。システム管理者を信頼していない場合は、この特定の問題よりも深刻な問題を抱えている可能性があります。
  • ドメインまたはローカル管理者による改ざんを防止または検出することは困難です。このようなユーザーは、SQL Server をシングル ユーザー モードで再起動し、SQL を使用して sysadmin としてアクセスできます。
  • データベース所有者(dbo)による改ざんを検出するには、SQL Server 2008 でサーバー監査を使用するか、以前のバージョンの SQL Server でサーバー側のSQL トレースを使用できます。
  • 関連するトリガーと監査テーブルへの権限を制限することで、他のユーザーによる改ざんを防ぐことができます。
于 2011-01-21T10:55:38.543 に答える
1

変更の追跡を有効にして、「監査テーブルでの監査」のようなものにすることができます。

インフラストラクチャが適切に管理されている場合、ユーザーには sa 権限がなく、Management Studio を使用して Windows アカウントでログインしているデータベースを確認します。この場合、その監査テーブルにセキュリティを設定できます。sa およ​​びその他の管理アカウントのみがコンテンツを変更できますが、通常のユーザー/開発者アカウントは変更できません。

お役に立てれば。

于 2011-01-21T10:16:25.267 に答える
0
  1. 監査データを独自のスキーマに分離し、関心のあるユーザーがそのスキーマにアクセスできないように権限を設定します。

  2. 別のマシン上にある可能性がある完全に別のデータベースを使用します。

    リレーショナル データベースから監査データを発行し、その監査データを非同期的に監査ストアに書き込むために使用される、ある種の発行/購読モデルをよく見かけます。

    おそらく、トリガーで監査データをキューに書き込むことができます。次に、数分ごとに実行されるスケジュールされたジョブを作成して、キューから監査データを取得し、監査ストアに書き込むことができます。

于 2011-07-01T06:39:58.750 に答える
0

あなたが説明している問題は、システムのアーキテクチャにおけるより深刻な問題を示している可能性があります。通常、ユーザーは、データベースを実行しているマシンに直接アクセスすることさえできません。

データベース マシンがビジネス ロジック マシンから分離され、ビジネス ロジック マシンのみがアクセスできるアーキテクチャを検討することをお勧めします。

ユーザーがクライアント経由ではなくサーバーにアクセスしようとする場合、ユーザーができることは、公開することを決定した明確に定義された Web サービスにアクセスすることだけです。

ユーザーが DB マシンにアクセスできる必要がある、またはデータベースへの書き込みが許可されているアカウントの資格情報を持っている必要があるという理由はありません。監査情報の改ざんを心配されているようですね。悪意のあるユーザーによるテーブルの削除や機能データの改ざんを阻止するにはどうすればよいでしょうか?

于 2011-01-21T10:23:39.343 に答える