Skip to content

Управление доступом

Доступ в платформе складывается из четырёх уровней и сужается шаг за шагом: сначала решается, какие разделы вам вообще видны, затем — что вы можете делать с объектами проекта, и в конце — какие строки и какие колонки датасета вы увидите.

УровеньЧто определяетКто настраивает
Тип учётной записиКакие разделы платформы доступныАдминистратор платформы
Роль в проектеЧто можно делать с объектами конкретного проектаАдминистратор проекта
Видимость строк (RLS)Какие строки датасета видит пользовательТот, кто редактирует датасет
Видимость полей (CLS)Какие колонки датасета ему доступныТот, кто редактирует датасет

Тип учётной записи

Задаётся администратором платформы и действует глобально. Разделы, к которым нет доступа, в меню не показываются.

Что видно в меню под разными типами учётных записей:

РазделСоздательИсследовательНаблюдательАдминистратор
Источникиданетнетнет
Датасетыдаданетнет
Виджетыдададанет
Дашбордыдададанет
Уведомлениядададада
Администрированиенетнетнетда

У администратора интерфейс полностью отдельный: разделов с данными у него нет вообще, только управление пользователями, группами, провайдерами входа, типами источников и настройками AI.

Исследователь не работает с подключениями: раздела «Источники» у него нет, а попытка открыть его по прямой ссылке приводит к экрану «Доступ ограничен».

Экран ограниченного доступа

С этого экрана можно запросить доступ у владельца объекта.

Наблюдателю остаются только виджеты, дашборды и уведомления — он смотрит готовые результаты, которыми с ним поделились через проект.

Кнопки создания видны даже там, где действие запрещено

У исследователя в разделе «Датасеты» отображается активная кнопка Создать датасет, но при нажатии появляется ошибка «Не удалось создать датасет. Доступ запрещён». Виджет он создать может, правда строить его будет не на чем, пока ему не открыли доступ к датасету.

У наблюдателя кнопка Создать виджет тоже активна, хотя создание ему запрещено. Пустые списки в его разделах означают не «объектов нет», а «доступ к ним закрыт» — сообщения об этом интерфейс не показывает.

Роль в проекте

Внутри каждого проекта у участника своя роль: Наблюдатель, Редактор или Администратор. Подробнее — в разделе Проекты.

Роль в проекте не расширяет общесистемные права: администратор проекта управляет только этим проектом.

Права на отдельный объект — только через API

Выдать доступ к одному конкретному датасету или источнику через интерфейс нельзя: в меню объекта есть лишь «Открыть», «Редактировать», «Дублировать» и «Удалить», а в карточке пользователя раздела с доступами нет — хотя подсказка при создании учётной записи обещает обратное. Доступ регулируется участием в проекте целиком. Точечная выдача прав пользователю или группе существует в API платформы, но экрана для неё пока нет.

Права на объект — набор из четырёх действий: просмотр, изменение, удаление и управление доступом. Создатель объекта получает все четыре.

Личным объектом поделиться нельзя

Пока объект лежит в личном пространстве, выдать на него права никому нельзя — попытка заканчивается отказом «Нельзя делиться объектами из личного пространства». Сначала перенесите объект вместе со всей его цепочкой в общий проект, см. Проекты.

И ещё: выданное право на просмотр помогает исследователю, но не наблюдателю — тому платформа отвечает отказом даже на объект, к которому доступ явно открыт.

Видимость строк (RLS)

Правила RLS ограничивают строки, которые пользователь видит в датасете. Например, менеджер видит только заказы своего региона, хотя датасет один на всех.

Откройте датасет и нажмите Видимость строк в верхней панели.

Как складываются правила

  • Пока правил нет, датасет виден целиком всем, у кого есть к нему доступ.
  • Правила по одному и тому же полю объединяются по «или»: пользователю доступно объединение значений из всех адресованных ему правил.
  • Правила по разным полям — по «и».
  • Правила вида Выражение не объединяются по «или» ни с чем, даже между собой: каждое такое правило — самостоятельное условие, и все они соединяются по «и».
  • Обхода нет ни у владельца датасета, ни у администратора.
  • Выключенное правило в расчёт не идёт совсем — оно не закрывает данные тем, кому не адресовано.

Первое же правило закрывает данные всем остальным

Как только на поле появилось хотя бы одно правило, действует принцип «запрещено по умолчанию»: пользователь, которому не адресовано ни одно правило по этому полю, не видит ни одной строки — виджеты просто оказываются пустыми.

Владелец датасета — не исключение. Проверено на демо-датасете: после правила «город = Москва», адресованного одному исследователю, диаграмма «Выручка по категориям» у него показала три категории вместо четырёх и суммы вчетверо меньше, а у создателя датасета — пустой результат без единого сообщения об ошибке.

Поэтому вместе с адресными правилами добавляйте правило, адресованное всем: оно задаёт, что видит тот, для кого отдельного правила нет.

Так же закрываются данные, если правило осталось без опоры: у пользователя не заполнен атрибут, на который ссылается правило, либо поле или таблица правила удалены из датасета. Правило при этом продолжает считаться действующим.

Создание правила

Нажмите Новое правило и заполните форму сверху вниз:

Поле формыЧто указать
НазваниеПонятное описание, например «Только свой регион»
Вид правилаАтрибут пользователя, список значений или выражение — см. таблицу ниже
Объект и ПолеТаблица датасета и её колонка, к которым применяется ограничение
УсловиеЗависит от вида: имя атрибута, список разрешённых значений или само выражение
Кому адресованоКому правило предназначено — всем или выбранным пользователям и группам
Правило включеноВыключенное правило сохраняется, но в ограничение не входит

Вид правила задаёт, откуда берутся разрешённые значения:

ВидКак работает
Атрибут пользователяВ условие подставляются значения атрибута учётной записи: поле IN (значения атрибута). У атрибута может быть несколько значений — тогда пользователь видит строки по всем из них. Атрибуты задаёт администратор в карточке пользователя; значения из внешнего провайдера входа обновляются при каждом входе
Список значенийЯвно перечисленные значения, по одному в строке
ВыражениеПроизвольное условие, см. Правило-выражение

Блок Кому адресовано выглядит по-разному. У правила по атрибуту это переключатель Всем: выключите его, чтобы выбрать конкретных пользователей и группы. У правила со списком значений — сразу два списка с флажками, Пользователи и Группы, с кнопками «Выбрать все» и «Сбросить».

Новое правило видимости строк

Переключатель «Правило включено» выключен по умолчанию

Заполнив форму и нажав Готово, вы получите сохранённое, но неработающее правило. Включайте переключатель до сохранения — либо потом прямо в списке правил.

Правило-выражение

Вид Выражение нужен, когда условие сложнее списка значений: несколько полей, «или», разные правила для разных людей одной формулой. Внутри доступны функции, которые платформа подставляет в момент запроса:

ФункцияВо что превращается
USER_NAME()Логин того, кто смотрит
USER_ID()Его идентификатор
IN_GROUP('код')Истина, если пользователь состоит в группе с этим кодом
IN USER_ATTR('имя')Список значений атрибута пользователя

Проверено на демо-датасете: правило, адресованное всем,

sql
[customers.city] = 'Москва' OR USER_NAME() = 'creator'

оставило исследователю только московские продажи, а создателю — все четыре категории целиком.

USER_ATTR пишется только после IN

Атрибут может иметь несколько значений, поэтому сравнивать его на равенство нельзя. Запись [поле] = USER_ATTR('region') платформа отклонит с пояснением, что функция допустима только в позиции IN. Правильно: [поле] IN USER_ATTR('region').

Сохранённые правила перечислены списком: переключатель включения, название, вид, объект и поле, кому адресовано, а справа — корзина для удаления.

Список правил видимости строк

Правила сохраняются сразу

У окна видимости строк нет отдельной кнопки «Применить»: правило вступает в силу в момент создания.

Видимость полей (CLS)

Правила видимости строк прячут строки, но не колонки: кто получил доступ к датасету, видит все его поля. Видимость полей закрывает этот пробел — зарплату, себестоимость или персональные данные больше не нужно выносить в отдельный датасет и дублировать поверх него виджеты.

Закрытое поле исчезает для пользователя целиком: его нет ни в списке полей датасета, ни в данных, ни в подсказках значений при настройке фильтра.

Правила пока задаются через API

Экрана для управления видимостью полей ещё нет — правила создаются запросами к /api/dataset/{id}/cls. Когда появится интерфейс, инструкция будет дополнена.

Проверено на демо-датасете: правило на поле «Сумма заказа», выданное одному создателю, убрало у исследователя два поля из семнадцати — саму сумму и вычисляемое поле «Сумма с НДС», которое на неё ссылается. Виджет, построенный на закрытой мере, ответил исследователю отказом целиком.

Когда поле закрыто

Правило вешается на конкретное поле и перечисляет, кому оно всё-таки видно — пользователей и группы.

СитуацияЧто видит пользователь
Правил на поле нетПоле видно, как обычно
Правило есть, пользователь в спискеПоле видно
Правила есть, пользователь ни в одном не указанПоле закрыто
Правило есть, список пустПоле закрыто для всех

На одно поле можно повесить несколько правил, и они складываются по «или»: у доступа бывают разные основания — руководители подразделения, аудиторы, аналитик на время расследования, — и держать их одним списком неудобно.

Новое правило создаётся выключенным: пока вы его не включите, поле видно всем, как и раньше. Так правило можно спокойно подготовить и обсудить, прежде чем оно начнёт что-то закрывать.

Обхода нет ни у кого

Ни владелец датасета, ни администратор проекта, ни администратор платформы не видят закрытое поле автоматически. Чтобы видеть его, администратор вносит себя в список явно.

Сделано это ради предсказуемости: иначе автор правила проверял бы его под собой, видел все колонки и считал, что всё работает. Режим «смотреть от имени» показывает схему и данные глазами выбранного пользователя — включая отсутствующие колонки.

Поля, которые считаются от закрытых

Закрытость передаётся по ссылкам: вычисляемое поле [Зарплата] * 1 было бы очевидной лазейкой, поэтому оно закрывается вместе с исходным. То же касается групп и бинов, построенных на закрытом поле.

Цепочку можно оборвать намеренно — собственное правило на производном поле отменяет наследование. Так публикуют среднюю зарплату по отделу, не открывая саму зарплату: на поле AVG([Зарплата]) заводится своё правило со своим списком, и дальше по цепочке оно уже ничего не закрывает.

Что происходит с остальными настройками

КонструкцияПоведение
Иерархия, где закрыт хотя бы один уровеньСкрывается целиком: половинчатая иерархия ломает проваливание и выдаёт соседний уровень
Сортировка поля по закрытому полю (настройка датасета)Игнорируется, поле сортируется по себе: порядок строк выдал бы ранжирование скрытой колонки
Фильтры датасета и правила видимости строкМогут ссылаться на закрытые поля: они ограничивают строки, но значений не показывают

Если виджет ссылается на закрытое поле

Виджет не строится — приходит отказ целиком, а не молча урезанная выборка. Проверяются все места, где может встретиться поле: полки категорий, серий и мер, фильтры виджета и дашборда, сортировки, вычисляемые поля виджета, ограничение по значимости, проваливание по иерархии.

Причина в том, что тихо выбросить колонку опаснее, чем отказать: исчезнувшая мера и исчезнувший фильтр дают правдоподобные, но другие числа — и никто не заметит подмены.

Маскирование значений пока не поддерживается

Поле либо видно целиком, либо не видно вовсе. Показ вида «последние четыре цифры» или «звёздочки вместо суммы» — отдельная задача, её ещё не делали.