Перейти до основного вмісту
Версія: 4.3.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