Spec-Zone.ru › Ansible 2.10

community.general.postgresql_user – Создание, изменение или удаление пользователя (роли) на сервере PostgreSQL

Примечание

Этот плагин входит в коллекцию community.general (версия 1.3.2).

Для его установки используйте: ansible-galaxy collection install community.general.

Для использования в книге задач укажите: community.general.postgresql_user.

  • Описание
  • Требования
  • Параметры
  • Примечания
  • См. также
  • Примеры
  • Возвращаемые значения

Описание

  • Создаёт, изменяет или удаляет пользователя (роль) на сервере PostgreSQL (в терминологии PostgreSQL — «кластер») и, при необходимости, предоставляет пользователю доступ к существующей базе данных или таблицам.
  • Пользователь — это роль с привилегией входа.
  • Также можно использовать для предоставления или отзыва привилегий пользователя в конкретной базе данных.
  • Нельзя удалить пользователя, пока он имеет какие-либо привилегии в любой базе данных.
  • Установите fail_on_user в no чтобы модуль игнорировал ошибки при попытке удаления пользователя. В этом случае модуль, как обычно, сообщает о произошедших изменениях и дополнительно — об удалении или неудалении пользователя.

Требования

Ниже перечислены требования, необходимые на хосте, на котором выполняется этот модуль.

  • psycopg2

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
ca_cert
строка
Указывает имя файла, содержащего сертификат(ы) центра сертификации SSL (CA).
Если файл существует, проверяет, подписан ли сертификат сервера одним из этих центров.

алиасы: ssl_rootcert
comment
строка
добавлен в 0.2.0 community.general
Добавляет комментарий к пользователю (эквивалентно оператору COMMENT ON ROLE).
conn_limit
целое число
Устанавливает лимит подключений для пользователя (роли).
db
строка
Имя базы данных для подключения и предоставления прав пользователю.

алиасы: login_db
encrypted
логическое значение
    Варианты:
  • нет
  • да ←
Указывает, хранится ли пароль в зашифрованном виде в базе данных.
Можно указать незашифрованный пароль, и PostgreSQL гарантирует, что сохраненный пароль будет зашифрован, если задано encrypted=да. Если вы укажете зашифрованный пароль, модуль использует его как есть, независимо от значения encrypted.
Примечание: Postgresql 10 и более поздних версий не поддерживают незашифрованные пароли.
До Ansible 2.6 по умолчанию это было no.
expires
строка
Дата истечения срока действия пароля пользователя.
Если установлено значение 'infinity', пароль пользователя никогда не истекает.
Обратите внимание, что это значение должно соответствовать типу данных SQL даты и времени.
fail_on_user
логическое значение
    Варианты:
  • нет
  • да ←
Если yes, модуль завершается неудачей, если пользователя (роль) нельзя удалить. В противном случае регистрирует ошибку и продолжает работу.

алиасы: fail_on_role
groups
список / элементы=строка
Список групп (ролей), которые необходимо предоставить пользователю.
login_host
строка
Хост, на котором работает база данных.
login_password
строка
Пароль, используемый для аутентификации.
login_unix_socket
строка
Путь к сокету Unix доменной области для локальных соединений.
login_user
строка
Значение по умолчанию:
"postgres"
Имя пользователя, используемое для аутентификации.
name
строка / обязательный
Имя пользователя (роли) для добавления или удаления.

алиасы: user
no_password_changes
логическое значение
    Варианты:
  • нет ←
  • да
Если yes, не проверяет базу данных на изменения пароля. Полезно, когда pg_authid недоступен (например, в AWS RDS). В противном случае производит изменения пароля по мере необходимости.
password
строка
Установите пароль пользователя, до версии 1.4 это было необходимо.
Пароль может быть передан без хеширования или в хешированном виде (MD5-хеширование).
Незашифрованный пароль автоматически хешируется при сохранении в базе данных, если encrypted установлен, в противном случае сохраняется в виде открытого текста.
При передаче MD5-хешированного пароля необходимо сгенерировать его в формате 'str["md5"] + md5[ password + username ]', что составляет всего 35 символов. Простой способ сделать это echo "md5`echo -n 'verysecretpasswordJOE' | md5sum | awk '{print $1}'`".
Обратите внимание, что если предоставленная строка пароля уже имеет формат MD5-хеширования, то она используется как есть, независимо от параметра encrypted.
port
целое число
Значение по умолчанию:
5432
Порт базы данных для подключения.

алиасы: login_port
priv
строка
Строка PostgreSQL привилегий, разделённая слэшами: priv1/priv2, где вы можете определить привилегии пользователя для базы данных (допустимые значения — 'CREATE', 'CONNECT', 'TEMPORARY', 'TEMP', 'ALL'. Например CONNECT ) или для таблицы (допустимые значения — 'SELECT', 'INSERT', 'UPDATE', 'DELETE', 'TRUNCATE', 'REFERENCES', 'TRIGGER', 'ALL'. Например table:SELECT ). Пример комбинированной строки: CONNECT/CREATE/table1:SELECT/table2:INSERT.
role_attr_flags
строка
    Варианты:
  • [NO]SUPERUSER
  • [NO]CREATEROLE
  • [NO]CREATEDB
  • [NO]INHERIT
  • [NO]LOGIN
  • [NO]REPLICATION
  • [NO]BYPASSRLS
Строка атрибутов пользователя PostgreSQL в формате: CREATEDB,CREATEROLE,SUPERUSER.
Обратите внимание, что '[NO]CREATEUSER' устарел.
Чтобы создать простую роль для использования её как группы, используйте флаг NOLOGIN.
session_role
строка
Переключение на сессионную роль после подключения.
Указанная сессионная роль должна быть ролью, членом которой является текущий пользователь login_user.
Проверка разрешений для SQL-команд выполняется так, как будто сессионная роль была той, которая первоначально вошла в систему.
ssl_mode
строка
    Варианты:
  • разрешить
  • отключить
  • предпочитать ←
  • требовать
  • проверить-ca
  • проверить-полностью
Определяет, как происходит согласование сессии SSL с сервером.
См. https://www.postgresql.org/docs/current/static/libpq-ssl.html для получения дополнительной информации о режимах.
Значение по умолчанию prefer соответствует значению по умолчанию libpq.
state
строка
    Варианты:
  • отсутствует
  • наличие ←
Состояние пользователя (роли).
trust_input
логическое значение
добавлен в 0.2.0 community.general
    Варианты:
  • нет
  • да ←
Если no, проверяет, являются ли значения параметров name, password, privs, expires, role_attr_flags, groups, comment, session_role потенциально опасными.
Использование no целесообразно только в случае возможности SQL-инъекций через эти параметры.

Примечания

Примечание

  • Модуль по умолчанию создаёт пользователя (роль) с привилегией входа. Используйте параметр NOLOGIN role_attr_flags, чтобы изменить это поведение.
  • Если вы укажете PUBLIC в качестве пользователя (роли), то изменения привилегий будут применяться ко всем пользователям (ролям). Нельзя указывать пароль или role_attr_flags, когда указан пользователь PUBLIC.
  • Пароли, хешированные с помощью SCRAM-SHA-256 (SASL Authentication), требуют PostgreSQL версии 10 или более поздней. В предыдущих версиях вся хешированная строка используется как пароль.
  • При работе с паролями, хешированными с помощью SCRAM-SHA-256, убедитесь, что вы используете переменную среды PGOPTIONS: "-c password_encryption=scram-sha-256" (см. предоставленный пример).
  • Поддерживает check_mode.
  • По умолчанию аутентификация предполагает, что вы либо входите в систему как, либо используете sudo для postgres учётной записи на хосте.
  • Чтобы избежать ошибки «Ошибка проверки подлинности 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.general.postgresql_privs

Официальная документация модуля community.general.postgresql_privs.

community.general.postgresql_membership

Официальная документация модуля community.general.postgresql_membership.

community.general.postgresql_owner

Официальная документация модуля community.general.postgresql_owner.

Роли базы данных PostgreSQL

Полное руководство по ролям базы данных PostgreSQL.

Аутентификация PostgreSQL SASL

Полное руководство по аутентификации PostgreSQL SASL.

Примеры

- name: Connect to acme database, create django user, and grant access to database and products table
  community.general.postgresql_user:
    db: acme
    name: django
    password: ceec4eif7ya
    priv: "CONNECT/products:ALL"
    expires: "Jan 31 2020"

- name: Add a comment on django user
  community.general.postgresql_user:
    db: acme
    name: django
    comment: This is a test user

# Connect to default database, create rails user, set its password (MD5-hashed),
# and grant privilege to create other databases and demote rails from super user status if user exists
- name: Create rails user, set MD5-hashed password, grant privs
  community.general.postgresql_user:
    name: rails
    password: md59543f1d82624df2b31672ec0f7050460
    role_attr_flags: CREATEDB,NOSUPERUSER

- name: Connect to acme database and remove test user privileges from there
  community.general.postgresql_user:
    db: acme
    name: test
    priv: "ALL/products:ALL"
    state: absent
    fail_on_user: no

- name: Connect to test database, remove test user from cluster
  community.general.postgresql_user:
    db: test
    name: test
    priv: ALL
    state: absent

- name: Connect to acme database and set user's password with no expire date
  community.general.postgresql_user:
    db: acme
    name: django
    password: mysupersecretword
    priv: "CONNECT/products:ALL"
    expires: infinity

# Example privileges string format
# INSERT,UPDATE/table:SELECT/anothertable:ALL

- name: Connect to test database and remove an existing user's password
  community.general.postgresql_user:
    db: test
    user: test
    password: ""

- name: Create user test and grant group user_ro and user_rw to it
  community.general.postgresql_user:
    name: test
    groups:
    - user_ro
    - user_rw

# Create user with a cleartext password if it does not exist or update its password.
# The password will be encrypted with SCRAM algorithm (available since PostgreSQL 10)
- name: Create appclient user with SCRAM-hashed password
  community.general.postgresql_user:
    name: appclient
    password: "secret123"
  environment:
    PGOPTIONS: "-c password_encryption=scram-sha-256"

Значения возврата

Общие значения возврата описаны здесь, а ниже приведены поля, уникальные для данного модуля:

Ключ Возвращаемое значение Описание
queries
список / элементы=строка
всегда
Список выполненных запросов.

Пример:
['CREATE USER "alice"', 'GRANT CONNECT ON DATABASE "acme" TO "alice"']


Авторы

  • Команда разработчиков Ansible

© 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/general/postgresql_user_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API