Postgresql和Vault。错误:关系示例的权限被拒绝

时间:2018-06-10 13:22:21

标签: postgresql ubuntu psql hashicorp-vault

我在使用Ubuntu 18.04的计算机上为postgresql(9.5.13)生成带有vault(v0.10.1)的动态凭据,但是使用生成的凭据我可以登录并查看表(\ dt),但是我无法从中选择值:

    pgdbdemo=> select * from example;
    ERROR:  permission denied for relation example

如果我使用postgres用户在postgresql上手动授予权限,然后执行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 write database/config/pgdbdemo \ 
    plugin_name="postgresql-database-plugin" \ 
    allowed_roles="readonly" \ 
    connection_url="postgresql://postgres:pgpass@127.0.0.1:5432?sslmode=disable" \ 

如何让select使用这些动态凭据?

1 个答案:

答案 0 :(得分:0)

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

否则,根据official Postgres documentation,它将连接到与用户名同名的数据库,在本例中为postgres