0

使用:Postgres 9、CentOS 7、Postgres 数据目录不在默认位置,但使用 RSync 确保权限正确。是的,适当的 .config 文件已更改。

当我尝试以非超级用户 (Testuser) 身份查询包含加密项目的视图时,我收到此错误:

错误:必须是超级用户才能读取文件上下文:PL/pgSQL 函数 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

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 回答
0

我发现了这个问题。我需要授予用户功能权限。

将 SCHEMA xxxxx 中的所有功能授予 yyyyyyyyy 执行;

于 2016-09-26T20:29:32.707 回答