Allegro!

JavaやIT系小ネタ、趣味の話まで。

【SQLserver】権限まわりのクエリを調べてみた

こんにちは、管理人のPaZooです。
最近、DB周りについて調べていて、ユーザー権限を調べることが多いので備忘録としてまとめてみました。

オブジェクトについて

--オブジェクトに読み取り権限を付与する

GRANT SELECT ON オブジェクト名TO ユーザー名またはロール名

--オブジェクトのインサート権限を剥奪する

REVOKE INSERT ON オブジェクト名TO ユーザー名またはロール名

 

--指定したオブジェクトの権限一覧を表示する

SELECT
OBJECT_NAME(major_id) AS オブジェクト
,USER_NAME(grantee_principal_id) AS ユーザー
,permission_name as 権限名
,state_desc as 権限の状態
FROM sys.database_permissions
WHERE major_id = OBJECT_ID('オブジェクト名')

 

--指定したユーザー(ロール)の権限一覧を表示する

SELECT
USER_NAME(grantee_principal_id) AS ユーザー
,OBJECT_NAME(major_id) AS オブジェクト
,permission_name as 権限名
,state_desc as 権限の状態
FROM sys.database_permissions
WHERE grantee_principal_id = USER_ID('ユーザー名またはロール名')

ユーザー個々に権限を設定するのは手間すから考えても実用的ではないです。
なので、グループ単位でDBへのアクセス権限を設定する方法を使って制御することも可能です。


その方法については、愛読書(?)である「@IT」様で紹介されているのでこのブログからリンクを送らせていただきます^^

www.atmarkit.co.jp

まとめ

DB周りはまだまだ自信がありません。。
データの母体なので、もっと勉強せねばです!