community.postgresql.postgresql_membership – Добавление или удаление ролей PostgreSQL из групп
Примечание
Этот плагин входит в коллекцию community.postgresql (версия 1.0.0).
Для его установки используйте: ansible-galaxy collection install community.postgresql.
Для использования в плейбуке укажите: community.postgresql.postgresql_membership.
Обзор
- Добавляет или удаляет роли PostgreSQL из групп (других ролей).
- Пользователи — это роли с привилегием входа (login).
- Группы — это роли PostgreSQL, как правило, без привилегии LOGIN.
- Частный случай использования:
-
- Добавить новую группу (groups) с помощью модуля community.postgresql.postgresql_user с параметром role_attr_flags=NOLOGIN
-
- Наделить их желаемыми привилегиями с помощью модуля community.postgresql.postgresql_privs
-
- Добавить нужных пользователей PostgreSQL в новую группу (groups) с помощью этого модуля
Требования
Нижеперечисленные требования необходимы на хосте, на котором выполняется этот модуль.
- psycopg2
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| ca_cert строка | Указывает имя файла с сертификатами центра сертификации (CA) для SSL. Если файл существует, серверный сертификат будет проверен на подпись одним из этих центров. Псевдонимы: ssl_rootcert | |
| db строка | Имя базы данных для подключения. Псевдонимы: login_db | |
| fail_on_role логическое |
| Если yes, вызывать ошибку, когда группа или целевая роль не существует. Если no, просто выводить предупреждение и продолжать. |
| groups список / элементы=строка / обязательно | Список групп (ролей), которые должны быть предоставлены или отозваны у target_roles. Псевдонимы: group, source_role, source_roles | |
| login_host строка | Хост, на котором работает база данных. | |
| login_password строка | Пароль для аутентификации. | |
| login_unix_socket строка | Путь к Unix-сокету для локальных подключений. | |
| login_user строка | По умолчанию: "postgres" | Имя пользователя для аутентификации. |
| port целое число | По умолчанию: 5432 | Порт базы данных для подключения. Псевдонимы: login_port |
| session_role строка | Переключение на сессионную роль после подключения. Указанная сессионная роль должна быть ролью, членом которой является текущий пользователь login_user. Проверка разрешений для SQL-команд выполняется так, как будто сессионная роль была той, которая первоначально вошла в систему. | |
| ssl_mode строка |
| Определяет, будет ли и с каким приоритетом устанавливаться защищённое SSL TCP/IP-соединение с сервером. См. https://www.postgresql.org/docs/current/static/libpq-ssl.html для получения дополнительной информации о режимах. Значение по умолчанию prefer соответствует значению по умолчанию libpq. |
| state строка |
| Состояние членства.
state=present подразумевает, что groups должны быть предоставлены target_roles.
state=absent подразумевает, что groups должны быть отозваны у target_roles. |
| target_roles список / элементы=строка / обязательно | Список целевых ролей (группы будут предоставлены им). Псевдонимы: target_role, users, user | |
| trust_input логическое добавлено в 0.2.0 от community.postgresql |
| Если no, проверять, являются ли значения параметров groups, target_roles, session_role потенциально опасными.Использование no имеет смысл только в том случае, если возможны SQL-инъекции через параметры. |
Примечания
Примечание
- По умолчанию используется аутентификация, предполагающая вход под учетной записью
postgresна хосте, или подключение через sudo. - Чтобы избежать ошибки «Ошибка аутентификации Peer для пользователя postgres», используйте пользователя postgres в качестве become_user.
- Этот модуль использует psycopg2, адаптер Python для PostgreSQL. Вы должны убедиться, что psycopg2 установлен на хосте перед использованием этого модуля.
- Если удалённый хост является сервером PostgreSQL (что является стандартным случаем), то PostgreSQL также должен быть установлен на удалённом хосте.
- Для систем на основе Ubuntu установите пакеты postgresql, libpq-dev и python-psycopg2 на удалённом хосте перед использованием этого модуля.
- Параметр ca_cert требует как минимум версии Postgres 8.4 и psycopg2 версии 2.4.3.
См. также
См. также
- community.postgresql.postgresql_user
-
Официальная документация модуля community.postgresql.postgresql_user.
- community.postgresql.postgresql_privs
-
Официальная документация модуля community.postgresql.postgresql_privs.
- community.postgresql.postgresql_owner
-
Официальная документация модуля community.postgresql.postgresql_owner.
- Справочник по членству в ролях PostgreSQL
-
Полный справочник по документации членства в ролях PostgreSQL.
- Справочник по атрибутам ролей PostgreSQL
-
Полный справочник по документации атрибутов ролей PostgreSQL.
Примеры
- name: Grant role read_only to alice and bob
community.postgresql.postgresql_membership:
group: read_only
target_roles:
- alice
- bob
state: present
# you can also use target_roles: alice,bob,etc to pass the role list
- name: Revoke role read_only and exec_func from bob. Ignore if roles don't exist
community.postgresql.postgresql_membership:
groups:
- read_only
- exec_func
target_role: bob
fail_on_role: no
state: absent
Возвращаемые значения
Общие возвращаемые значения документированы здесь, следующие поля уникальны для этого модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| granted словарь | если state=present | Словарь предоставленных групп и ролей. Пример: {'ro_group': ['alice', 'bob']} |
| queries строка | всегда | Список выполненных запросов. Пример: ['GRANT "user_ro" TO "alice"'] |
| revoked словарь | если state=absent | Словарь отозванных групп и ролей. Пример: {'ro_group': ['alice', 'bob']} |
| state строка | всегда | Состояние членства, которое пытались установить. Пример: present |
Авторы
- Andrew Klychkov (@Andersson007)
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/community/postgresql/postgresql_membership_module.html