0

私は、セキュリティを標準とは少し異なる方法で実装するシステムを検討し始めたところです。

システムのユーザーごとに新しいSQLユーザーを作成します(現在約32Kあります)。各クエリは、最初にSAアカウントを使用している接続を介して送信され(これにとらわれないようにします)、ユーザーが誰であるかがわかった後、各クエリでEXECUTEASUSERが使用されます。

ユーザー数が非常に多い現在、新規ユーザーの作成と切り替えはパフォーマンスに大きな打撃を与えており、同社は状況の改善を検討しています。

いくつかのポイント:-SQLコードは動的SQL(ストアドプロシージャではありません)-元のアイデアは、会社の開発者がアクセス許可について心配するSQLの記述について心配する必要性を軽減し、別のレイヤーにそれについて心配させることでした。

クエリの実行時間を改善し、EXECUTE AS USERコードを回避し、それでも同じセキュリティ監視を取得するにはどうすればよいでしょうか。

SQL Serverは、ユーザーアカウントを格納するためのセッション変数をサポートしていますか?

4

1 に答える 1

0

アプリケーション セキュリティ モデルがどのように機能し、データベース接続をどのように制御および/またはプールするかについて、もう少し詳しく説明しないと、これが役立つかどうかを判断するのは困難です。それはファット クライアントですか、n 層ですか、それとも何か他のものですか?

CONTEXT_INFOSQL 接続は、接続中持続するユーザー構成可能なバイナリ (128) フィールドを使用して、単一の「セッション変数」をサポートできます。これは要件を満たすかもしれませんが、セキュリティ情報を保存するために使用する場合、エンドユーザーがアクセスできることに注意する必要があります。したがって、CONTEXT_INFOユーザーがアクセス許可を改ざんするのを防ぐために、セキュリティ情報を暗号化またはソルトおよびハッシュする必要があります。 ; これは、パフォーマンスに影響を与える可能性があります。

アプリケーション アーキテクチャによっては適用できない場合がありますが、Windows 認証に切り替えて、Active Directory ユーザーとグループを介してアクセス許可を整理することを検討したことはありますか?

于 2011-07-07T07:56:58.907 に答える