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

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

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

Вступ

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

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

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

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

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

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

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

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

CREATE POLICY <name> ON releases_v1 FOR ALL TO <role> USING (namespace = 'default');

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

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

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