Skip to content

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

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

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

Откройте датасет и нажмите Видимость данных в верхней панели, затем вкладку Колонки (CLS). На соседней вкладке Строки (RLS) живут правила видимости строк.

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

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

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

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

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

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

Выключенное правило ничего не закрывает

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

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

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

Так сделано ради предсказуемости: иначе автор правила видел бы все колонки и считал, что правило работает.

Как проверить, что получилось ​

Закрытое поле проверяется сравнением двух картин: у того, кто в списке, колонка есть, у того, кого нет, — её нет вовсе. Своя собственная картина для этого не годится. Порядок — Проверка правил видимости.

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

Как создать правило ​

Нажмите Новое правило на вкладке Колонки (CLS) и заполните форму:

Поле формыЧто указать
НазваниеПонятное описание, например «Зарплата — только HR»
Закрываемое полеПоле датасета, которое перестанет быть видно
Кому поле остаётся видноСписки Пользователи и Группы; оба можно оставить пустыми — тогда поле закроется для всех, включая вас

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

Вкладка «Колонки (CLS)»: правило на поле «Сумма заказа»

Правила сохраняются сразу — отдельной кнопки «Применить» у окна нет. Действовать правило начинает после включения.

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

То же запросом к API ​

Когда правил много или их заводит скрипт, тот же результат дают три запроса. Токен берётся входом — авторизация в API; $API ниже — адрес установки с /api на конце.

Идентификатор закрываемого поля лежит в описании датасета — GET $API/dataset/{id}, блок fields. В теле правила field_id — это поле, а subjects перечисляет тех, кому оно остаётся видимым; у субъекта задаётся либо user_id, либо group_id, вместе они не принимаются:

bash
curl -s -X POST -H "Authorization: Bearer $T" -H "Content-Type: application/json" \
  -d '{ "field_id": 134549, "name": "Сумму видит только финансовый отдел",
        "enabled": true, "subjects": [{ "group_id": 2 }] }' \
  "$API/dataset/1413/cls"

Список правил и удаление лишнего:

bash
curl -s -H "Authorization: Bearer $T" "$API/dataset/1413/cls"
curl -s -X DELETE -H "Authorization: Bearer $T" "$API/dataset/1413/cls/2"

Правило действует сразу и на вас тоже

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

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

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

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

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

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

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

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

Молча исключить колонку опаснее, чем отказать: без меры и без фильтра виджет даст правдоподобные, но другие числа, и подмену никто не заметит.

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

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

Что дальше ​

Ограничение по строкам настраивается отдельно — см. Видимость строк (RLS).