3

Я создаю пользователя PostgreSQL для внутренней панели управления, где я хочу, чтобы доступ пользователя к db по умолчанию был доступен только для чтения.Как пользователь Ansible установить PostgreSQL только для чтения?

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

Так что я думаю, что проще всего это просто для установки:

ALTER USER readuser SET default_transaction_read_only = on; 

Как установить это с использованием модулей Ansible PostgreSQL?

Я не уверен, должен ли я использовать модуль postgresql_privs или postgresql_user. Я попробовал экспериментировать с разными значениями для атрибута priv, но не смог заставить ничего работать.

Я знаю, что это не гарантируется только для чтения, так как пользователь может просто изменить тип транзакции во время выполнения. Тем не менее, это будет очень хорошо для моего usecase, поскольку безопасность не является проблемой, я просто хочу защитить от неосведомленных пользователей, случайно изменяющих данные. Если кто-то знает достаточно, чтобы изменить свою транзакцию, я предпочел бы, чтобы они знали, что они делают, и имеют законную причину.

ответ

0

Я не уверен, должен ли я использовать postgresql_privs или модуль postgresql_user. Я попробовал экспериментировать с разными значениями для атрибута priv, но не смог заставить ничего работать.

ли вы пытались отменить privs ?:

# 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 OPTION для конкретного объекта, установите состояние в настоящее и grant_option на нет (см примеры http://docs.ansible.com/ansible/postgresql_privs_module.html).

Обратите внимание, что при отзыве привилегий от роли R эта роль может оставаться имеет доступ через привилегии, предоставленные любой роли. R является членом , включая PUBLIC.

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

Смежные вопросы