Spec-Zone.ru › Ansible 2.10

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

Примечание

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

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

Для использования в плейбуке укажите: 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
строка
    Варианты:
  • [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
строка
    Варианты:
  • allow
  • disable
  • prefer ←
  • require
  • verify-ca
  • verify-full
Определяет, как происходит согласование сессии 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), требуют PostgreSQL версии 10 или новее. В предыдущих версиях вся хэшированная строка используется как пароль.
  • При работе с паролями, хэшированными с использованием SCRAM-SHA-256, убедитесь, что вы используете переменную окружения PGOPTIONS: "-c password_encryption=scram-sha-256" (см. предоставленный пример).
  • Поддерживает 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 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.10/collections/community/postgresql/postgresql_user_module.html

Spec-Zone.ru

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