設定後、[OK]ボタンをクリックしてダゕログを閉じます。
設定した権限をまとめると、次のようになります。
[データベース エンジンへの接続]ダゕログでは、[認証]で「SQL Server 認証」を選 択し、[ログン]へ「sqlUser01」、[パスワード]へ「P@ssword」と入力して、[接続]
ボタンをクリックします。
6. クエリ エデゖタが表示されたら、「sampleDB」データベースへ接続して、「社員」テーブル を参照する SELECT ステートメントを実行してみましょう。
USE sampleDB SELECT * FROM 社員 WHERE 社員番号 = 2
この操作は成功し、sqlUser01 ユーザーが、社員テーブルに対して「選択」権限を持ってい ることを確認できます。
7. 次に、INSERT ステートメントを実行して、データを追加してみましょう。
INSERT INTO 社員
VALUES (7, '山田 花江', 700000, '1985/04/01')
2
3 1
ることを確認できます。sqlUser01 ユーザーには、直接、挿入権限が許可されていませんが、
public ロールに対しては挿入権限が許可されているためです。
8. 次に、UPDATE ステートメントを実行してみましょう。
UPDATE 社員
SET 給与 = 400000 WHERE 社員番号 = 3
この操作は失敗し、sqlUser01 ユーザーは、「更新」権限が拒否されていることを確認できま す。オブジェクト権限は、次のように設定していました。
public ロールに対しては、更新権限を「許可」していますが、sqlUser01 ユーザーに対して は「拒否」しています。「拒否」は、「許可」よりも優先されるので、sqlUser01 ユーザーは、
UPDATE ステートメントが失敗しています。
Note: public ロールで拒否を設定した場合は、すべてのユーザーが拒否される
public ロールに対して権限を拒否した場合は、すべてのデータベース ユーザーが拒否されることに注意する必要 があります。これは次のような状況です。
public ロールに対しては、選択権限を「拒否」して、sqlUser01 ユーザーに対しては「許可」していますが、
sqlUser01 ユーザーは SELECT ステートメントを実行することができません(拒否が優先されます)。また、そ の他のすべてのユーザーも SELECT ステートメントを実行することができません。public ロールに対して権限を 設定する場合は、すべてのユーザーへ影響があることに注意するようにしてください。
なお、管理者ゕカウント(sysdamin ロールのメンバーや dbo ユーザー)の場合は例外で、public ロールに対 して「拒否」が設定されていても、関係なくオブジェクトを参照することができます。管理者ゕカウントは、オブ ジェクト権限に関しても、まったく関係なくすべてのオブジェクトを操作することが可能です。
public
sqlUser01 ユーザー
public
sqlUser01 ユーザー
5.4 SQL ステートメントでオブジェクト権限の設定