RBAC в БД на собеседовании Data Engineer

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Карьерник — Duolingo для аналитиков: 10 минут в день тренируй SQL, Python, A/B, статистику, метрики и ещё 3 темы собеса. 1500+ вопросов в Telegram-боте. Бесплатно.

Зачем разбирать на собесе

DE настраивает access к DWH. На собесе DE: «как разделить дос данных», «зачем roles vs users».

Roles в Postgres

Postgres — нет user / group. Только roles. Role может быть login (user-like) или group.

CREATE ROLE analyst;                       -- GROUP role
CREATE ROLE alice LOGIN PASSWORD '...';    -- login role

GRANT analyst TO alice;                    -- alice inherits analyst's grants

Иерархия roles. Группа можно nest.

GRANT и REVOKE

GRANT SELECT ON schema.TABLE TO analyst;
GRANT SELECT, INSERT, UPDATE ON schema.TABLE TO writer;
GRANT ALL ON SCHEMA marts TO analyst;

REVOKE INSERT ON schema.TABLE FROM writer;

Уровни:

  • Database — GRANT CONNECT ON DATABASE.
  • Schema — GRANT USAGE ON SCHEMA.
  • Table — SELECT/INSERT/UPDATE/DELETE/TRUNCATE/REFERENCES/TRIGGER.
  • Column-level — GRANT SELECT (col1, col2) ON ....
  • Function / sequence.

Row-level security

Filter rows per role.

ALTER TABLE orders ENABLE ROW LEVEL SECURITY;

CREATE POLICY tenant_isolation ON orders
  USING (tenant_id = current_setting('app.tenant_id')::int);

Postgres автоматически добавит WHERE tenant_id = ... к каждому query от non-superuser.

Полезно для multi-tenant DWH.

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Default privileges

Если каждая новая table требует GRANT — забудешь.

ALTER DEFAULT PRIVILEGES IN SCHEMA marts
  GRANT SELECT ON TABLES TO analyst;

Все будущие tables в marts автоматически с SELECT для analyst.

Best practices

1. Разделить read и write users. ETL pipelines пишут от ETL_USER. Аналитики читают как ANALYST.

2. Минимум privileges. App user на DWH — только нужные tables / schemas.

3. PII access — отдельный role. pii_access group для людей с officially approved access.

4. Service accounts с rotated passwords. Не common shared password.

5. Audit logs. Кто и что выполнил — для compliance.

6. Не GRANT ALL без необходимости. Easy to escalate, hard to revoke.

7. Schemas для изоляции. raw, staging, silver, gold — раздельные schemas с разным access.

Связанные темы

FAQ

ClickHouse RBAC?

CH 21+ — поддерживает roles, GRANT, RLS. Отличная mature.

Это официальная информация?

Нет. Статья основана на документации Postgres / ClickHouse.


Тренируйте Data Engineering — откройте тренажёр с 1500+ вопросами для собесов.