2017-01-24 3 views
1

Я хочу заблокировать общедоступную схему в базе данных postgres, используя Ansible. Использования Psql в недавно созданную Postgres установка:Использование postgresql_privs от Ansible для блокировки открытой схемы Postgres

postgres=# REVOKE CREATE ON SCHEMA public FROM PUBLIC; 
REVOKE 
postgres=# REVOKE USAGE ON SCHEMA public FROM PUBLIC; 
REVOKE 

работает в первый раз.

Использование Ansible, хотя я получаю различные ошибки.

- name: Lock down PUBLIC schema 
    postgresql_privs: 
     db: BOB 
     schema: public 
     state: absent 
     privs: CREATE, USAGE 
     objs: public 
     role: PUBLIC 
    become: true 
    become_user: postgres 

Первая ошибка жаловалась, что база данных ЛПП не существует - это не произошло, я не создал его еще - это, кажется, не беспокоит Psql однако. Параметр db: является обязательным с postgresql_privs, поэтому я решил, что, создав BOB первым.

Мое последнее усилие (выше анзибль строфа) получает меня

со смертельным исходом: [hostname.net]: FAILED! => { "Изменил" ложь "не удалось": правда, "сообщение": "Недействительные привилегии, указанные: frozenset ([ 'ИСПОЛЬЗОВАНИЕ'])"}

Я прошел через Ansible documentation и играл с различными параметрами, но не удачей.

Думая, что возможно Недействительные привилегии указано было что-то делать с пользователем, которому принадлежит база данных ЛПП я использовал выше строфу с дополнительной линией

login: fred 

(т.е. пользователь, который я сделал владелец база данных BOB), но это также не сработало:

фатальный: [hostname.net]: FAILED! => { "Изменил" ложь "не удалось": правда, "сообщение": "Не удалось подключиться к базе данных: FATAL: аутентификация Peer Сбой пользователя \" Фрэд \ "\ п"}

ответ

1

Удалить дополнительные пробел в параметре приват для решения первой проблемы. Попробуйте следующие

privs: СОЗДАТЬ С ИСПОЛЬЗОВАНИЕМ

Для решения второй проблемы просто указать параметр хоста явно. Например:

хост: 127.0.0.1

Или исправить файл pg_hba.conf. Согласно официальной PostgreSQL документации на Auth-методах:

Peer Authentication

Метод одноранговой аутентификации работает путем получения имени пользователя системы операционного клиента из ядра и использовать его в качестве разрешенного имя пользователя базы данных (с необязательным сопоставлением имен пользователей). Этот метод поддерживается только локальными подключениями.