Postgresql и Vault.ОШИБКА: разрешение отклонено для примера отношения - PullRequest
0 голосов
/ 10 июня 2018

Я генерирую динамические учетные данные с хранилищем (v0.10.1) для postgresql (9.5.13) на компьютере с Ubuntu 18.04, но сгенерированные учетные данные я могу войти в систему и увидеть таблицу (\ dt), но яне могу выбрать значения из него:

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

Если я предоставлю разрешения вручную на postgresql с пользователем postgres, а затем выбор будет выполнен.

    pgdbdemo=# GRANT SELECT ON ALL TABLES IN SCHEMA public TO "v-userpass-readonly-0tqxxxxxxxxxxxxxxxxx-1xxxxxxxxx9";
    GRANT

Но я бы хотел, чтобы они были интегрированы со следующей ролью хранилища, которая, похоже, игнорирует оператор 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"

MyКонфигурация базы данных хранилища:

    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 голосов
/ 11 июня 2018

Вы должны указать базу данных, к которой вы подключаетесь, в конфигурации: connection_url="postgresql://postgres:pgpass@127.0.0.1:5432/pgdbdemo?sslmode=disable"

В противном случае, согласно официальной документации Postgres , она подключится к базе данных с тем же именемв качестве имени пользователя, в данном случае postgres

...