ASP.NETユーザーは、SQL-Serverから選択/制限された生データを参照します
-
19-09-2019 - |
質問
ASP.NET WebFormsアプリケーションでは、エンドユーザーがSQL-Serverデータベースで選択された生データを閲覧できるようにしたいと思います。
ただし、ユーザーがユーザー名に基づいて一部のデータのみを表示するには、ユーザーのアクセスを制限したいと思います。
SQLは必ずしもユーザーに知られているわけではないため、ユーザーが理解できる方法でこれを行う方法がわかりません。
ここにはどのようなオプションがありますか?
これの根拠として、問題のテーブルごとに1つのSQL関数を作成することを検討しました。その関数は、ユーザーが表示できるデータを返す必要があります。
CREATE FUNCTION ufn_RawData_Employee(@username nvarchar(256))
RETURNS TABLE
AS ( SELECT * FROM Employee
WHERE [@username is allowed to view the given Employee] )
Webページでは、エンドユーザーが次にSQLのようなステートメントを入力する場合があります
SELECT Name, HireDate FROM ((Employee))
どこ (([TableName]))
その後、置き換えることができます ufn_RawData_[TableName]([UserName])
データベースを呼び出す前に。 (セキュリティ上の理由から、そのような呼び出しは、その後、SQLユーザーが実行することができます。 それだけ 権限は、これらの機能の選択権限です。)
ただし、このアプローチはエンドユーザーにとっては難しすぎるかもしれません。エンドユーザーが選択した生データを閲覧するためのより簡単な/ユーザーフレンドリーなソリューションが存在するかどうかを知りたいですか?
解決
1つのテーブル、または1つのビュー(おそらくより便利だ)からユーザーデータのみを表示している場合は、そのビューの名前をテーブルに保存して、関数で取得できます。その後、ページにデータを表示し、必要に応じて標準の選択スクリプトに検索機能が組み込まれていることを確認できます。
1つのテーブルまたはビューからデータを取得している場合、ユーザーがSQLを作成する必要はありません。複数の潜在的なテーブル/ビューを提供する必要がある場合は、ドロップダウンから選択させますが、独自のSQLクエリを作成できるようにする価値はありません。