1

ユーザー アクセスを SELECT、INSERT、UPDATE、および DELETE に制限する必要があるため、ユーザーは提供するストアド プロシージャのみを使用してデータを管理する必要があります。

だから、例えば

SELECT * FROM Table1

戻るべき

The SELECT permission was denied on the object 'Table1'

ただし、次のように定義されたストアド プロシージャ SelectTable1 がある場合

CREATE PROCEDURE SelectTable1
AS
BEGIN
    SELECT * FROM Table1
END

(実際のものはフィルタリングとパラメータが含まれているため、上記のように無意味ではありません)

ユーザーはそれを正常に実行し、結果セットを取得する必要があります。

しかし、明らかに、この一連のアクセス許可を実装することに成功していません。誰か特定のチュートリアルを教えてもらえますか? MSDN はあまり役に立ちませんでした。

データベースは SQL Server 2012 で、すべてのオブジェクト (テーブルとストアド プロシージャ) はカスタム スキーマにあります。

4

2 に答える 2

2

Igorのおかげで、適切な MSDN ページにアクセスし、権利リンクをたどることができました。

ただし、提案された所有権チェーンを使用するのは複雑すぎるため、使用しました

WITH EXECUTE AS OWNER

私のストアドプロシージャで、それは非常にうまく機能します。制限付きユーザーを使用してログオンすると、プロシージャのみが表示され、テーブルはまったく表示されず、プロシージャを実行できますが、テーブルから選択することさえできません。

また、この概念はsetuidに非常に似ているため、私にはなじみがありました。

所有権チェーンはより一般的な方法のように思われるため、私が見つけた情報を共有したかっただけなので、Igors の返信を回答としてマークします。

于 2013-09-16T08:15:10.113 に答える