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