Apache Superset - Безопасность
- Роли
- Администратор (Admin)
- Альфа (Alpha)
- Гамма (Gamma)
- SQL_lab
- Общий доступ (Public)
- Управление Гаммой (Gamma) для доступа к источнику данных
- Кастомизация
- Права доступа
- Ограничение доступа к источникам данных
- Ограничение доступа к некоторым метрикам
Безопасность в Superset обеспечивается Flask AppBuilder (FAB). FAB — это «простая и быстрая среда разработки приложений, построенная на основе Flask». FAB обеспечивает аутентификацию, управление пользователями, права доступа и роли. Пожалуйста, ознакомьтесь с его Документацией по безопасности.
Роли
Superset поставляется с определенным набором ролей. Вы можете предположить, что эти роли будут обновляться по мере развития Superset. Несмотря на то, что пользователи с правами администратора могут сделать это, не рекомендуется каким-либо образом изменять эти роли, удаляя или добавляя к ним разрешения, поскольку они будут повторно синхронизированы с исходными значениями при выполнении следующей команды инициализации.
Поскольку не рекомендуется изменять описанные здесь роли, правильно предположить, что Ваша стратегия безопасности должна состоять в том, чтобы предоставить права доступа пользователям на основе этих базовых ролей и ролей, которые Вы создаете. Например, Вы можете создать роль финансового аналитика, состоящую из набора разрешений для источников данных (таблиц) и/или баз данных.
Администратор (Admin)
У администраторов есть все возможные права, включая предоставление или отзыв прав у других пользователей и изменение чужих фрагментов и дашбордов.
Альфа (Alpha)
Альфа имеет доступ ко всем источникам данных, но не может предоставить или отозвать доступ у других пользователей. Они также ограничены в изменении объектов, которыми владеют. Пользователи Альфа могут добавлять и изменять источники данных.
Гамма (Gamma)
Гамма имеет ограниченный доступ. Они могут работать только с данными, поступающими из источников данных, к которым им предоставлен доступ. У них есть доступ только для просмотра фрагментов и дашбордов, созданных исключительно из разрешенных источников данных. В настоящее время пользователи Gamma не могут изменять или добавлять источники данных.
Также обратите внимание, что когда пользователи Gamma просматривают дашборды и список фрагментов, они увидят только те объекты, к которым у них есть доступ.
SQL_lab
Роль SQL_lab предоставляет доступ к SQL Lab. Обратите внимание, что хотя пользователи с правами администратора по умолчанию имеют доступ ко всем базам данных, пользователям Alpha и Gamma необходимо предоставить доступ для каждой базы данных.
Общий доступ (Public)
Вышедшим из системы пользователям также можно разрешить доступ к некоторым функциям Superset.
Установив PUBLIC_ROLE_LIKE_GAMMA = True в файле superset_config.py, Вы предоставляете роли Public тот же набор разрешений, что и для роли GAMMA. Это полезно, если Вы хотите разрешить анонимным пользователям просматривать дашборды. Предоставление прав доступа для определенных наборов данных по-прежнему требуется, а это означает, что Вам нужно отредактировать роль Public и добавить источники данных в роль вручную.
Управление Гаммой (Gamma) для доступа к источнику данных
Вот как предоставить пользователям доступ только к определенным наборам данных. Сначала убедитесь, что пользователям с ограниченным доступом назначена [только] роль Gamma. Во-вторых, создайте новую роль (Меню -> Безопасность -> Список ролей) и нажмите знак +.
Это новое окно позволит Вам дать этой новой роли имя, присвоить ее пользователям и выбрать таблицы в раскрывающемся списке «Права доступа» (Permissions). Чтобы выбрать источники данных, которые Вы хотите связать с этой ролью, просто нажмите на раскрывающийся список и используйте ввод для поиска названий таблиц.
Затем Вы можете подтвердить, что пользователи Gamma видят объекты (дашборды и фрагменты), связанные с таблицами, относящимися к их ролям.
Кастомизация
Разрешения, предоставляемые FAB, детализированы и обеспечивают высокий уровень кастомизации. FAB автоматически создает несколько прав доступа для каждой создаваемой модели (can_add, can_delete, can_show, can_edit, …), а также для каждого представления. Кроме того, Superset может предоставлять более детальные разрешения, такие как all_datasource_access.
Мы не рекомендуем изменять 3 базовые роли, поскольку существует набор предпосылок, на которых основывается Superset. Однако Вы можете создавать свои собственные роли и объединять их с существующими.
Права доступа
Роли состоят из набора прав доступа, а Superset имеет множество категорий прав доступа. Вот некоторые из них:
- Модель и действие (Model & action): модели — это объекты, такие как дашборд, фрагмент или пользователь. Каждая модель имеет фиксированный набор прав доступа, таких как can_edit, can_show, can_delete, can_list, can_add и т. д. После добавления can_delete в дашборде к роли и предосталения этой рольи пользователю он сможет удалять дашборды;
- Представления (Views): представления — это отдельные веб-страницы, такие как представление исследований или SQL Lab. Если пользователю предоставлены данные права, он/она увидит соответствующее представление в пунктах своего меню и сможет загрузить эту страницу;
- Источник данных (Data source): для каждого источника данных создаются права доступа. Если пользователю не предоставлено разрешение all_datasource_access, он сможет просматривать только фрагменты или работать исключительно с разрешенными источниками данных;
- База данных (Database): Предоставление доступа к базе данных позволяет пользователю получить доступ ко всем источникам данных в этой базе данных и запрашивать ее в SQL Lab при условии, что ему предоставлено специальное разрешение SQL Lab.
Ограничение доступа к источникам данных
Лучший способ — это, вероятно, дать пользователю Gamma еще одну или несколько других ролей, которые добавят доступ к определенным источникам данных. Мы рекомендуем создавать отдельные роли для каждого профиля доступа. Скажем, сотрудники Вашего финансового отдела могут иметь доступ к набору баз данных, и эти права доступа можно объединить в одной роли. Пользователям с этим профилем затем необходимо приписать Гамму в качестве основы для моделей и представлений, к которым они могут получить доступ, и той финансовой роли, которая представляет собой набор прав доступа для объектов данных.
У одного пользователя может быть много ролей, поэтому финансовому руководителю могут быть предоставлены Гамма, Финансы и, возможно, еще одна роль Руководителя, которые работают с набором источников данных, на основе которых строятся дашборды, доступные только руководителям. При просмотре списка дашбордов этот пользователь увидит только список дашбордов, к которым у него есть доступ, в зависимости от назначенных ролей и прав доступа.
Ограничение доступа к некоторым метрикам
Иногда некоторые показатели являются относительно чувствительными (например, доход). Мы можем захотеть ограничить эти показатели и предоставить доступ только некоторым ролям. Например, предполагается, что есть метрика кластер.источники данных.доход ([cluster1].[datasource1].[revenue]), и только пользователи с правами Администратора могут ее видеть. Вот как ограничить доступ.
- Отредактируйте источник данных (Меню -> Источник -> Источники данных Druid -> отредактируйте запись «источник данных1») и перейдите на вкладку Список Метрики Druid. Установите флажок Is Restricted в строке показателя дохода.
- Отредактируйте роль (Меню -> Безопасность -> Список ролей -> отредактируйте запись «Администратор»), в поле разрешений введите и найдите метрику доступа к [кластеру1].[источник1].[доход]. (id: 1), затем нажмите кнопку «Сохранить» внизу страницы.
Все пользователи, не имеющие разрешения, увидят сообщение об ошибке Доступ к метрикам запрещен: доход (статус: 500). Это также произойдет в том случае, если пользователь захочет получить доступ к метрике, зависящей от дохода.