0

SQLServer2008でアプリケーションユーザーを一意に識別するさまざまな方法を探しています。

この問題の背景を説明します。使用しているASP.NET4WebアプリケーションはSQLServer2008データベースを使用しており、アプリケーションからデータベースへのすべての接続に対して1つのSQLServerログインとDBユーザーがあります。

私たちは、ユーザーがアプリケーションを介して独自のレポートを作成および実行できるCrystalReportsを使用したレポートソリューションを開発しています。Crystalレポートは、ビューからのデータのみを返すことができます。各アプリケーションユーザーは、サーバーへの独自のログインを持ちます。次に、ビューはSELECT SYSTEM_USER()を使用して、ログインしているユーザーを検索し、ビューから返されるデータを制限します。

  • アプリケーションユーザーごとに個別のログインユーザーとDBユーザーを作成するのは悪い習慣ですか?これは、最大80のデータベースでDBあたり1000を超えるユーザーを意味します(各ログインの作成は、手動ではなくT-SQLを介して処理されます)
  • DBのビューでユーザーを識別する方法は他にありますか?
  • ワークステーションIDにユーザーIDを含めるように接続文字列を変更することを検討しました。SELECTHOST_NAME()を使用してIDを取得できますが、これはワークステーションIDの悪用のようです。

ユーザーを一意に識別する方法に関するその他の提案をいただければ幸いです。どうもありがとう

4

3 に答える 3

0

Y は、msql 2008 を使用する場合、外部データベース、ファイル、またはその他のリソースを使用して、任意のデータへのユーザー アクセスを保存できます

これにより、パフォーマンスとセキュリティ上の理由から、データと監査要素を混在させないように変更できます。SQLサーバーでプロファイラーを使用し、プロファイラーには(アプリケーション、ユーザー、およびホスト)に関する情報があります。そのような情報は、監査によって、または特定のデータベース オブジェクトのカスタム トリガーから簡単に取得できます。

あなたのアプリケーションは、独自のユーザーテーブルを持ち、同じ接続文字列をすべてのユーザーと共有することも、Windows認証タイプのみのパブリック権限を持つユーザーに与えることもできます。そして、コマンドとして実行されるストアドプロシージャで使用します(dbで別のユーザーとして実行)。したがって、y は任意のユーザーをログに記録し、最小限の権限を与えることができます。

ここに初めて投稿して、実際に英語を学んでいます笑。

于 2012-08-22T20:27:11.810 に答える
0

SQL 認証の代わりに Windows 認証を使用することを検討しましたか? これにより、少なくとも管理が必要なログインとユーザーの数を減らすことができます。

于 2012-08-22T20:22:01.817 に答える
0

思いついた解決策は次の 2 つです。

  1. Crystal レポートが実行される前に、レポート (およびサブレポート) が生成する SQL を .Net で抽出し、SQL を実行して結果をデータセットに入れ、データセットからレポートを生成できます。これの利点は、SQL があるため、SQL を実行する前に、SQL の実行中にユーザーを識別するために使用できるユーザー情報を SQL サーバー セッションに提供できることです。

  2. アプリケーション ユーザーに動的に割り当てることができる SQL Server ユーザー ログインの数を制限します。Crystal レポートを実行する直前に、SQL Server ログインをアプリケーション ユーザーにマップするテーブルを作成します。クエリの実行が完了すると、ログインが解放されます。明らかにこれは、混雑時にログインが不足する可能性があることを意味しますが、使用状況に応じてさらに追加することができます。

于 2012-08-28T07:47:17.827 に答える