Spec-Zone.ru › Ansible

Модуль community.postgresql.postgresql_privs — предоставление или отзыв привилегий для объектов базы данных PostgreSQL

Примечание

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

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

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

Чтобы использовать модуль в сценарии, укажите: community.postgresql.postgresql_privs.

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

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

  • Предоставление или отзыв привилегий для объектов базы данных PostgreSQL.
  • Этот модуль представляет собой обёртку для большей части функциональности операторов PostgreSQL GRANT и REVOKE с обнаружением изменений (GRANT/REVOKE privs ON type objs TO/FROM roles).

Требования

Следующие компоненты должны быть установлены на узле, на котором выполняется этот модуль.

  • psycopg2 >= 2.5.1

Параметры

Параметр

Комментарии

ca_cert

псевдонимы: ssl_rootcert

строка

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

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

connect_params

словарь

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

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

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

По умолчанию: {}

fail_on_role

логическое значение

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

Варианты:

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

grant_option

псевдонимы: admin_option

логическое значение

Может ли role предоставлять или отзывать указанные привилегии/членство в группах у других пользователей.

Укажите false, чтобы отозвать GRANT OPTION; оставьте параметр неуказанным, чтобы ничего не менять.

grant_option действует только в том случае, если state имеет значение present.

Варианты:

  • false
  • true

login_db

псевдонимы: db, database

строка / обязательный

Имя базы данных для подключения.

Псевдонимы db и database устарели и будут удалены в версии 5.0.0.

login_host

псевдонимы: host

строка

Узел, на котором работает база данных.

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

По умолчанию: ""

login_password

строка

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

По умолчанию: ""

login_port

псевдонимы: port

целое число

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

Псевдоним port устарел и будет удалён в следующем основном выпуске. Вместо него используйте login_port.

По умолчанию: 5432

login_unix_socket

псевдонимы: unix_socket

строка

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

По умолчанию: ""

login_user

псевдонимы: login

строка

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

По умолчанию: "postgres"

objs

псевдонимы: obj

строка

Разделённый запятыми список объектов базы данных, для которых нужно задать привилегии.

Если type имеет значение table, partition table, sequence, function или procedure, вместо этого можно указать специальное значение ALL_IN_SCHEMA, чтобы выбрать все объекты базы данных типа type в схеме, указанной через schema. (Это работает и в PostgreSQL < 9.0.) (ALL_IN_SCHEMA доступен для function и partition table начиная с Ansible 2.8).

Поддержка procedure появилась в PostgreSQL 11 и коллекции community.postgresql 1.3.0.

Поддержка parameter появилась в PostgreSQL 15 и коллекции community.postgresql 3.1.0.

Если type имеет значение database, этот параметр можно не указывать. В этом случае привилегии задаются для базы данных, указанной через database.

Если type имеет значение function или procedure, двоеточия («:») в именах объектов заменяются запятыми (это необходимо для указания сигнатур; см. примеры).

privs

псевдонимы: priv

строка

Разделённый запятыми список привилегий для предоставления или отзыва.

roles

псевдонимы: role

строка / обязательный

Разделённый запятыми список имён ролей (пользователей/групп), для которых задаются разрешения.

Роли PUBLIC, CURRENT_ROLE, CURRENT_USER, SESSION_USER неявно определены в PostgreSQL.

Поддержка неявных ролей CURRENT_USER и SESSION_USER появилась в версии коллекции 3.1.0 и PostgreSQL 9.5.

Поддержка неявной роли CURRENT_ROLE появилась в версии коллекции 3.1.0 и PostgreSQL 14.

schema

строка

Схема, содержащая объекты базы данных, указанные через objs.

Можно указать, только если type имеет значение table, sequence, function, procedure, type или default_privs. В этих случаях по умолчанию используется public.

Обратите внимание: для встроенных типов при type=type значение schema может быть соответственно pg_catalog или information_schema.

Если параметр не указан, используется public. Чтобы не передавать схему, используйте not-specified.

session_role

строка

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

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

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

ssl_cert

путь

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

Имя файла клиентского сертификата SSL.

ssl_key

путь

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

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

ssl_mode

строка

Определяет, будет ли установлено защищённое TCP/IP-подключение SSL к серверу и какой приоритет оно будет иметь.

Дополнительные сведения о режимах см. по адресу https://www.postgresql.org/docs/current/static/libpq-ssl.html.

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

Варианты:

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

state

строка

Если указано present, указанные привилегии предоставляются; если absent — отзываются.

Варианты:

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

target_roles

строка

Список существующих имён ролей (пользователей/групп), для которых задаются разрешения по умолчанию на объекты базы данных, создаваемые ими впоследствии.

Параметр target_roles доступен только с type=default_privs.

trust_input

логическое значение

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

Если указано false, проверить, не являются ли потенциально опасными значения параметров roles, target_roles, session_role, schema.

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

Варианты:

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

type

строка

Тип объекта базы данных, для которого задаются привилегии.

Вариант default_privs доступен начиная с версии 2.7.

Типы объектов foreign_data_wrapper и foreign_server доступны начиная с Ansible 2.8.

Вариант type доступен начиная с Ansible 2.10.

Поддержка procedure появилась в версии коллекции 1.3.0 и PostgreSQL 11.

Поддержка parameter появилась в версии коллекции 3.1.0 и PostgreSQL 15.

table также включает представления и материализованные представления. Начиная с версии коллекции 3.6.0 сюда входят и сторонние таблицы.

Варианты:

  • "database"
  • "default_privs"
  • "foreign_data_wrapper"
  • "foreign_server"
  • "function"
  • "group"
  • "language"
  • "table" ← (по умолчанию)
  • "tablespace"
  • "schema"
  • "sequence"
  • "type"
  • "procedure"
  • "parameter"

Атрибуты

Атрибут

Поддержка

Описание

check_mode

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

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

Примечания

Примечание

  • У параметров, принимающих разделённые запятыми списки (privs, objs, roles), есть псевдонимы в единственном числе (priv, obj, role).
  • Чтобы отозвать только GRANT OPTION для конкретного объекта, задайте для state значение present, а для grant_option — false (см. примеры).
  • Обратите внимание: при отзыве привилегий у роли R у неё всё ещё может оставаться доступ через привилегии, предоставленные любой роли, членом которой является R, в том числе PUBLIC.
  • Обратите внимание: при отзыве привилегий у роли R операция выполняется от имени пользователя, указанного через login_user. Если другой пользователь также предоставил R те же привилегии, R по-прежнему сможет получать доступ к объектам базы данных с их помощью.
  • При отзыве привилегий предполагается RESTRICT (см. документацию PostgreSQL).
  • По умолчанию предполагается, что вы входите в систему как учётная запись postgres на узле или переключаетесь на неё с помощью sudo.
  • Чтобы избежать ошибки «Peer authentication failed for user postgres», используйте пользователя postgres в качестве become_user.
  • Этот модуль использует psycopg — адаптер базы данных PostgreSQL для Python. Перед использованием модуля необходимо убедиться, что на узле установлен psycopg2 >= 2.5.1 или psycopg3 >= 3.1.8.
  • Если удалённый узел является сервером PostgreSQL (что используется по умолчанию), PostgreSQL также должен быть установлен на удалённом узле.
  • В системах на базе Ubuntu перед использованием модуля установите на удалённом узле пакеты postgresql, libpq-dev и python3-psycopg2.

См. также

См. также

community.postgresql.postgresql_user

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

community.postgresql.postgresql_owner

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

community.postgresql.postgresql_membership

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

Привилегии PostgreSQL

Общие сведения о привилегиях PostgreSQL.

Справочник по команде PostgreSQL GRANT

Полный справочник по документации команды PostgreSQL GRANT.

Справочник по команде PostgreSQL REVOKE

Полный справочник по документации команды PostgreSQL REVOKE.

Примеры

# On database "library":
# GRANT SELECT, INSERT, UPDATE ON TABLE public.books, public.authors
# TO librarian, reader WITH GRANT OPTION
- name: Grant privs to librarian and reader on database library
  community.postgresql.postgresql_privs:
    login_db: library
    state: present
    privs: SELECT,INSERT,UPDATE
    type: table
    objs: books,authors
    schema: public
    roles: librarian,reader
    grant_option: true

- name: Same as above leveraging default values
  community.postgresql.postgresql_privs:
    login_db: library
    privs: SELECT,INSERT,UPDATE
    objs: books,authors
    roles: librarian,reader
    grant_option: true

# REVOKE GRANT OPTION FOR INSERT ON TABLE books FROM reader
# Note that role "reader" will be *granted* INSERT privilege itself if this
# isn't already the case (since state: present).
- name: Revoke privs from reader
  community.postgresql.postgresql_privs:
    login_db: library
    state: present
    priv: INSERT
    obj: books
    role: reader
    grant_option: false

# "public" is the default schema. This also works for PostgreSQL 8.x.
- name: REVOKE INSERT, UPDATE ON ALL TABLES IN SCHEMA public FROM reader
  community.postgresql.postgresql_privs:
    login_db: library
    state: absent
    privs: INSERT,UPDATE
    objs: ALL_IN_SCHEMA
    role: reader

- name: GRANT ALL PRIVILEGES ON SCHEMA public, math TO librarian
  community.postgresql.postgresql_privs:
    login_db: library
    privs: ALL
    type: schema
    objs: public,math
    role: librarian

# Note the separation of arguments with colons.
- name: GRANT ALL PRIVILEGES ON FUNCTION math.add(int, int) TO librarian, reader
  community.postgresql.postgresql_privs:
    login_db: library
    privs: ALL
    type: function
    obj: add(int:int)
    schema: math
    roles: librarian,reader

# Note that group role memberships apply cluster-wide and therefore are not
# restricted to database "library" here.
- name: GRANT librarian, reader TO alice, bob WITH ADMIN OPTION
  community.postgresql.postgresql_privs:
    login_db: library
    type: group
    objs: librarian,reader
    roles: alice,bob
    admin_option: true

# Note that here "db: postgres" specifies the database to connect to, not the
# database to grant privileges on (which is specified via the "objs" param)
- name: GRANT ALL PRIVILEGES ON DATABASE library TO librarian
  community.postgresql.postgresql_privs:
    login_db: postgres
    privs: ALL
    type: database
    obj: library
    role: librarian

# If objs is omitted for type "database", it defaults to the database
# to which the connection is established
- name: GRANT ALL PRIVILEGES ON DATABASE library TO librarian
  community.postgresql.postgresql_privs:
    login_db: library
    privs: ALL
    type: database
    role: librarian

# Available since version 2.7
# Objs must be set, ALL_DEFAULT to TABLES/SEQUENCES/TYPES/FUNCTIONS
# ALL_DEFAULT works only with privs=ALL
# For specific
- name: ALTER DEFAULT PRIVILEGES ON DATABASE library TO librarian
  community.postgresql.postgresql_privs:
    login_db: library
    objs: ALL_DEFAULT
    privs: ALL
    type: default_privs
    role: librarian
    grant_option: true

# Available since version 2.7
# Objs must be set, ALL_DEFAULT to TABLES/SEQUENCES/TYPES/FUNCTIONS
# ALL_DEFAULT works only with privs=ALL
# For specific
- name: ALTER DEFAULT PRIVILEGES ON DATABASE library TO reader, step 1
  community.postgresql.postgresql_privs:
    login_db: library
    objs: TABLES,SEQUENCES
    privs: SELECT
    type: default_privs
    role: reader

- name: ALTER DEFAULT PRIVILEGES ON DATABASE library TO reader, step 2
  community.postgresql.postgresql_privs:
    login_db: library
    objs: TYPES
    privs: USAGE
    type: default_privs
    role: reader

# Available since version 2.8
- name: GRANT ALL PRIVILEGES ON FOREIGN DATA WRAPPER fdw TO reader
  community.postgresql.postgresql_privs:
    login_db: library
    objs: fdw
    privs: ALL
    type: foreign_data_wrapper
    role: reader

# Available since community.postgresql 0.2.0
- name: GRANT ALL PRIVILEGES ON TYPE customtype TO reader
  community.postgresql.postgresql_privs:
    login_db: library
    objs: customtype
    privs: ALL
    type: type
    role: reader

# Available since version 2.8
- name: GRANT ALL PRIVILEGES ON FOREIGN SERVER fdw_server TO reader
  community.postgresql.postgresql_privs:
    login_db: test
    objs: fdw_server
    privs: ALL
    type: foreign_server
    role: reader

# Available since version 2.8
# Grant 'execute' permissions on all functions in schema 'common' to role 'caller'
- name: GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA common TO caller
  community.postgresql.postgresql_privs:
    type: function
    state: present
    privs: EXECUTE
    roles: caller
    objs: ALL_IN_SCHEMA
    schema: common

# Available since collection version 1.3.0
# Grant 'execute' permissions on all procedures in schema 'common' to role 'caller'
# Needs PostreSQL 11 or higher and community.postgresql 1.3.0 or higher
- name: GRANT EXECUTE ON ALL PROCEDURES IN SCHEMA common TO caller
  community.postgresql.postgresql_privs:
    type: procedure
    state: present
    privs: EXECUTE
    roles: caller
    objs: ALL_IN_SCHEMA
    schema: common

# Available since version 2.8
# ALTER DEFAULT PRIVILEGES FOR ROLE librarian IN SCHEMA library GRANT SELECT ON TABLES TO reader
# GRANT SELECT privileges for new TABLES objects created by librarian as
# default to the role reader.
# For specific
- name: ALTER privs
  community.postgresql.postgresql_privs:
    login_db: library
    schema: library
    objs: TABLES
    privs: SELECT
    type: default_privs
    role: reader
    target_roles: librarian

# Available since version 2.8
# ALTER DEFAULT PRIVILEGES FOR ROLE librarian IN SCHEMA library REVOKE SELECT ON TABLES FROM reader
# REVOKE SELECT privileges for new TABLES objects created by librarian as
# default from the role reader.
# For specific
- name: ALTER privs
  community.postgresql.postgresql_privs:
    login_db: library
    state: absent
    schema: library
    objs: TABLES
    privs: SELECT
    type: default_privs
    role: reader
    target_roles: librarian

# Available since community.postgresql 0.2.0
- name: Grant type privileges for pg_catalog.numeric type to alice
  community.postgresql.postgresql_privs:
    type: type
    roles: alice
    privs: ALL
    objs: numeric
    schema: pg_catalog
    login_db: acme

- name: Alter default privileges grant usage on schemas to datascience
  community.postgresql.postgresql_privs:
    login_db: test
    type: default_privs
    privs: usage
    objs: schemas
    role: datascience

# Available since community.postgresql 3.1.0
# Needs PostgreSQL 15 or higher
- name: GRANT SET ON PARAMETER log_destination,log_line_prefix TO logtest
  community.postgresql.postgresql_privs:
    login_db: logtest
    state: present
    privs: SET
    type: parameter
    objs: log_destination,log_line_prefix
    roles: logtest

- name: GRANT ALTER SYSTEM ON PARAMETER primary_conninfo,synchronous_standby_names TO replicamgr
  community.postgresql.postgresql_privs:
    login_db: replicamgr
    state: present
    privs: ALTER_SYSTEM
    type: parameter
    objs: primary_conninfo,synchronous_standby_names
    roles: replicamgr

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

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

Ключ

Описание

queries

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

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

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

Пример: ["REVOKE GRANT OPTION FOR INSERT ON TABLE \"books\" FROM \"reader\";"]

Авторы

  • Bernhard Weitzhofer (@b6d)
  • Tobias Birkefeld (@tcraxs)
  • Daniele Giudice (@RealGreenDragon)

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

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

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

Spec-Zone.ru

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