Spec-Zone.ru › Ansible

community.postgresql.postgresql_privs модуль – Предоставление или отозвaние прав на объекты базы данных PostgreSQL

Примечание

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

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

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

Для использования в книге задач укажите: community.postgresql.postgresql_privs.

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

Описание

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

Требования

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

  • psycopg2 >= 2.5.1

Параметры

Параметр

Комментарии

ca_cert

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

строка

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

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

connect_params

словарь

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

Дополнительные параметры, которые будут переданы в libpg.

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

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

database

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

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

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

fail_on_role

логический тип

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

Варианты:

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

grant_option

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

логический тип

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

Установите false для отзыва GRANT OPTION, оставьте неопределенным, чтобы не вносить изменений.

grant_option действует только, если state present.

Варианты:

  • false
  • true

login_host

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

строка

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

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

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

login_password

строка

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

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

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, двоеточия (":") в именах объектов будут заменены запятыми (необходимо для указания подписей, см. примеры).

password

строка

Пароль для аутентификации.

Этот параметр устарел и будет удален в community.postgresql 4.0.0, используйте вместо него параметр login_password.

Взаимоисключающие с login_password.

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

port

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

целое число

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

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

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.

схема

строка

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

Может быть предоставлена только если type равно table, sequence, function, procedure, type, или default_privs. По умолчанию public в этих случаях.

Обратите внимание, для встроенных типов, когда type=type, схема может быть pg_catalog или information_schema соответственно.

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

роль_сессии

строка

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

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

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

ssl_cert

путь

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

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

ssl_key

путь

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

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

ssl_mode

строка

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

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

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

Варианты:

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

состояние

строка

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

Варианты:

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

целевые_роли

строка

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

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

доверять_ввод

логическое

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

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

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

Варианты:

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

тип

строка

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

Выбор 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).
  • По умолчанию аутентификация предполагает, что вы либо входите в систему как, либо используете 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_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:
    database: 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:
    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:
    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:
    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:
    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:
    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:
    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:
    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:
    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:
    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:
    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:
    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:
    db: test
    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:
    db: test
    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:
    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:
    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:
    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
    db: acme

- name: Alter default privileges grant usage on schemas to datascience
  community.postgresql.postgresql_privs:
    database: 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:
    database: 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:
    database: 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–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/community/postgresql/postgresql_privs_module.html

Spec-Zone.ru

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