Перейти до основного вмісту
Версія: 3.22.0

Управління правами доступу для SQL-сховища

Цей документ надає рекомендації користувачам щодо налаштування та управління правами доступу при використанні SQL-сховища.

Вступ​

Для керування правами доступу Helm використовує функцію RBAC (Role-Based Access Control) Kubernetes. Проте, коли використовується SQL-сховище, ролі Kubernetes не можуть бути використані для визначення, чи може користувач отримати доступ до певного ресурсу. У цьому документі описано, як створювати та керувати такими правами доступу.

Ініціалізація​

При першому підключенні CLI Helm до вашої бази даних клієнт перевірить, чи було її попередньо ініціалізовано. Якщо ні, клієнт автоматично подбає про необхідне налаштування. Для цього ініціалізація потребує адміністративних привілеїв у схемі public або принаймні можливості:

  • створення таблиці;
  • надання привілеїв на схему public.

Після виконання міграції в базі даних всі інші ролі зможуть використовувати клієнт.

Надання привілеїв неадміністративному користувачеві в PostgreSQL​

Для керування правами доступу драйвер SQL-сховища використовує функцію RLS (Row-Level Security) PostgreSQL. RLS дозволяє всім користувачам читати/записувати в одну й ту ж таблицю, але без можливості маніпулювати однаковими рядками, якщо їм це не було явно дозволено. Стандартно будь-яка роль, яка не отримала відповідних привілеїв, завжди отримуватиме порожній список при виконанні команди helm list і не матиме змоги отримати або змінити будь-який ресурс у кластері.

Розглянемо, як надати певній ролі доступ до конкретних просторів імен:

CREATE POLICY <назва> ON releases_v1 FOR ALL TO <роль> USING (namespace = 'default');

Ця команда надасть дозволи на читання та запис всіх ресурсів, які відповідають умові namespace = 'default', для ролі role. Після створення цієї політики користувач, підключений до бази даних від імені ролі role, зможе бачити всі випуски в просторі імен default при виконанні команди helm list, а також змінювати та видаляти їх.

Привілеї можна керувати детально за допомогою RLS, і можливо буде корисним обмежити доступ, залежно від різних стовпців таблиці:

  • key
  • type
  • body
  • name
  • namespace
  • version
  • status
  • owner
  • createdAt
  • modifiedAt