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 строка |
| Строка атрибутов пользователя PostgreSQL в формате: CREATEDB,CREATEROLE,SUPERUSER. Обратите внимание, что '[NO]CREATEUSER' устарел. Чтобы создать простую роль для использования её как группы, используйте флаг NOLOGIN. |
| session_role строка | Переключение на сессионную роль после подключения. Указанная сессионная роль должна быть ролью, членом которой является текущий пользователь login_user. Проверка разрешений для SQL-команд выполняется так, как будто сессионная роль была той, которая первоначально вошла в систему. | |
| ssl_mode строка |
| Определяет, как происходит согласование сессии 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-инъекций через эти параметры. |
Примечания
Примечание
- Модуль по умолчанию создаёт пользователя (роль) с привилегией входа. Используйте параметр
NOLOGINrole_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