postgresql_privs - Предоставление или отзыв привилегий на объекты базы данных PostgreSQL.
Описание
- Предоставление или отзыв привилегий на объекты базы данных PostgreSQL.
- Этот модуль в основном является оболочкой вокруг большей части функциональности операторов GRANT и REVOKE PostgreSQL с обнаружением изменений (GRANT/REVOKE привилегии НА тип объекты К/ИЗ роли).
Требования (для хоста, на котором выполняется модуль)
- psycopg2
Параметры
| параметр | обязательно | по умолчанию | значения | комментарии |
|---|---|---|---|---|
| база данных | да | Имя базы данных для подключения. Псевдоним: db
| ||
| grant_option | нет |
| Разрешить ли role предоставлять/отзывать указанные привилегии/группы другим пользователям.Установите в no для отзыва права GRANT OPTION, оставьте без значения, чтобы не вносить изменений.
grant_option действует только если state равен present. Псевдоним: admin_option
| |
| хост | нет | Адрес хоста базы данных. Если не указано, используется сокет Unix. Псевдоним: login_host
| ||
| логин | нет | postgres | Имя пользователя для аутентификации. Псевдоним: login_user
| |
| объекты | нет | Список объектов базы данных, разделенных запятыми, для которых необходимо установить привилегии. Если тип равен table или sequence, вместо этого можно использовать специальное значение ALL_IN_SCHEMA, чтобы указать все объекты базы данных указанного типа в схеме, указанной через schema. (Это также работает с PostgreSQL < 9.0.)Если тип равен database, этот параметр можно опустить, в этом случае привилегии устанавливаются для базы данных, указанной через database.Если тип равен функция, двоеточия (":") в именах объектов будут заменены запятыми (необходимо для указания сигнатур функций, см. примеры) Псевдоним: объект
| ||
| пароль | нет | Пароль для аутентификации. Псевдоним: login_password) | ||
| порт | нет | 5432 | Порт базы данных для подключения. | |
| привилегии | нет | Список привилегий, которые необходимо предоставить/отказать, разделенных запятыми. Псевдоним: привилегия
| ||
| роли | да | Список имен ролей (пользователей/групп), для которых необходимо установить разрешения, разделенных запятыми. Вместо этого можно указать специальное значение PUBLIC, чтобы установить разрешения для неявно определенной группы PUBLIC.Псевдоним: роль
| ||
| схема | нет | Схема, содержащая объекты базы данных, указанные через объекты. Может быть указан только если тип равен table, sequence или function. По умолчанию public в этих случаях. | ||
| ssl_mode (добавлено в 2.3)
| нет | prefer |
| Определяет, будет ли и с какой приоритетностью устанавливаться защищенное SSL TCP/IP-соединение с сервером. См. https://www.postgresql.org/docs/current/static/libpq-ssl.html для получения дополнительной информации о режимах. Значение по умолчанию prefer соответствует значению по умолчанию libpq. |
| ssl_rootcert (добавлено в 2.3)
| нет | Указывает имя файла, содержащего сертификаты центра сертификации (CA). Если файл существует, сертификат сервера будет проверен на подпись одним из этих центров. | ||
| состояние | нет | present |
| Если present, указанные привилегии предоставляются, если absent они отзываются. |
| тип | нет | таблица |
| Тип объекта базы данных, для которого необходимо установить привилегии. |
| unix_socket | нет | Путь к сокету Unix для локальных подключений. Псевдоним: login_unix_socket
|
Примеры
# On database "library":
# GRANT SELECT, INSERT, UPDATE ON TABLE public.books, public.authors
# TO librarian, reader WITH GRANT OPTION
- postgresql_privs:
database: library
state: present
privs: SELECT,INSERT,UPDATE
type: table
objs: books,authors
schema: public
roles: librarian,reader
grant_option: yes
# Same as above leveraging default values:
- postgresql_privs:
db: library
privs: SELECT,INSERT,UPDATE
objs: books,authors
roles: librarian,reader
grant_option: yes
# 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).
- postgresql_privs:
db: library
state: present
priv: INSERT
obj: books
role: reader
grant_option: no
# REVOKE INSERT, UPDATE ON ALL TABLES IN SCHEMA public FROM reader
# "public" is the default schema. This also works for PostgreSQL 8.x.
- postgresql_privs:
db: library
state: absent
privs: INSERT,UPDATE
objs: ALL_IN_SCHEMA
role: reader
# GRANT ALL PRIVILEGES ON SCHEMA public, math TO librarian
- postgresql_privs:
db: library
privs: ALL
type: schema
objs: public,math
role: librarian
# GRANT ALL PRIVILEGES ON FUNCTION math.add(int, int) TO librarian, reader
# Note the separation of arguments with colons.
- postgresql_privs:
db: library
privs: ALL
type: function
obj: add(int:int)
schema: math
roles: librarian,reader
# GRANT librarian, reader TO alice, bob WITH ADMIN OPTION
# Note that group role memberships apply cluster-wide and therefore are not
# restricted to database "library" here.
- postgresql_privs:
db: library
type: group
objs: librarian,reader
roles: alice,bob
admin_option: yes
# GRANT ALL PRIVILEGES ON DATABASE library TO librarian
# 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)
- postgresql_privs:
db: postgres
privs: ALL
type: database
obj: library
role: librarian
# GRANT ALL PRIVILEGES ON DATABASE library TO librarian
# If objs is omitted for type "database", it defaults to the database
# to which the connection is established
- postgresql_privs:
db: library
privs: ALL
type: database
role: librarian
Примечания
Примечание
- Аутентификация по умолчанию предполагает, что postgresql_privs выполняется пользователем
postgresна удаленном хосте. (Ansible’suserилиsudo-user). - Этот модуль требует наличия пакета Python psycopg2 на удаленном хосте. В случае, когда удаленный хост также является сервером PostgreSQL, PostgreSQL также должен быть установлен там, очевидно. Для систем на базе Debian/Ubuntu установите пакеты postgresql и python-psycopg2.
- Параметры, принимающие списки, разделенные запятыми (привилегии, объекты, роли), имеют имена псевдонимов в единственном числе (привилегия, объект, роль).
- Чтобы отозвать только
GRANT OPTIONдля определенного объекта, установите состояние вpresentи grant_option вno(см. примеры). - Обратите внимание, что при отзыве привилегий у роли R, эта роль все еще может иметь доступ через привилегии, предоставленные любой роли, членом которой является R, включая
PUBLIC. - Обратите внимание, что при отзыве привилегий у роли R, это делается как пользователем, указанным в параметре логин. Если R была предоставлена те же привилегии другим пользователем, R все еще может получить доступ к объектам базы данных через эти привилегии.
- При отзыве привилегий предполагается
RESTRICT(см. документацию PostgreSQL). - Параметр ssl_rootcert требует как минимум версию Postgres 8.4 и psycopg2 версию 2.4.3.
Статус
Этот модуль помечен как stableinterface, что означает, что разработчики этого модуля гарантируют, что не будут вноситься несовместимые изменения в интерфейс.
Для получения помощи в разработке модулей, если вы заинтересованы, пожалуйста, прочитайте Community Information & Contributing, Testing Ansible и Developing Modules.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.4/postgresql_privs_module.html