###実現したいこと
PostgreSQLにおいて、システムカタログのpg_procを参照できないように、特定ユーザをREVOKEしたいです。
PosgreSQLのバージョン:9.4.4
###理由
pgcryptoを用いて、対象のカラムを暗号化・復号することになりました。
復号は以下のようなイメージです。
sql
1SELECT id, pgp_sym_decrypt(name,'pass123') FROM test;
しかしこの例ですと、暗号化・復号に用いるパスワード"pass123"がSQLに直接表示されてしまいます。
よって、暗号化時のパスワードを関数に定義し、その関数を用いて復号します。
sql
1CREATE FUNCTION get_password() RETURNS TEXT AS $$ 2 SELECT CAST('pass123' AS TEXT); 3$$ LANGUAGE SQL; 4 5SELECT id, pgp_sym_decrypt(name,get_password()) FROM test;
ただ、PostgreSQLでは関数定義をpg_procシステムビュー経由で参照できてしまうため、特定ユーザの参照権限をREVOKEしておきたいです。
色々試してみたのですが、どうも上手くいかず、またPostgreSQLのメーリスを見ると、「この操作は出来ない」とする回答もありました。
https://www.postgresql.org/message-id/26829.1178722338%40sss.pgh.pa.us
https://www.postgresql.org/message-id/1424231867994-5838367.post%40n5.nabble.com
しかし、公式ドキュメントからその旨の記述が見つけられず、本当に出来ないのかどうか分かりません。
・pg_procをREVOKEする方法
・REVOKE出来ないのであれば、その旨が書いてあるドキュメント
についてご教示頂きたいです。
###試したこと
REVOKEするために、以下の方法は試してみました。
エラーにはなりませんでしたが、REVOKEされていませんでした。
sql
1REVOKE SELECT ON TABLE pg_proc FROM test_user; 2REVOKE ALL PRIVILEGES ON TABLE pg_proc FROM test_user;
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/13 01:40