2016-09-24 24 views
0

を照会ビューを実行するには、スーパーユーザーが必要です。Postgresの9、CentOSの7、 Postgresのデータディレクトリではないデフォルトの場所ではなく、権限が正しかったことを確認するためにrsyncを使用します。そして、適切な.configファイルが変更されました。Postgresのpgcryptoの暗号化を使用すると、使用

私はNONスーパーユーザ(testuserを)として、暗号化された項目を含むビューを照会しようとすると、私はこのエラーを取得:

ERROR: must be superuser to read files CONTEXT: PL/pgSQL function decrypt_data(bytea) line 13 at assignment

私はPostgresのスーパーユーザを使用して、同じクエリを実行すると、クエリが正常に完了します。

これは、キーファイルを読み取ろうとしているときに、ファイルシステムの読み取り権限エラーと思われます。私が暗号化を使用して見るすべては、スーパーユーザーでなくても実行する方法については言及していないようです。

私はすでにTESTUSERのために、以下の助成金を実行した:

GRANT ALL PRIVILEGES ON DATABASE xxx_db to Testuser; 
GRANT SELECT ON ALL TABLES IN SCHEMA xxxxx TO Testuser; 
GRANT ALL ON ALL TABLES IN SCHEMA xxxxx TO Testuser; 

テストユーザーは、テーブル、ビュー、基本的にそのDB内の何かを作成することができます。..ちょうど暗号化キーを読み取れません。

今のところ、鍵のパーミッションは775で、私は777でも運が無かった。

すべてのアイデア?

答えて

0

問題が見つかりました。私は関数の権限をユーザーに与える必要があります。

スキーマ内のすべての機能に付与された猶予xxxxxからyyyyyyyyy;

0

pgcryptoは、ここで説明したPostgreSQLの拡張です: https://www.postgresql.org/docs/current/static/pgcrypto.html

が、それはdecrypt_data(bytea)機能を提供していません。

この関数は、pg_read_file()などのサーバーサイドファイルを開くときに発生するカスタムコードのようです。

これらの方法は、読者が読んでいる特定のファイルのUnixの権利に関係なく、通常のユーザがサーバのファイルシステムで読むことを避けるためにスーパーユーザに制限されています。

あなたを得ることができるdecrypt_data(bytea)のソースにこれを確認することができる:PSQL内から

select pg_get_functiondef('decrypt_data(bytea)'::regprocedure); 

又は\df+ decrypt_data(bytea)

関連する問題