Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql和Vault。错误:关系示例的权限被拒绝_Postgresql_Ubuntu_Psql_Hashicorp Vault - Fatal编程技术网

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

Postgresql和Vault。错误:关系示例的权限被拒绝,postgresql,ubuntu,psql,hashicorp-vault,Postgresql,Ubuntu,Psql,Hashicorp Vault,我正在使用vault(v0.10.1)在带有Ubuntu 18.04的计算机上为postgresql(9.5.13)生成动态凭据,但使用生成的凭据,我可以登录并查看表(\dt),但无法从中选择值: pgdbdemo=> select * from example; ERROR: permission denied for relation example 如果我使用postgres用户works手动授予对postgresql的权限,然后执行select pgdb

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

    pgdbdemo=> select * from example;
    ERROR:  permission denied for relation example
如果我使用postgres用户works手动授予对postgresql的权限,然后执行select

    pgdbdemo=# GRANT SELECT ON ALL TABLES IN SCHEMA public TO "v-userpass-readonly-0tqxxxxxxxxxxxxxxxxx-1xxxxxxxxx9";
    GRANT
但我希望它们与以下vault角色集成,该角色似乎忽略了GRANT语句,尽管使用正确的TTL创建凭据,等等:

    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" \ 

如何使用这些动态凭据获得select?您应该在配置中指定要连接的数据库:
connection\u url=“postgresql://postgres:pgpass@127.0.0.1:5432/pgdbdemo?sslmode=disable“


否则,根据,它将以与用户名相同的名称连接到数据库,在本例中,
postgres

您迄今为止所做的似乎是正确的;您在配置中分配给Vault的postgres用户已启用授予权限?应该是,该用户是“postgres”,我已在配置的连接url部分使用过它。请向我们展示您的秘密引擎配置示例(database/config/)?Vault write database/config/pgdbdemo\plugin\u name=“postgresql数据库插件”\allowed\u roles=“readonly”\connection\u url=“postgresql://postgres:pgpass@127.0.0.1:5432?sslmode=disable“\就是这样!谢谢!