[pgsql-jp: 37362] Re: システムテーブルの権限設定
Takaaki Goto
takaaki.goto @ futurism.ws
2006年 7月 27日 (木) 16:26:22 JST
後藤です。
ご返信ありがとうございます。
> 「システムカタログへのアクセス権を削除して大丈夫なのか?」という不安がよぎりますが、
確かに不安がよぎります。
この考えに至った経緯を申しますと、
システムテーブルにはデータベースやユーザ情報が格納されており、
読取専用ではありますが自分以外にどのようなユーザが在るかを確認できます。
よって、ユーザ自身以外の情報が読み取れる必要があるのか?
ユーザ自身以外の情報は見えない方が良いではないだろうか?
と考えに至ったものです。
> 手段としてはREVOKEコマンドについて、7.4.6のマニュアルで
>
> 個々のユーザはすべて、ユーザに直接許可された権限、ユーザが現在属しているグループに
> 許可された権限、そして、PUBLIC に許可された権限を合わせた権限を持っていることに
> 注意して下さい。従って、例えば、PUBLIC から SELECT 権限を取り上げることは、必ずしも
> そのオブジェクトに対する SELECT 権限をすべてのユーザが失うことを意味しません。直接、
> あるいは、グループ経由で許可されたユーザは、その権限を持ち続けます。
>
> と書いてあります。
> ですのでご所望の事を実現するには特定のユーザ名だけでなく、そのユーザが属するグループ、
> PUBLICすべてを対象にしてSELECT権限削除をしなければならないのではないでしょうか。
引用くださいましてありがとうございます。
ユーザ名、グループ、そしてPUBLIC全てに対して権限設定を行う必要があるとい
うことですね。
早速、試してみました。
REVOKE SELECT ON pg_XXXXX FROM GROUP グループ名 CASCADE
REVOKE SELECT ON pg_XXXXX FROM ユーザ名 CASCADE
REVOKE SELECT ON pg_XXXXX FROM PUBLIC CASCADE
REVOKEと応答され、エラーも無く、コマンドは成功したようです。
しかし、結果は同じでした。テーブルにアクセスできてしまいます。
SELECTだけでなく、ALL PRIVILEGESも試してみましたが同様でした。
システムカタログの権限は設定出来ないものなのか、
指定の仕方が間違っているのか、判りませんが
もっと他に原因があるのかもしれません。
pgsql-jp メーリングリストの案内