2010年3月23日

[pgsql-jp: 40235] Re:PL/pgSQLのソースコードを見せたくない


恒住 武男 <tsunezumi@xxxxx> wrote:

> データはODBCなど使って見せたいのですが、
> PL/pgSQLのソースコードだけを見せたくない場合
> 方法はありますか?

正式な方法は良くわかりませんが、pg_proc.prosrc の SELECT 権を

REVOKE すると、実行はできてもコードは見えないという状態になりました。
(もちろん、スーパーユーザは依然として閲覧可能です。)

=# REVOKE SELECT ON pg_proc FROM PUBLIC ;

=> SELECT test();
test
------
foo
(1 行)

=> SELECT proname, prosrc FROM pg_proc WHERE proname = 'test';
ERROR: permission denied for relation pg_proc

ただ、これだと \df (関数一覧)も実行できなくなって不便なので、
prosrc, probin 以外の列のみ追加で参照権限を与えると、(v8.4 以降必須)
一覧は見れても、コードにはアクセスできない状態にすることができました。

=# GRANT SELECT (oid, proname, (中略), proacl) ON pg_proc TO PUBLIC;

=> \df
関数一覧
スキーマ | 名前 | 結果のデータ型 | 引数のデータ型 | 型
----------+------+----------------+----------------+----------------
public | test | text | | normal(通常)
(1 行)

=> \df+ test
ERROR: permission denied for relation pg_proc

=> SELECT proname, prosrc FROM pg_proc WHERE proname = 'test';
ERROR: permission denied for relation pg_proc

繰り返しになりますが、私も始めてこのような権限設定を試してみたので、
どこかに穴があったり、逆に機能が動作しなくなってしまうことがあるかもしれません。
お気づきの点や代案ありましたらツッコミしてください。

------------------------------------------------------------
NTT オープンソース ソフトウェア センタ
板垣貴裕 <itagaki.takahiro@xxxxx>

投稿者 xml-rpc : 2010年3月23日 18:26
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/94506
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。