PostgreSQL和Vault。错误:拒绝访问表example的权限。

3
我正在使用Ubuntu 18.04上的vault (v0.10.1)为postgresql (9.5.13)生成动态凭据,但是使用生成的凭据我能够登录并查看表(\dt),但我无法从中选择值。
    pgdbdemo=> select * from example;
    ERROR:  permission denied for relation example

如果我使用postgres用户手动授予权限,然后执行select命令,那么就可以正常工作。
    pgdbdemo=# GRANT SELECT ON ALL TABLES IN SCHEMA public TO "v-userpass-readonly-0tqxxxxxxxxxxxxxxxxx-1xxxxxxxxx9";
    GRANT

但是我希望它们能够与以下的保险库角色集成,尽管创建了具有正确TTL的凭据,但似乎忽略了GRANT语句:

    vault write database/roles/readonly \
    db_name="pgdbdemo" \
    creation_statements="CREATE ROLE \"{{name}}\" WITH LOGIN PASSWORD '{{password}}' VALID UNTIL '{{expiration}}'; \
    GRANT SELECT ON ALL TABLES IN SCHEMA public TO \"{{name}}\";" \
    default_ttl="10m" \
    max_ttl="24h"

我的Vault数据库配置:

    vault write database/config/pgdbdemo \ 
    plugin_name="postgresql-database-plugin" \ 
    allowed_roles="readonly" \ 
    connection_url="postgresql://postgres:pgpass@127.0.0.1:5432?sslmode=disable" \ 

如何使用这些动态凭据使选择器正常工作?

到目前为止,您所做的似乎是正确的;您在配置中分配给Vault的postgres用户是否已启用授予权限? - gic186
应该是,用户是“postgres”,我已经在配置的connection_url部分中使用了它。 - Dtrms
请问您能否展示一下您的秘密引擎配置(数据库/配置文件)的样例? - gic186
1
vault write database/config/pgdbdemo
plugin_name="postgresql-database-plugin"
allowed_roles="readonly"
connection_url="postgresql://postgres:pgpass@127.0.0.1:5432?sslmode=disable" \ 将以上代码翻译为中文: vault write database/config/pgdbdemo
plugin_name="postgresql-database-plugin"
allowed_roles="readonly"
connection_url="postgresql://postgres:pgpass@127.0.0.1:5432?sslmode=disable" \
- Dtrms
1个回答

1

在配置中应指定您要连接的数据库:connection_url="postgresql://postgres:pgpass@127.0.0.1:5432/pgdbdemo?sslmode=disable"

否则,根据官方Postgres文档,它将连接到与用户名相同名称的数据库,在这种情况下为postgres


1
就是这样了!谢谢! - Dtrms

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接