Рецепт 3. А как же без суперпользователя?!

Почему в CloudNativePG у пользователя postgres по умолчанию нет сетевого доступа, как устроен pg_hba и когда стоит включать enableSuperuserAccess.
Опубликовано:

Оригинал: CloudNativePG Recipe 3 — What!?! No superuser access? — 11 марта 2024.

Главный принцип здесь — principle of least authority (PoLA). По умолчанию пользователь postgres не имеет сетевого доступа и пароль у него NULL. enableSuperuserAccess: false — это дефолт оператора.

pg_hba по умолчанию

Правила host-based authentication в кластере CloudNativePG проверяются через pg_hba_file_rules. Дефолт:

Доступ к учётке postgres — только локально через Kubernetes RBAC (kubectl exec).

Когда нужен суперпользователь

Два сценария, в которых стоит включить суперюзера:

  1. Lift-and-shift миграции из монолитных архитектур, где приложение делает что-то, требующее суперпользовательских прав.
  2. Текущие ограничения CloudNativePG в плане декларативного управления некоторыми объектами (foreign servers и т. п.).

Включается через enableSuperuserAccess: true. Оператор создаст отдельный секрет с учёткой суперпользователя. Откатить можно в любой момент.

Команда ALTER SYSTEM

CloudNativePG не рекомендует использовать ALTER SYSTEM: эта команда ломает GitOps-подход и может конфликтовать с управлением через оператор. Файл postgresql.auto.conf по умолчанию закрыт правами на запись. Если очень надо — можно включить через .spec.postgresql.enableAlterSystem.

Вывод

CloudNativePG балансирует жёсткую безопасность по умолчанию и операционную гибкость для тех, кто знает, что делает.

Начать поиск

Введите ключевые слова для поиска статей

↑↓
ESC
⌘K Горячая клавиша