コンピュータクワガタ

かっぱのかっぱによるコンピュータ関連のサイトです

データベースの権限。

スキーマを勝手に作られないようにデータベース管理者だけに権限を与えると。
まずは、デフォルト権限からPUBLICの権限をはずす。

template1=# REVOKE ALL PRIVILEGES ON DATABASE test FROM PUBLIC RESTRICT;
REVOKE

権限をはずすと、今回は以下のような権限になっている。

{testadmin=C*T*/testadmin}

testadminはオーナなのでこれはこれでよし。
管理者グループにCTの権限をあたる。GRANT OPTIONは必要なし。

template1=# GRANT ALL PRIVILEGES ON DATABASE test TO GROUP testadmins;
GRANT

そうすると、以下のような権限になる。

{testadmin=**/testadmin,"group testadmins=CT/testadmin"}

データベースに対してtestadminsグループのユーザ以外はCREATE権限を持たないので、SCHEMAを作成しようとしても、以下のようなエラーになる。

test=> CREATE SCHEMA testschema;
ERROR:  permission denied for database test

GRANT OPTIONも制御したい場合には、データベースのオーナをpostgres等にしないといけない。(そこまでやる必要があるかはともかく)