Модуль 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 логическое значение | Если Варианты:
|
grant_option псевдонимы: admin_option логическое значение | Может ли Укажите grant_option действует только в том случае, если state имеет значение Варианты:
|
login_db псевдонимы: db, database строка / обязательный | Имя базы данных для подключения. Псевдонимы |
login_host псевдонимы: host строка | Узел, на котором работает база данных. Если при использовании По умолчанию: |
login_password строка | Пароль, который модуль должен использовать для установки сеанса PostgreSQL. По умолчанию: |
login_port псевдонимы: port целое число | Порт базы данных для подключения. Псевдоним По умолчанию: |
login_unix_socket псевдонимы: unix_socket строка | Путь к доменному сокету Unix для локальных подключений. По умолчанию: |
login_user псевдонимы: login строка | Имя пользователя, которое модуль должен использовать для установки сеанса PostgreSQL. По умолчанию: |
objs псевдонимы: obj строка | Разделённый запятыми список объектов базы данных, для которых нужно задать привилегии. Если type имеет значение Поддержка Поддержка Если type имеет значение Если type имеет значение |
privs псевдонимы: priv строка | Разделённый запятыми список привилегий для предоставления или отзыва. |
roles псевдонимы: role строка / обязательный | Разделённый запятыми список имён ролей (пользователей/групп), для которых задаются разрешения. Роли Поддержка неявных ролей Поддержка неявной роли |
schema строка | Схема, содержащая объекты базы данных, указанные через objs. Можно указать, только если type имеет значение Обратите внимание: для встроенных типов при type=type значение schema может быть соответственно Если параметр не указан, используется |
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. Значение по умолчанию Варианты:
|
state строка | Если указано Варианты:
|
target_roles строка | Список существующих имён ролей (пользователей/групп), для которых задаются разрешения по умолчанию на объекты базы данных, создаваемые ими впоследствии. Параметр target_roles доступен только с |
trust_input логическое значение добавлено в community.postgresql 0.2.0 | Если указано Использовать Варианты:
|
type строка | Тип объекта базы данных, для которого задаются привилегии. Вариант Типы объектов Вариант Поддержка Поддержка
Варианты:
|
Атрибуты
Атрибут | Поддержка | Описание |
|---|---|---|
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 список / элементы=строка | Список выполненных запросов. Возвращается: при успехе Пример: |
Ссылки на коллекцию
© 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