Spec-Zone.ru › Ansible

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

Примечание

Этот модуль является частью коллекции community.postgresql (версия 3.6.1).

Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не включена в ansible-core. Чтобы проверить, установлена ли она, запустите ansible-galaxy collection list.

Для установки используйте: ansible-galaxy collection install community.postgresql. Вам потребуются дополнительные требования для использования этого модуля, см. Требования для получения подробной информации.

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

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

Краткое описание

  • Создает, изменяет или удаляет пользователя (роль) из экземпляра сервера PostgreSQL («кластер» в терминологии PostgreSQL) и, при необходимости, предоставляет пользователю доступ к существующей базе данных или таблицам.
  • Пользователь — это роль с привилегией входа.
  • Вы также можете использовать его для предоставления или отзыва прав пользователя в конкретной базе данных.
  • Вы не можете удалить пользователя, пока у него все еще есть какие-либо предоставленные ему привилегии в любой базе данных.
  • Установите fail_on_user в false чтобы заставить модуль игнорировать ошибки при попытке удалить пользователя. В этом случае модуль сообщает об изменениях, как обычно, и отдельно сообщает, был ли удален пользователь или нет.
  • ПРЕДУПРЕЖДЕНИЕ Опция priv была устарела и будет удалена в community.postgresql 4.0.0. Пожалуйста, используйте модуль community.postgresql.postgresql_privs вместо этого.

Требования

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

  • psycopg2 >= 2.5.1

Параметры

Параметр

Комментарии

ca_cert

aliases: ssl_rootcert

string

Указывает имя файла, содержащего сертификат(ы) центра сертификации (CA).

Если файл существует, проверяет, что сертификат сервера подписан одним из этих центров.

comment

string

added in community.postgresql 0.2.0

Добавляет комментарий к пользователю (эквивалентно оператору COMMENT ON ROLE).

Чтобы сбросить комментарий, передайте пустую строку.

configuration

dictionary

added in community.postgresql 3.5.0

Параметры конфигурации, специфичные для роли, которые в противном случае устанавливаются с помощью ALTER ROLE user SET variable TO value;.

Принимает словарь, где ключ — это имя параметра конфигурации. Если ключ содержит специальные символы, такие как . и -, его необходимо заключить в кавычки, чтобы YAML был валидным.

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

Удаляет любой параметр из пользователя, который не указан здесь.

Параметры, присутствующие в базе данных, но не включенные в этот список, будут только сброшены, если reset_unspecified_configuration=true.

Входы в user, а также ключи и значения в этом параметре заключаются в кавычки модулем. Если вам необходимо, чтобы пользователь содержал ", вам нужно удвоить его, иначе модуль выдаст ошибку. " и ' не допускаются в ключах конфигурации, и любые ' в значении конфигурации будут экранированы этим модулем. Кроме того, параметры и значения проверяются, если trust_input является false.

Default: {}

conn_limit

integer

Указывает лимит подключений пользователя (роли).

connect_params

dictionary

added in community.postgresql 2.3.0

Любые дополнительные параметры, которые необходимо передать в libpg.

Эти параметры имеют приоритет.

Default: {}

db

aliases: login_db

string

Имя базы данных для подключения и где предоставляются права пользователя.

Default: ""

encrypted

boolean

Хранится ли пароль в базе данных в хешированном виде.

Вы можете указать нехешированный пароль, и PostgreSQL гарантирует, что хранимый пароль будет хеширован, когда установлен параметр encrypted=true. Если вы указываете хешированный пароль, модуль использует его как есть, независимо от настройки encrypted.

Примечание: Postgresql 10 и новее не поддерживают нехешированные пароли.

До Ansible 2.6 это было false по умолчанию.

Choices:

  • false
  • true ← (default)

expires

string

Дата истечения срока действия пароля пользователя.

Если установлено значение 'infinity', пароль пользователя никогда не истекает.

Обратите внимание, что это значение должно быть допустимым типом даты и времени SQL.

fail_on_user

aliases: fail_on_role

boolean

Если true, происходит сбой, когда пользователя (роль) невозможно удалить. В противном случае просто регистрирует и продолжает.

Choices:

  • false
  • true ← (default)

login_host

aliases: host

string

Хост, на котором работает база данных.

Если у вас возникли проблемы с подключением при использовании localhost, попробуйте использовать 127.0.0.1 вместо этого.

Default: ""

login_password

string

Пароль, который должен использовать этот модуль для установления своего сеанса PostgreSQL.

Default: ""

login_unix_socket

aliases: unix_socket

string

Путь к сокету домена Unix для локальных подключений.

Default: ""

login_user

aliases: login

string

Имя пользователя, которое должен использовать этот модуль для установления своего сеанса PostgreSQL.

Default: "postgres"

name

aliases: user

string / required

Имя пользователя (роли) для добавления или удаления.

no_password_changes

boolean

Если true, не проверяет базу данных на наличие изменений пароля. Если пользователь уже существует, пропускает все проверки, связанные с паролем. Полезно, когда pg_authid недоступен (например, в AWS RDS). В противном случае, вносит необходимые изменения пароля.

Варианты:

  • false ← (по умолчанию)
  • true

password

string

Устанавливает пароль пользователя, до версии 1.4 это было обязательным.

Пароль может быть передан незахешированным или захешированным (MD5-хеш).

Незахешированный пароль автоматически хешируется при сохранении в базу данных, если установлен флаг encrypted, в противном случае он сохраняется в виде обычного текста.

При передаче MD5-хешированного пароля, необходимо сгенерировать его в формате 'str["md5"] + md5[ password + username ]', что в итоге даст 35 символов. Простой способ сделать это — echo "md5`echo -n 'verysecretpasswordJOE' | md5sum | awk '{print $1}'`".

Обратите внимание, что если предоставленная строка пароля уже находится в MD5-хешированном формате, то она используется как есть, независимо от параметра encrypted.

port

алиасы: login_port

integer

Порт базы данных для подключения.

Значение по умолчанию: 5432

priv

string

Этот параметр был устарел и будет удален в community.postgresql 4.0.0. Пожалуйста, используйте модуль community.postgresql.postgresql_privs для предоставления/отзыва прав вместо этого.

Разделенная слешами строка привилегий 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.

Когда priv содержит таблицы, модуль использует схему public по умолчанию. Если необходимо указать другую схему, используйте обозначение schema_name.table_name, например, pg_catalog.pg_stat_database:SELECT.

reset_unspecified_configuration

boolean

добавлено в community.postgresql 3.5.0

Если установлено значение true, параметры конфигурации пользователя по умолчанию будут сброшены, если они не включены в configuration, в противном случае существующие параметры не будут изменены, если они не включены в configuration.

Варианты:

  • false ← (по умолчанию)
  • true

role_attr_flags

string

Строка атрибутов пользователя PostgreSQL в формате: CREATEDB,CREATEROLE,SUPERUSER.

Обратите внимание, что ‘[NO]CREATEUSER’ устарел.

Для создания простой роли для использования её как группы, используйте флаг NOLOGIN.

Полный список поддерживаемых флагов см. в документации к вашей версии PostgreSQL.

Значение по умолчанию: ""

session_role

string

Переключиться на роль сессии после подключения.

Указанная роль сессии должна быть ролью, членом которой является текущий login_user.

Проверка прав для SQL-команд выполняется так, как будто роль сессии была той, которая вошла в систему изначально.

ssl_cert

path

добавлено в community.postgresql 2.4.0

Указывает имя файла клиентского SSL-сертификата.

ssl_key

path

добавлено в community.postgresql 2.4.0

Указывает местоположение секретного ключа, используемого для клиентского сертификата.

ssl_mode

string

Определяет, как ведется согласование сеанса SSL с сервером.

См. https://www.postgresql.org/docs/current/static/libpq-ssl.html для получения дополнительной информации о режимах.

Значение по умолчанию prefer соответствует значению по умолчанию libpq.

Варианты:

  • "allow"
  • "disable"
  • "prefer" ← (по умолчанию)
  • "require"
  • "verify-ca"
  • "verify-full"

state

string

Состояние пользователя (роли).

Варианты:

  • "absent"
  • "present" ← (по умолчанию)

trust_input

boolean

добавлено в community.postgresql 0.2.0

Если false, проверяет, являются ли значения параметров name, password, privs, expires, role_attr_flags, comment, session_role потенциально опасными.

Использование false целесообразно только тогда, когда возможны SQL-инъекции через параметры.

Варианты:

  • false
  • true ← (по умолчанию)

Атрибуты

Атрибут

Поддержка

Описание

check_mode

Поддержка: полная

Может работать в check_mode и возвращать прогноз состояния «изменено» без изменения целевого объекта.

Примечания

Примечание

  • Модуль создает пользователя (роль) с привилегией входа по умолчанию. Используйте NOLOGIN role_attr_flags для изменения этого поведения.
  • Если вы указываете PUBLIC в качестве пользователя (роли), то изменения привилегий применяются ко всем пользователям (ролям). Вы не можете указывать password или 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=true.
  • В некоторых системах (таких как AWS RDS), SUPERUSER недоступен. Это означает, что SUPERUSER и NOSUPERUSER role_attr_flags не следует указывать для сохранения идемпотентности и избежания ошибок InsufficientPrivilege.
  • Аутентификация по умолчанию предполагает, что вы либо входите в систему как, либо используете sudo для учетной записи postgres на хосте.
  • Чтобы избежать ошибки «Peer authentication failed for user postgres», используйте пользователя postgres в качестве become_user.
  • Этот модуль использует psycopg, адаптер базы данных Python PostgreSQL. Вы должны убедиться, что psycopg2 >= 2.5.1 или psycopg3 >= 3.1.8 установлен на хосте перед использованием этого модуля.
  • Если удаленный хост является сервером PostgreSQL (что является случаем по умолчанию), то PostgreSQL также должен быть установлен на удаленном хосте.
  • Для систем на основе Ubuntu установите пакеты postgresql, libpq-dev и python3-psycopg2 на удаленном хосте перед использованием этого модуля.

См. также

См. также

community.postgresql.postgresql_privs

Предоставление или отзыв привилегий на объектах базы данных PostgreSQL.

community.postgresql.postgresql_membership

Добавление или удаление ролей PostgreSQL из групп.

community.postgresql.postgresql_owner

Изменение владельца объекта базы данных PostgreSQL.

PostgreSQL database roles

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

PostgreSQL SASL Authentication

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

Примеры

# This example uses the 'priv' argument which is deprecated.
# You should use the 'postgresql_privs' module instead.
- 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- or SHA256-hashed),
# and grant privilege to create other databases and demote rails from super user status if user exists
# the hash from the corresponding pg_authid entry.
- name: Create rails user, set MD5-hashed password, grant privs
  community.postgresql.postgresql_user:
    name: rails
    password: md59543f1d82624df2b31672ec0f7050460
    # password: SCRAM-SHA-256$4096:zFuajwIVdli9mK=NJkcv1Q++$JC4gWIrEHmF6sqRbEiZw5FFW45HUPrpVzNdoM72o730+;fqA4vLN3mCZGbhcbQyvNYY7anCrUTsem1eCh/4YA94=
    role_attr_flags: CREATEDB,NOSUPERUSER
  # When using sha256-hashed password:
  #environment:
  #  PGOPTIONS: "-c password_encryption=scram-sha-256"

# This example uses the 'priv' argument which is deprecated.
# You should use the 'postgresql_privs' module instead.
- 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: false

# This example uses the 'priv' argument which is deprecated.
# You should use the 'postgresql_privs' module instead.
- name: Connect to test database, remove test user from cluster
  community.postgresql.postgresql_user:
    db: test
    name: test
    priv: ALL
    state: absent

# This example uses the 'priv' argument which is deprecated.
# You should use the 'postgresql_privs' module instead.
- 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: ""

# 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"

# This example uses the 'priv' argument which is deprecated.
# You should use the 'postgresql_privs' module instead.
- name: Create a user, grant SELECT on pg_catalog.pg_stat_database
  community.postgresql.postgresql_user:
    name: monitoring
    priv: 'pg_catalog.pg_stat_database:SELECT'

# Create a user and set a default-configuration that is active when they start a session
- name: Create a user with config-parameter
  community.postgresql.postgresql_user:
    name: appclient
    password: "secret123"
    configuration:
      work_mem: "16MB"

# Make sure user has only specified default configuration parameters
- name: Clear all configuration that is not explicitly defined for user
  community.postgresql.postgresql_user:
    name: appclient
    password: "secret123"
    configuration:
      work_mem: "16MB"
    reset_unspecified_configuration: true

Возвращаемые значения

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

Ключ

Описание

queries

список / элементы=строка

Список выполненных запросов.

Возвращается: успех

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

Авторы

  • Ansible Core Team

Ссылки на коллекцию

  • Система отслеживания ошибок
  • Репозиторий (исходный код)
  • Сообщить об ошибке
  • Связь

© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/community/postgresql/postgresql_user_module.html

Spec-Zone.ru

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