[pgsql-jp: 41097] Re: postgresユーザーのREVOKEについて

Hiroki Kataoka kataoka @ interwiz.jp
2012年 4月 26日 (木) 13:17:59 JST


片岡です。

権限の剥奪は、権限を与えたユーザにしかできません。なので、SET ROLEで権限を与えたユーザに成り代わってREVOKEしてください。

SET ROLE dbaccount_operator;
REVOKE SELECT ON ALL TABLES IN SCHEMA scm FROM zzz_test_user;
RESET ROLE;

2012年4月26日12:28 YAMAMURA Shingo <ymrsong @ gmail.com>:
> はじめまして。山村と申します。
> postgresユーザーのREVOKEの使い方について質問させてください。
>
> スーパーユーザーのpostgresが、ほかのアカウントで作成した別ユーザーのテーブルアクセス権限を
> 取り上げたいのですが、そのような事はできますでしょうか?
>
> http://www.postgresql.jp/document/9.1/html/sql-revoke.htmlには「スーパーユーザがGRANTや
> REVOKEコマンドを発行した場合、そのコマンドは、対象のオブジェクトの所有者によって発行され
> たものであるかのように動作します。・・・・ただし、この場合は上述のCASCADEを使用する必要が
> あります。」とあったので、できると仮定して以下の手順を試してみましたがダメでした。
>
> 確認してみた手順(各ステップはpgAdmin1.14.2で接続しなおして実行しています。Postgresは9.1.3):
>
> 1. postgresアカウントで実行
>    CREATE SCHEMA scm;
>    CREATE TABLE scm.tblA(v integer);
>
>    -- dbaccount_operator 追加
>    CREATE ROLE dbaccount_operator WITH PASSWORD 'abc' CREATEROLE LOGIN;
>    GRANT USAGE ON SCHEMA scm TO dbaccount_operator WITH GRANT OPTION;
>    GRANT SELECT ON ALL TABLES IN SCHEMA scm TO dbaccount_operator
> WITH GRANT OPTION;
>
> 2. dbaccount_operatorアカウントで実行
>    -- zzz_test_user 追加
>    CREATE ROLE zzz_test_user WITH PASSWORD '123' LOGIN;
>    GRANT USAGE ON SCHEMA scm TO zzz_test_user;
>    GRANT SELECT ON ALL TABLES IN SCHEMA scm TO zzz_test_user;
>
> 3. postgresアカウントで実行
>    -- zzz_test_user からscmにある全テーブルからSELECT権限を取り上げ。
>    REVOKE SELECT ON ALL TABLES IN SCHEMA scm FROM zzz_test_user CASCADE;
>
> 3番目の手順で"クエリーは、21 ミリ秒で結果なしでうまく帰りました。"とでるのですが、\dpコマンド確認して
> みると取り上げられていませんでした。
> 念のため、dbaccount_operator アカウントで3)を実行すれば取り上げることはできたことは確認しました。
>
> ご教授お願い致します。
>



-- 
Hiroki Kataoka


pgsql-jp メーリングリストの案内