[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 メーリングリストの案内