2016-09-24 111 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)

相关问题