Spec-Zone.ru › Ansible 2.11

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

Примечание

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

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

Чтобы использовать его в playbook, укажите: community.postgresql.postgresql_user.

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

Описание

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

Требования

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

  • psycopg2

Параметры

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

Псевдонимы: ssl_rootcert
comment
строка
добавлен в 0.2.0 community.postgresql
Добавляет комментарий к пользователю (эквивалент инструкции 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
строка
    Варианты:
  • [НЕТ]SUPERUSER
  • [НЕТ]CREATEROLE
  • [НЕТ]CREATEDB
  • [НЕТ]INHERIT
  • [НЕТ]LOGIN
  • [НЕТ]REPLICATION
  • [НЕТ]BYPASSRLS
Строка атрибутов пользователя PostgreSQL в формате: CREATEDB,CREATEROLE,SUPERUSER.
Обратите внимание, что '[НЕТ]CREATEUSER' устарел.
Для создания простой роли для использования ее как группы, используйте флаг NOLOGIN.
session_role
строка
Переключиться на роль сессии после подключения.
Указанная роль сессии должна быть ролью, членом которой является текущий login_user.
Проверка разрешений для команд SQL выполняется так, как будто роль сессии была той, которая первоначально вошла в систему.
ssl_mode
строка
    Варианты:
  • разрешить
  • отключить
  • предпочитать ←
  • требовать
  • проверить-ca
  • полная-проверка
Определяет, как происходит согласование сессии SSL с сервером.
См. https://www.postgresql.org/docs/current/static/libpq-ssl.html для получения дополнительной информации о режимах.
Значение по умолчанию prefer соответствует значению по умолчанию libpq.
state
строка
    Варианты:
  • absent
  • present ←
Состояние пользователя (роли).
trust_input
логическое значение
добавлен в 0.2.0 community.postgresql
    Варианты:
  • нет
  • да ←
Если 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" (см. предоставленный пример).
  • В некоторых системах (таких как AWS RDS), pg_authid недоступен, поэтому модуль не может сравнить текущий и желаемый password. В этом случае модуль предполагает, что пароли отличаются, и изменяет его, сообщая, что состояние было изменено. Чтобы пропустить все проверки, связанные с паролем для существующих пользователей, используйте no_password_changes=yes.
  • Поддерживает check_mode.
  • По умолчанию аутентификация предполагает, что вы входите в систему или используете sudo для учётной записи postgres на хосте.
  • Чтобы избежать ошибки «Ошибка аутентификации клиента для пользователя 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_privs

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

community.postgresql.postgresql_membership

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

community.postgresql.postgresql_owner

Официальная документация модуля community.postgresql.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.postgresql.postgresql_user:
    db: acme
    name: django
    password: ceec4eif7ya
    priv: "CONNECT/products:ALL"
    expires: "Jan 31 2020"

- name: Add a comment on django user
  community.postgresql.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.postgresql.postgresql_user:
    name: rails
    password: md59543f1d82624df2b31672ec0f7050460
    role_attr_flags: CREATEDB,NOSUPERUSER

- name: Connect to acme database and remove test user privileges from there
  community.postgresql.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.postgresql.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.postgresql.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.postgresql.postgresql_user:
    db: test
    user: test
    password: ""

- name: Create user test and grant group user_ro and user_rw to it
  community.postgresql.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.postgresql.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–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/collections/community/postgresql/postgresql_user_module.html

Spec-Zone.ru

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