postgresql_user – Добавить или удалить пользователя (роль) из экземпляра сервера PostgreSQL
Описание
- Добавляет или удаляет пользователя (роль) из экземпляра сервера PostgreSQL («кластер» в терминологии PostgreSQL) и, необязательно, предоставляет пользователю доступ к существующей базе данных или таблицам.
- Пользователь — это роль с правом входа.
- Основной функцией модуля является создание или удаление пользователей из экземпляров PostgreSQL. Назначение или удаление привилегий — необязательный шаг, который выполняется для одной базы данных за раз. Это позволяет вызывать модуль несколько раз в том же модуле для изменения разрешений в разных базах данных или для предоставления разрешений уже существующим пользователям.
- Пользователя нельзя удалить, пока от него не будут отозваны все привилегии. В такой ситуации, если модуль пытается удалить пользователя, он завершится ошибкой. Чтобы этого избежать, параметр fail_on_user сигнализирует модулю попытаться удалить пользователя, но если это невозможно, продолжить выполнение; модуль сообщит, были ли внесены изменения и отдельно, был ли удален пользователь или нет.
Требования
Ниже перечислены требования, необходимые на хосте, на котором выполняется этот модуль.
- psycopg2
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| ca_cert строка | Указывает имя файла, содержащего сертификат(ы) SSL-центра сертификации (CA). Если файл существует, сертификат сервера будет проверен на подпись одним из этих центров. псевдонимы: ssl_rootcert | |
| conn_limit целое число добавлено в 2.4 | Указывает предел подключений пользователя (роли). | |
| db строка | Имя базы данных для подключения и где будут предоставлены разрешения пользователя. псевдонимы: login_db | |
| encrypted логическое значение |
| Указывает, хранится ли пароль в зашифрованном виде в базе данных. Пароли могут быть переданы уже зашифрованными или незашифрованными, и PostgreSQL гарантирует, что хранимый пароль будет зашифрован, если encrypted установлен.Примечание: PostgreSQL 10 и более поздние версии не поддерживают незашифрованные пароли. До Ansible 2.6 это было no по умолчанию. |
| expires строка | Дата истечения срока действия пароля пользователя. Если установлено значение 'infinity', пароль пользователя никогда не истекает.Обратите внимание, что это значение должно быть допустимым типом даты и времени SQL. | |
| fail_on_user логическое значение |
| Если yes, при невозможности удаления пользователя (роли) происходит ошибка. Иначе просто регистрируется и выполняется продолжение.псевдонимы: fail_on_role |
| groups список / элементы=строка добавлено в 2.9 | Список групп (ролей), которые нужно предоставить пользователю. | |
| 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, иначе он будет сохранен в открытом формате.При передаче зашифрованного пароля он должен быть сгенерирован в формате '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 строка добавлено в 2.8 | Переключение на session_role после подключения. Указанная session_role должна быть ролью, членом которой является текущий login_user. Проверка разрешений для SQL-команд выполняется так, как если бы session_role была той, которая первоначально вошла в систему. | |
| ssl_mode строка |
| Определяет, будет ли и с какой приоритетностью устанавливаться защищенное SSL-соединение TCP/IP с сервером. См. https://www.postgresql.org/docs/current/static/libpq-ssl.html для получения дополнительной информации о режимах. Значение по умолчанию prefer соответствует значению по умолчанию libpq. |
| state строка |
| Состояние пользователя (роли). |
Примечания
Примечание
- Модуль по умолчанию создаёт пользователя (роль) с правом входа. Используйте роль_attr_flags NOLOGIN для изменения этого поведения.
- Если вы укажете PUBLIC в качестве пользователя (роли), то изменения привилегий будут применяться ко всем пользователям (ролям). При указании пользователя PUBLIC нельзя указывать пароль или роль_attr_flags.
- По умолчанию аутентификация предполагает, что вы входите в систему или используете 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.
См. также
См. также
- postgresql_privs – Предоставление или отзыв привилегий на объекты базы данных PostgreSQL
- Официальная документация модуля postgresql_privs.
- postgresql_membership – Добавление или удаление ролей PostgreSQL из групп
- Официальная документация модуля postgresql_membership.
- postgresql_owner – Изменение владельца объекта базы данных PostgreSQL
- Официальная документация модуля postgresql_owner.
- Роли базы данных PostgreSQL
- Полное руководство по документации ролей базы данных PostgreSQL.
Примеры
- name: Connect to acme database, create django user, and grant access to database and products table
postgresql_user:
db: acme
name: django
password: ceec4eif7ya
priv: "CONNECT/products:ALL"
expires: "Jan 31 2020"
# 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
postgresql_user:
name: rails
password: md59543f1d82624df2b31672ec0f7050460
role_attr_flags: CREATEDB,NOSUPERUSER
- name: Connect to acme database and remove test user privileges from there
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
postgresql_user:
db: test
name: test
priv: ALL
state: absent
- name: Connect to acme database and set user's password with no expire date
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
postgresql_user:
db: test
user: test
password: ""
- name: Create user test and grant group user_ro and user_rw to it
postgresql_user:
name: test
groups:
- user_ro
- user_rw
Значения возврата
Общие значения возврата описаны здесь, следующие — уникальные для этого модуля поля:
| Ключ | Возвращаемое | Описание |
|---|---|---|
| queries список добавлен в 2.8 | всегда | Список выполненных запросов. Пример: ['CREATE USER "alice"', 'GRANT CONNECT ON DATABASE "acme" TO "alice"'] |
Статус
- Данный модуль гарантирует обратную совместимость изменений интерфейса в дальнейшем. [stableinterface]
- Этот модуль поддерживается сообществом Ansible. [community]
Авторы
- Команда Ansible Core
Подсказка
Если вы обнаружите какие-либо проблемы в данной документации, вы можете отредактировать этот документ, чтобы улучшить его.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.9/modules/postgresql_user_module.html