Перейти к основному содержимому
Версия: 3.19.0

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

Этот документ содержит руководство по настройке и управлению правами доступа при использовании SQL в качестве хранилища данных.

Введение

Для управления правами доступа Helm использует функциональность RBAC в Kubernetes. При использовании SQL-хранилища роли Kubernetes не могут использоваться для определения того, имеет ли пользователь доступ к конкретному ресурсу. В этом документе описывается, как создавать и управлять такими правами.

Инициализация

При первом подключении Helm CLI к вашей базе данных клиент проверяет, была ли она ранее инициализирована. Если нет, необходимая настройка выполняется автоматически. Для этой инициализации требуются права администратора на схему public или, как минимум, возможность:

  • создавать таблицы
  • назначать привилегии на схему public

После выполнения миграции в вашей базе данных все остальные роли смогут использовать клиент.

Предоставление привилегий пользователю без прав администратора в PostgreSQL

Для управления правами доступа драйвер SQL-хранилища использует функцию RLS (Row Level Security — безопасность на уровне строк) в PostgreSQL. RLS позволяет всем пользователям читать и записывать данные в одну и ту же таблицу, не имея при этом возможности манипулировать строками, к которым им явно не предоставлен доступ.

По умолчанию любая роль без соответствующих привилегий будет получать пустой список при выполнении helm list и не сможет получить или изменить какой-либо ресурс в кластере.

Рассмотрим, как предоставить роли доступ к определённым namespace:

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

Эта команда предоставляет роли role права на чтение и запись всех ресурсов, соответствующих условию namespace = 'default'. После создания этой политики пользователь, подключённый к базе данных от имени роли role, сможет видеть все релизы в namespace default при выполнении helm list, а также изменять и удалять их.

С помощью RLS привилегии можно настраивать детально. Вы можете ограничивать доступ на основе различных столбцов таблицы:

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