0

使用: Postgres 9、CentOS 7、Postgres Data ディレクトリはデフォルトの場所ではありませんが、RSync を使用して権限が正しいことを確認しました。はい、適切な .config ファイルが変更されました。

暗号化されたアイテムを含むビューを非スーパーユーザー (テストユーザー) としてクエリしようとすると、次のエラーが発生します。

エラー: ファイルを読み取るにはスーパーユーザーでなければなりません 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;

テストユーザーは、テーブル、ビュー、基本的にそのデータベース内のすべてのものを作成できます.暗号化キーを読み取ることはできません。

キーのアクセス許可は現在 775 です。777 を試しても運が悪かったです。

何か案は?

4

2 に答える 2

0

問題が見つかりました。ユーザーに機能権限を付与する必要があります。

yyyyyyyyy にスキーマ xxxxx 内のすべての機能に対する実行権限を付与します。

于 2016-09-26T20:29:32.707 に答える
0

pgcryptoここで説明されている PostgreSQL 拡張機能です: https://www.postgresql.org/docs/current/static/pgcrypto.html

しかし、それは機能を提供しませんdecrypt_data(bytea)

pg_read_file()この関数は、または同様の方法で、たまたまサーバー側のファイルを開くカスタム コードのようです。

これらのメソッドはスーパーユーザーに制限されており、通常のユーザーが読み取りたい特定のファイルの Unix 権限に関係なく、サーバーのファイルシステムを読み取れないようになっています。

のソースでこれを確認decrypt_data(bytea)できます。これは次の方法で取得できます。

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

または\df+ decrypt_data(bytea)psql内から。

于 2016-09-24T13:07:14.743 に答える