>_ IzzyLab

Практическое задание

PostgreSQL: read-only пользователь

сложно

Установи PostgreSQL и настрой: базу appdb, таблицу items в ней (любые колонки, минимум одна строка) и пользователя reader с паролем readpass, который может делать SELECT из items, но не может INSERT. Сервер должен принимать TCP-подключения на 127.0.0.1.

Что потренируешь:
  • postgresql
  • роли и grant
  • наименьшие привилегии
  • pg_hba и tcp
  • psql

Разбор темы

Задача про принцип наименьших привилегий: роли выдают ровно право читать таблицу и ничего сверх. Доступ в PostgreSQL многослоен, и одного GRANT SELECT на таблицу мало — чтобы роль вообще дошла до данных, нужны ещё CONNECT на базу и USAGE на схему; право на запись просто не выдаётся. Отдельный слой — сеть: проверка ходит по TCP, поэтому важно, чтобы сервер слушал нужный адрес (listen_addresses), а в pg_hba.conf для входа по паролю был разрешён метод вроде scram-sha-256 или md5.

Что проверяется

  1. база appdb создана
  2. таблица items содержит строки
  3. reader делает SELECT из items по TCP
  4. reader не может делать INSERT

Как это выглядит