Общее описание настроек

Версия 49.1 от Ирина Сафонова на 01.04.2023, 00:26

Содержание

Безопасность в Cloud BI обеспечивается Flask AppBuilder (FAB), платформой разработки приложений, созданной поверх Flask. FAB обеспечивает аутентификацию, управление пользователями, разрешения и роли. Документация по безопасности в FAB доступна по ссылке.

Предоставленные роли


Cloud BI поставляется с стандартным набором ролей, которые обрабатываются самим Cloud BI.

Не рекомендуется изменять разрешения, связанные с каждой ролью (например, путем удаления или добавления разрешений для них), несмотря на такую возможность у администратора системы.
Разрешения, связанные с каждой ролью, будут повторно синхронизированы с исходными значениями при выполнении команды инициализации Cloud BI.

Пользовательская группа доступа "Администратор системы"


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

Пользовательская группа Alpha


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

Пользовательская группа доступа Gamma


Пользователи Gamma имеют ограниченный доступ. Они имеют доступ к следующим данным:

  • Поступающие из источников данных, к которым пользователям Gamma предоставлен доступ через другую дополнительную роль
  • Доступ только для просмотра срезов и информационных панелей, созданных из источников данных, к которым у них есть доступ.

Пользователи Gamma просматривают панели мониторинга и список срезов, они видят только те объекты, к которым у них есть доступ.
Также они не могут изменять или добавлять источники данных.

Управление доступом к источникам данных для Gamma

Для предоставления доступа к определенным наборам данных:

1. Проверьте, что пользователям с ограниченным доступом назначена группа Gamma
2. Создайте новую роль (Меню -> Безопасность -> Список ролей) и нажмите кнопку +.
3. В открывшемся окне задайте новой роли имя, присвойте ее пользователям и выберите в раскрывающемся списке Разрешения для нее.
4. Выберите источники данных, которые вы хотите связать с этой ролью, щелкнув раскрывающийся список, и используйте ввод для поиска имен таблиц.
5. Зайдите под одним из пользователей группы Gamma и убедитесь, что ему доступны связанные с таблицами объекты (панели мониторинга и срезы), на которые были выданы права доступа.

Пользовательская группа sql_lab


Роль sql_lab предоставляет доступ к SQL Lab.

Хотя пользователи с правами администратора по умолчанию и имеют доступ ко всем базам данных, пользователям Alpha и Gamma необходимо предоставить доступ для каждой базы данных.

Public


Для предоставления доступа к некоторым функциям Cloud BI пользователям, выполнившим вход в систему, вы можете использовать параметр конфигурации PUBLIC_ROLE_LIKE. Это параметр назначается другой роли, чьи разрешения вы хотите передать.

Например, установив PUBLIC_ROLE_LIKE = "Gamma" в конфигурационном файле, вы предоставляете общедоступной роли тот же набор разрешений, что и для роли Gamma. Это полезно, если вы хотите разрешить анонимным пользователям просматривать информационные панели. Явное предоставление для определенных наборов данных по-прежнему требуется, а это означает, что вам нужно отредактировать роль Public и добавить общедоступные источники данных в роль вручную.

Настройка разрешений


Разрешения, предоставляемые FAB, качественно детализированы  и обеспечивают высокий уровень настройки. FAB автоматически создает множество разрешений для каждой создаваемой модели (can_add, can_delete, can_show, can_edit, …), а также для каждого представления. Кроме того, Cloud BI может предоставлять более детальные разрешения, такие, как all_datasource_access.

Не рекомендуется изменять базовые роли, поскольку существует набор допущений, на которых построен Cloud BI. Однако вы можете создавать свои собственные роли и объединять их с существующими.

Разрешения


Роли состоят из набора разрешений, а Cloud BI имеет множество категорий разрешений.

Категория разрешенияОписание
Модель и действие

Модели — это объекты, такие, как:

  • панель инструментов
  • фрагмент 
  • пользователь.
    Каждая модель имеет фиксированный набор разрешений, таких, как:
  • can_edit
  • can_show
  • can_delete
  • can_list
  • can_add и т. д.
    Например, вы можете разрешить пользователю удалять информационные панели, добавив can_delete на сущность информационной панели к роли и предоставив этому пользователю эту роль.
ПредставленияПредставления — это отдельные веб-страницы, такие как, представление Исследование или представление Лаборатория SQL. Предоставленный пользователю, он увидит это представление в пунктах меню и сможет загрузить эту страницу.
Источник данныхДля каждого источника данных создается разрешение. Если пользователю не предоставлено разрешение all_datasource_access, он сможет только просматривать срезы или исследовать источники данных, к которым у него есть доступ.
База данных (БД)Предоставление доступа к БД позволяет пользователю получить доступ ко всем источникам данных в этой базе данных. Также пользователь сможет запрашивать эту БД в лаборатории SQL при условии, что пользователю предоставлено специальное разрешение лаборатории.
Про настройку БД в Cloud BI можно почитать здесь.

Ограничение доступа к источникам данных


Рекомендуется предоставить пользователю роль Gamma, а также любые другие роли, которые добавят доступ к определенным источникам данных. Также рекомендуется создавать отдельные роли для каждого профиля доступа.
Пример:
Пользователи финансовой группы могут иметь доступ к набору баз данных и источников данных; эти разрешения могут быть объединены в одной роли. Затем пользователям с этим профилем необходимо назначить роль Gamma в качестве основы для моделей и представлений, к которым они могут получить доступ, и роль Finance, которая представляет собой набор разрешений для объектов данных.

Пользователь может иметь сразу несколько ролей. Например, руководителю финансовой группы могут быть предоставлены роли Gamma, Finance и Executive. Роль руководителя (Executive) позволяет иметь доступ к набору источников данных и информационных панелей, доступных только для руководителей. В представлении Dashboards пользователь может видеть только те дашбарды, к которым у него есть доступ в зависимости от назначенных ролей и разрешений.

Настройка фильтров безопасности на уровне строк

Используя фильтры безопасности на уровне строк (в меню пункте меню Безопасность), вы можете создавать фильтры, которые назначаются конкретной таблице, а также набору ролей. Если вы хотите, чтобы члены финансовой группы имели доступ только к строкам, в которых отдел = "финансы", вы можете:

1. Создать фильтр безопасности на уровне строк с этим предложением (department = "finance").
2. Назначить предложение роли Финансы и таблице, к которой оно применяется.
3. Поле предложения, которое может содержать произвольный текст, добавить к предложению WHERE сгенерированного оператора SQL. Таким образом, вы даже можете настроить фильтр За последние 30 дней и применить его к определенной роли с таким предложением, как date_field > DATE_SUB(NOW(), INTERVAL 30 DAY). Фильтр также может поддерживать несколько условий: client_id = 6 И рекламодатель = "foo" и так далее

Все соответствующие фильтры безопасности на уровне строк будут объединены вместе (внутри различные предложения SQL объединяются с помощью операторов AND). Это означает, что можно создать ситуацию, когда две роли конфликтуют таким образом, что подмножество таблиц может быть пустым. Например, фильтры client_id=4 и client_id=5, примененные к роли, приведут к тому, что пользователи этой роли будут иметь client_id=4 и client_id=5, добавленные к их запросу, что никогда не может быть правдой.

Политика безопасности контента

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

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

Политика описывается с помощью ряда директив, каждая из которых описывает политику для определенного типа ресурса или области политики. Описание директив доступно по ссылке.

Важно коррректно настроить политику безопасности контента при развертывании Cloud BI, чтобы предотвратить многие типы атак. Cloud BI предоставляет две переменные в config.py для развертывания:

  • TALISMAN_ENABLED по умолчанию имеет значение False. Установите для этого параметра значение True
  • TALISMAN_CONFIG содержит фактическое определение политики

При работе в продуктивном режиме Cloud BI при запуске проверяет наличие настройки политики. Если она не будет найдена, то система выдаст предупреждение, что есть угроза безопасности. Для сред, в которых политики безопасности определены вне Cloud BI с помощью другого программного обеспечения, администраторы могут отключить это предупреждение с помощью ключа CONTENT_SECURITY_POLICY_WARNING в config.py.

Требования к политике безопасности контента

Требования следующие:

  • Укажите ключевые слова 'unsafe-eval' и 'unsafe-inline'
default-src 'self' 'unsafe-eval' 'unsafe-inline'
  • Некоторые дашбоарды загружают изображения с использованием URI данных
img-src 'self' data:
  • Диаграммы MapBox используют воркеры и должны подключаться к серверам MapBox
worker-src 'self' blob:
connect-src 'self' https://api.mapbox.com https://events.mapbox.com

Ниже пример TALISMAN_CONFIG, который реализует вышеуказанные требования, использует 'self' для ограничения содержимого тем же источником, что и сервер Cloud BI, и запрещает устаревшие элементы HTML, устанавливая для object-src значение 'none'.