PostgreSQL DCL(GRANT、REVOKE)
GRANT
https://www.postgresql.jp/document/11/html/sql-grant.html
- GRANT { アクセス権の種類(SELECTなど) } ON [オブジェクト種別(TABLEの場合は省略可)] オブジェクト名 TO ユーザ名(またはロール名) [WITH GRANT OPTION];
- アクセス権の種類
- WITH GRANT OPTION オプションが指定された場合、他のユーザにその権限を与えることができる。
- GRANT ロール名 TO ユーザ名;
ユーザ名としてpublicを使うと、全ユーザに対して権限の付与(あるいはpublicに対して付与した権限の剥奪)を行うことができる。
ある個別ユーザのあるオブジェクトの権限を剥奪しても、publicユーザにあるオブジェクトの権限があれば、ある個別ユーザはあるオブジェクトを操作可能になる。
GRANTやREVOKEによるアクセス権限は、各データベース内にある。
スーパーユーザは特殊なユーザで、アクセス権限がなくても、テーブルにアクセスすることができる。
SELECTについては明示的なSELECT文を実行する場合だけでなく、SQLのWHERE句などで参照される場合にも必要になる。
ロールに権限を付与し、そのロールをユーザに付与した場合、その後で ロール に別の権限を追加で付与すれば、ユーザ にもその権限が自動的に付与される。
(権限のコピーではなく、参照を作成している?)
受験対策
https://oss-db.jp/sample/silver_management_01/18_120801
2.28_Silverの例題解説「S2 運用管理 - S2.5 基本的な運用管理作業」
2.33_Silverの例題解説「S2 運用管理 - S2.5 基本的な運用管理作業」
2.40_Silverの例題解説「S2 運用管理 - S2.5 基本的な運用管理作業(テーブル単位の権限)」
2.54_Silverの例題解説「S2 運用管理 - S2.5 基本的な運用管理作業(テーブル単位の権限、GRANT/REVOKE)」
2.70_Silverの例題解説「S2 運用管理 - S2.5 基本的な運用管理作業(テーブル単位の権限、GRANT/REVOKE)」
- テーブル自体を削除(DROP)するのは、テーブルの所有者に限られ、その権限をGRANTで付与することはできない。
2.90_Silverの例題解説「S2 運用管理 - S2.5 基本的な運用管理作業(テーブル単位の権限)」
2.111_Silverの例題解説「S2 運用管理 - S2.5 基本的な運用管理作業(テーブル単位の権限)」
2.126_Silverの例題解説「S2 運用管理 - S2.5 基本的な運用管理作業(データベースロール・ユーザの概念)」
REVOKE
https://www.postgresql.jp/document/11/html/sql-revoke.html
- REVOKE 権限 ON テーブル名 FROM {ユーザ名 | PUBLIC};