ASP.NET WebFormsアプリケーションで、エンドユーザーがSQLServerデータベース内の選択された生データを参照できるようにしたいと思います。
ただし、ユーザーのアクセスを制限して、ユーザー名に基づいて一部のデータのみを表示したいと思います。
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])
(セキュリティ上の理由から、このような呼び出しは、これらの関数へのSELECT権限のみが権限を持つSQLユーザーによって実行される可能性があります。)
ただし、このアプローチはエンドユーザーにとって難しすぎる可能性があります。エンドユーザーが選択した生データを閲覧するためのより簡単でユーザーフレンドリーなソリューションが存在するかどうか知りたいですか?