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

YAMAMURA Shingo ymrsong @ gmail.com
2012年 4月 26日 (木) 12:28:56 JST


はじめまして。山村と申します。
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)を実行すれば取り上げることはできたことは確認しました。

ご教授お願い致します。


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