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

Takahiro Itagaki itagaki.takahiro @ oss.ntt.co.jp
2010年 3月 24日 (水) 14:46:25 JST


恒住 武男 <tsunezumi @ efficlabo.com> wrote:

> 正式な方法があればよいのですが、
> Oracleのwrapのような機能はないみたいですね。

代案として思いついたものをお知らせしておきます。スーパーユーザにさえも
見せたくないならば、こういったアクセス制限以外の方式が必要になります。

・暗号化したスクリプトを、普通のテーブル or 外部ファイルで用意しておき、
  PL/pgSQL で読み込み、復号して動的SQLとして実行する。
・「暗号化したスクリプトを実行する PL」を自作する。
  PL/pgSQL をコピペして改変すれば、改造量自体は多くは無いとは思います。

> 必ずテーブル単位でしか権限を与えれないのでしょうか?
> 全テーブルのSELECT権限や特定のスキーマのテーブルのSELECT権限を特定のユーザに
> 与えることはできないのでしょうか?

9.0 をお楽しみに :-)
    http://lets.postgresql.jp/documents/technical/9.0/1#security
    GRANT/REVOKE ON ALL objects IN SCHEMA

現行バージョンだと、システムカタログに対するクエリを、動的SQLの
GRANT/REVOKE と組み合わせて使うことになります。残念ながら、
GRANT/REVOKE のテーブル名の部分をプレースホルダ ($1 等) にはできません。

    FOR relid IN SELECT oid FROM pg_class ... LOOP
        EXECUTE 'GRANT SELECT ON ' || relid::regclass || ' TO ...';
    END LOOP;

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




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