2016-09-24 110 views
0

使用:Postgres 9,CentOS 7, Postgres數據目錄不在默認位置,但使用RSync確保權限正確。是的。適當的.config文件已更改。使用Postgres PGCrypto加密需要超級用戶才能運行查看查詢

當我試圖查詢包含作爲非超級用戶(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

我發現了這個問題。我需要授予用戶功能權限。

授權執行SCHEMA中的所有功能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)

相關問題