1

このプログラムには、SQLServer2005データベースとSQLServer2005Expressが付属しています。通常、SQLServer2005の独自のインスタンスをクライアントのコンピューターにインストールします。

次に、プログラム内からのみコンテンツを更新する必要があるテーブルをいくつか追加する必要があります。たとえば、Management Studioを使用して、これらのテーブルが直接変更されないようにする必要があります。

どうすればこれを達成できますか?ユーザー権限を設定する必要がありますか?暗号化を使用できますか?SQL Serverインスタンスにアクセスするために独自の「sa」パスワードを設定し、プログラム内からのみ使用することを考えましたが、それによってWindows認証によるアクセスが無効になることはありません。

[編集]私がやろうとしていることのいくつかの説明。プログラムは、時間と出席の​​プログラムです。従業員の時計はタイムレコーダーから収集され、データベースに保存されます。一度収集されると、これらのクロッキングを削除したり、日付と時刻の値を変更したりすることはできません。したがって、ユーザーがデータベース内でこれらの値を直接操作できないようにする方法が必要です。

お客様の大多数はSQLの経験がないため、プログラムのインストール時にこれらのアクセス許可を設定する必要があることに注意してください。

[編集2]ご回答ありがとうございます。このテーマに関連してさらに2つの質問をしたいと思います。

1-Windows認証を介してDBにアクセスするユーザーにSELECT権限のみを付与できますか?

2-ハッシュシステムを介してテーブルを変更から保護することは可能/実行可能ですか?ハッシュ列を追加して各行のハッシュを計算し、行データをハッシュと比較して変更を確認するようなものですか?

4

4 に答える 4

4

誰かがsaレベルのアクセス権を持っている場合、これを防ぐことはできません。ただし、通常のユーザーはアクセスできないようにする必要があります。

たとえば、アプリケーションユーザーにINSERT、UPDATE、DELETE(または、直接SQLの代わりにストアドプロシージャを使用している場合はEXECUTE)へのアクセスのみを許可し、他のユーザーにSELECT(またはno)アクセスのみを許可するなど、許可を介して通常のユーザーから保護することができます。 。

カジュアルユーザーを損なうために他のいくつかのことを行うことができます。おそらく、挿入/更新/削除のトリガーチェックを使用して、これらのアクションがアプリケーションユーザーによってのみ実行されるようにします。私はそれをお勧めしませんが、あなたはそれをすることができます。

于 2010-07-09T12:24:24.997 に答える
3

ローカルのAdministratorsグループのメンバーが、データベースで好きなことをするのを防ぐことはできません。反対の主張はスネークオイルです。この時代では、1人の勇敢なユーザーがデータを変更する方法を見つけるだけで(たとえば、自分の時計の時刻を追加する)、それ以降、Googleは関心のあるすべてのユーザーがハッキングを見つけることを保証します。

ユーザーの大多数は、使用するマシンのAdministratorsグループのメンバーです。最も厳格で厳格な企業が実施するグループポリシー環境でさえ、ユーザーの給与が非常に高い場合、ユーザーのコンピューターに機密データを残すことは夢にも思わないでしょう。

ユーザーがデータを改ざんするインセンティブを持っている場合に、ユーザーのコンピューターに不正開封防止データストアを設定することは、単に問題を求めているだけです。データを一元的に保存し、Webサービスを使用してデータを収集します。

于 2010-07-09T20:03:19.717 に答える
0

データに行レベルでハッシュチェックを追加して、データが変更された場合に毎晩実行される改ざんチェックでデータを検出してアラートを生成できるようにすることができます。

于 2010-07-12T11:00:18.497 に答える
0

Expressの代わりにSQLServerCompact Editionを使用できますか?これはアプリに埋め込まれており、この種のシナリオ向けに設計されています。

于 2010-07-09T20:30:30.383 に答える