BI Consult Desktop Logo BI Consult Mobile Logo
  • Russian BI Исследование российских bi
  • Перейти на Fine BI
  • Контакты
  • +7 812 334-08-01
    +7 499 608-13-06
  • Отправить сообщение
  • Главная
  • Продукты Эксперт-BI
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Сельское хозяйство
    • Энергетика
    • FMCG
    • Девелоперы
    • Маркетплейсы
    • Пищевая промышленность
    • Фармацевтика
    • Построение Data Platform
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и FP&A
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • IBP
    • ИТ (CIO)
    • Закупки
  • Платформы
    • Системы бизнес-анализа (BI)
    • Интегрированное бизнес-планирование (IBP)
    • Хранилища данных (DWH / Lakehouse)
    • Каталоги данных (Data Catalog)
    • Системы ETL и ELT
    • AI / Исскуственный интеллект
    • Шина данных (ESB)
    • Система управления мастер-данными (MDM)
    • Семантический слой
  • Услуги
    • Переход на отечественные BI и DWH системы
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений и DWH
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Курсы
    • Учебный курс Информационная грамотность (Data Literacy)
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Greenplum
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt (Data Build Tool)
  • Компания
    • Руководство
    • Новости
    • Клиенты
    • Карьера
    • Скачать
    • Контакты

BI

  • FineBI
  • FineReport
  • FineDataLink
  • FineChatBI (FineAI)
  • Коннекторы данных из 1С в BI
  • Airflow / Nifi
  • Visiology
  • PIX BI
  • Modus BI
  • Yandex.DataLens
  • Open-source BI: Superset/Metabase
  • Luxms BI
  • AW BI + Alpha BI
  • FlyBI + Форсайт. Аналитическая Платформа
  • Loginom
  • Триафлай
  • AI / Исскуственный интеллект
  • Optimacros
  • Навигатор BI
  • Семантический слой

СУБД

  • Arenadata
  • ClickHouse
  • Greenplum
  • Postgres Professional
  • TData

Другое

  • Построение Data Platform
    • Аналитическое хранилище данных
    • Data Lake и Data Engineering
    • Подробнее про Data Lake
    • Внедрение Lakehouse
      • Apache Doris
      • StarRocks
      • Trino
    • Миграция витрин из пропиетарных DWH на новый стек
    • Учебный курс "Современная архитектура хранилища данных"
Главная » Курсы по системам бизнес-анализа и методологии » Учебный курс по Open-source BI - Apache Superset, Metabase, Redash » Superset 3.0: Talisman security. CSP требования. Что это?

Superset 3.0: Talisman security. CSP требования. Что это?

Краткое интро

Вышла новая версия Apache Superset 3.0. При попытке установить non-dev версию суперсет не пускает внутрь (не логинится) и ругается по всякому:

flask_wtf.csrf.CSRFError: 400 Bad Request: The CSRF session token is missing.

WARNING:superset.views.base:Refresh CSRF token error

У кого-то возникают ошибки при попытки отобразить картинку в дашборде со стороннего сервера. Это происходит по причине новшеств в Superset 3.0.0. Был добавлен Talisman.

Ниже будут приведены выжимки из документации и настройка Apache Superset 3.0.0 для продуктивного сервера для http (незащищенного) и https (защищенного) вариантов.

 

 

Значения по-умолчанию файла config.py в версии Superset 3.0.0

Для дева и прода версии настроект отличаются.

# Enable/disable CSP warning
CONTENT_SECURITY_POLICY_WARNING = True
# Do you want Talisman enabled?
TALISMAN_ENABLED = utils.cast_to_boolean(os.environ.get("TALISMAN_ENABLED", True))
# If you want Talisman, how do you want it configured??
TALISMAN_CONFIG = {
"content_security_policy": {
"default-src": ["'self'"],
"img-src": ["'self'", "data:"],
"worker-src": ["'self'", "blob:"],
"connect-src": [
"'self'",
"https://api.mapbox.com",
"https://events.mapbox.com",
],
"object-src": "'none'",
"style-src": ["'self'", "'unsafe-inline'"],
"script-src": ["'self'", "'strict-dynamic'"],
},
"content_security_policy_nonce_in": ["script-src"],
"force_https": False,
}
# React requires `eval` to work correctly in dev mode
TALISMAN_DEV_CONFIG = {
"content_security_policy": {
"default-src": ["'self'"],
"img-src": ["'self'", "data:"],
"worker-src": ["'self'", "blob:"],
"connect-src": [
"'self'",
"https://api.mapbox.com",
"https://events.mapbox.com",
],
"object-src": "'none'",
"style-src": ["'self'", "'unsafe-inline'"],
"script-src": ["'self'", "'unsafe-inline'", "'unsafe-eval'"],
},
"content_security_policy_nonce_in": ["script-src"],
"force_https": False,
}
#
# Flask session cookie options
#
# See https://flask.palletsprojects.com/en/1.1.x/security/#set-cookie-options
# for details
#
SESSION_COOKIE_HTTPONLY = True # Prevent cookie from being read by frontend JS?
SESSION_COOKIE_SECURE = False # Prevent cookie from being transmitted over non-tls?
SESSION_COOKIE_SAMESITE: Literal["None", "Lax", "Strict"] | None = "Lax"

 

Что такое Talisman?

Talisman — это расширение (middleware) для Flask (популярного веб-фреймворка на языке Python, на основе которого работает Apache Superset), которое обеспечивает дополнительный уровень безопасности для вашего веб-приложения. Оно позволяет вам легко внедрить различные меры безопасности, такие как Content Security Policy (Политика безопасности контента), HTTP Strict Transport Security (HTTP-строгая защита транспортного уровня), реализацию заголовков безопасности и другие.

После настройки Talisman в вашем инстансе Apache Superset, он будет автоматически добавлять соответствующие HTTP-заголовки безопасности к вашим HTTP-ответам, обеспечивая дополнительный уровень защиты от различных видов атак, таких как атаки внедрения скриптов (XSS) и другие угрозы безопасности.

 

Конфигурация Talisman по умолчанию

  • Принудительно все подключаются к https, если только они не работают в режиме debug.
  • Включает строгую транспортную безопасность HTTP.
  • Устанавливает для файла cookie сеанса Flask значение secure, поэтому он никогда не будет установлен, если к вашему приложению каким-либо образом осуществляется доступ через незащищенное соединение.
  • Устанавливает для файла cookie сеанса Flask значение httponly , предотвращая доступ JavaScript к его содержимому. CSRF через Ajax использует отдельный файл cookie и на него это не влияет.
  • Устанавливает для файла cookie сеанса Flask значение Lax, предотвращая утечку файла cookie в методах запроса, подверженных CSRF.
  • Устанавливает X-Frame-Options в SAMEORIGIN , чтобы избежать кликджекинга .
  • Устанавливает X-Content-Type-Options для предотвращения перехвата типов контента.
  • Устанавливает строгую политику безопасности контента default -src: 'self', 'object-src': 'none'. Это предназначено для почти полного предотвращения атак межсайтового скриптинга (XSS). Вероятно, это единственная настройка, которую вам следует разумно изменить. См. раздел «Политика безопасности контента» .
  • Устанавливает строгую политику реферера строгого происхождения при перекрестном происхождении, которая определяет, какую информацию о реферере следует включать в сделанные запросы.
  • По умолчанию отключает темы просмотра в политике разрешений, например Drupal, для повышения защиты конфиденциальности.

 

В дополнение к Talisman всегда следует использовать библиотеку межсайтовой подделки запросов (CSRF).

 

Пользовательские сессии в Apache Superset

Superset использует Flask и Flask-Login для управления сеансами пользователей.

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

Flask и Flask-Login предлагают ряд параметров конфигурации для управления поведением сеанса.

Соответствующие настройки Flask:

  • SESSION_COOKIE_HTTPONLY: (по умолчанию: False): определяет, следует ли устанавливать файлы cookie с этим HttpOnly флагом.
  • SESSION_COOKIE_SECURE: (по умолчанию: False) Браузеры будут отправлять файлы cookie с запросами через HTTPS только в том случае, если файл cookie помечен как «secure». Чтобы это имело смысл, приложение должно обслуживаться через HTTPS.
  • SESSION_COOKIE_SAMESITE: (по умолчанию: Lax) Не позволяет браузеру отправлять этот файл cookie вместе с межсайтовыми запросами.
  • PERMANENT_SESSION_LIFETIME: (по умолчанию: 31 days) Время существования постоянного сеанса как datetime.timedelta объекта.

 

SESSION_COOKIE_HTTPONLY

SESSION_COOKIE_HTTPONLY — это настройка, которая определяет, должен ли браузер отправлять куки сессии (session cookies) назад на сервер, когда происходит запрос к веб-приложению. Установка этой опции включает или отключает HTTPOnly атрибут для сессионных куки.

HTTPOnly — это атрибут куки, который предотвращает доступ к содержимому куки через JavaScript на стороне клиента. Это означает, что скрипты на веб-странице не могут прочитать или модифицировать содержимое сессионных куки. Это важная мера безопасности, которая помогает предотвратить атаки на основе куки, такие как атаки на сеанс (session hijacking).

 

SESSION_COOKIE_SECURE

SESSION_COOKIE_SECURE — это настройка, которая определяет, должны ли сессионные куки передаваться только через защищенное соединение (HTTPS). Установка этой опции включает или отключает атрибут Secure для сессионных куки.

Установка SESSION_COOKIE_SECURE в True означает, что сессионные куки будут отправляться только в том случае, если соединение между клиентом и сервером обеспечивается через протокол HTTPS. Это увеличивает безопасность, так как куки, содержащие данные сеанса, не будут передаваться через незашифрованные (HTTP) соединения, что делает их менее уязвимыми для перехвата и атак.

 

SESSION_COOKIE_SAMESITE

SESSION_COOKIE_SAMESITE — это настройка, которая определяет атрибут SameSite для сессионных куков (session cookies). Атрибут SameSite предназначен для контроля того, когда браузер должен отправлять сессионные куки в запросах на другие сайты или поддомены.

Существуют три возможных значения для SESSION_COOKIE_SAMESITE:

  1. None (по умолчанию): Это значение означает, что сессионные куки будут отправляться в запросах на другие сайты или поддомены. Это наиболее распространенное поведение и подходит для большинства случаев.
  2. Lax: Это значение означает, что браузер будет отправлять сессионные куки в запросах на другие сайты, если запрос инициирован из тега <a> (гиперссылки), но не при отправке запросов из скриптов, изображений и т. д. Это предостерегает от некоторых видов атак, таких как CSRF (межсайтовая подделка запросов).
  3. Strict: Это значение означает, что сессионные куки не будут отправляться в запросах на другие сайты, даже если они инициированы из тега <a>. Это обеспечивает наивысший уровень безопасности, но может вызвать проблемы с функциональностью, например, если ваше веб-приложение взаимодействует с другими доменами.

 

PERMANENT_SESSION_LIFETIME

PERMANENT_SESSION_LIFETIME — это настройка, которая определяет продолжительность сессии в вашем веб-приложении, выраженную в секундах. Она определяет, сколько времени сессионные данные пользователя будут храниться после его последней активности. Когда сессия истекает, пользователь будет вынужден снова войти в систему.

 

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

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

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

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

Начиная с версии 2.1.1 в логах вы можете обнаружить следующие Warnings:

WARNING:superset.initialization:We haven’t found any Content Security Policy (CSP) defined in the configurations. Please make sure to configure CSP using the TALISMAN_ENABLED and TALISMAN_CONFIG keys or any other external software. Failing to configure CSP have serious security implications. Check https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP for more information. You can disable this warning using the CONTENT_SECURITY_POLICY_WARNING key.

Чрезвычайно важно правильно настроить политику безопасности контента при развертывании Superset, чтобы предотвратить многие типы атак.

Superset предоставляет две переменные config.py для развертывания CSP:

  • TALISMAN_ENABLED по умолчанию True; установите это значение False, чтобы отключить CSP
  • TALISMAN_CONFIG содержит фактическое определение политики (см. пример ниже), а также любые другие аргументы, которые должны быть переданы Talisman.

 

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

 

Требования к CSP

Для работы Superset необходима директива CSP style-src unsafe-inline

style-src 'self' 'unsafe-inline'

 

Только сценарии, отмеченные nonce, могут быть загружены и выполнены. Nonce — это случайная строка, автоматически генерируемая Talisman при каждой загрузке страницы. Вы можете получить текущее значение nonce, вызвав макрос jinja csp_nonce().

<script nonce="{{ csp_nonce() }}">
/* my script */
</script>

 

Некоторые информационные панели загружают изображения с помощью URI данных и data: требуют img-src

img-src 'self' data:

 

Диаграммы MapBox используют рабочие процессы и требуют подключения к серверам MapBox в дополнение к источнику Superset.

worker-src 'self' blob:
connect-src 'self' https://api.mapbox.com https://events.mapbox.com

 

Другие директивы CSP по умолчанию 'self' ограничивают содержимое тем же источником, что и сервер Superset.

Чтобы настроить предоставленную конфигурацию CSP в соответствии с вашими потребностями, следуйте инструкциям и примерам, приведенным в Справочнике по политике безопасности контента.

 

Настройки TALISMAN_ENABLED

Установка TALISMAN_ENABLED = True активирует защиту Талисмана с его аргументами по умолчанию, из которых content_security_policy только один. Их можно найти в документации Талисмана в разделе «Параметры». Обычно они повышают безопасность, но администраторы должны знать об их существовании.

В частности, опция force_https = True (False по-умолчанию) может привести к поломке оповещений и отчетов Superset, если workers настроены на доступ к диаграммам через WEBDRIVER_BASEURL, который начинается с http://. Пока развертывание Superset обеспечивает https upstream, например, через балансировщик загрузчика или шлюз приложений, можно оставить эту опцию отключенной. В противном случае вы можете включить force_https следующее:

TALISMAN_CONFIG = {
"force_https": True,
"content_security_policy": { ...

 

TALISMAN_CONFIG — это словарь с настройками для Talisman.

  1. "force_https": True: Эта настройка указывает, что вы хотите принудительно перенаправлять все HTTP-запросы на HTTPS. Таким образом, она обеспечивает обязательное использование защищенного соединения (HTTPS) для вашего веб-приложения. Это важная мера безопасности, так как HTTPS обеспечивает шифрование данных между клиентом и сервером, что помогает защитить данные в пути от перехвата и вмешательства злоумышленников.
  2. "content_security_policy": Эта часть настроек определяет политику безопасности контента (CSP) для вашего веб-приложения. Она позволяет вам указать, откуда разрешено загружать ресурсы, такие как скрипты, стили, изображения и другие. Ваш пример предоставляет заголовок CSP, который необходимо настроить в соответствии с конкретными требованиями вашего приложения и уровнем безопасности, который вы хотите обеспечить.

 

Настройки Apache Superset 3.0.0

для http при настройке TALISMAN_ENABLED = False

Для того, чтобы Superset прекратил ругаться на CSRF, достаточно отключить Talisman с помощью команды:

TALISMAN_ENABLED = False

 

Как на картинке:

для https при настройке

TALISMAN_ENABLED = True

Источник:  Блог superset-bi

 

 

Узнать стоимость решенияЗапросить видео презентацию

← Предыдущая статья
Сравнение Apache Superset с Yandex Datalens Open-Source
Следующая статья →
Как установить нужную версию Node.js и npm для разработки

Решения

Анализировать ФинансыУвеличивайте ПродажиОптимальный Склад и ЛогистикаМаркетинговые Метрики

Клиенты
  • Группа компаний «Галакс» ведет свою деятельность с 2005 года, являясь в те годы дистрибьютором известных международных марок в ряде крупнейших торговых сетей России в сегменте аудио и видео аксессуаров. Активно работая в этом направлении и приобретая ценный опыт, начали создавать собственные торговые марки «GAL» и «VIXTER»

  • АО «Евросиб СПб–транспортные системы» – оператор контейнерных сервисов с широкой сетью маршрутов на внутрироссийских и международных направлениях. Имеет успешный опыт управления парком фитинговых платформ, а также организации ускоренных контейнерных поездов, в основе которых точное расписание, оптимальные сроки доставки груза и экономическая целесообразность.

  • СберКорус (Группа компаний Сбербанка) – это ИТ‑компания, ИТ‑интегратор, SaaS-провайдер. Является разработчиком цифровых сервисов и услуг для автоматизации широкого диапазона бизнес-процессов юридических лиц. В 2004 году компания стала первым в России оператором электронного документооборота, а в 2012 году вошла в экосистему Сбера. 

  • ПАО АНК «Башнефть» — российская вертикально-интегрированная нефтяная компания, с 2016 года входит в ПАО НК «Роснефть». Главный офис расположен в городе Уфе (Башкортостан). Добыча углеводородов – более 21 млн тонн нефти в год. Объем переработки – более 18 млн тонн нефти в год. Число сотрудников – более 33 тыс. человек.

  • Решения
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Энергетика
    • Фармацевтика
  • Услуги
    • Переход на отечественные BI и DWH
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Техническая поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Платформы
    • FineBI
    • FineReport
    • FineDataLink
    • Коннекторы данных из 1С в BI
    • Airflow + NiFi
    • Visiology
    • Luxms BI
    • Modus BI
    • PIX BI
    • Arenadata
    • ClickHouse
    • Greenplum
    • Postgres Professional
    • Open-source BI: Superset/Metabase
    • Loginom
    • Yandex.DataLens
    • AI / Исскуственный интеллект
    • Optimacros
    • Шины данных
  • Курсы
    • Учебный курс Информационная грамотность
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt
  • Функциональные решения
    • Создание Data Lake
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и прогнозная аналитика
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • Сквозная аналитика
  • Компания
    • О нас
    • Руководство
    • Новости
    • Клиенты
    • Скачать
    • Контакты
    • Политика конфиденциальности
RutubeVkontakteLinkedInYouTube
ООО "Би Ай Консалт",
ИНН: 7811437757,
ОГРН: 1097847154184
199178, Россия,
Санкт-Петербург,
6-ая линия В.О., Д. 63, 4 этаж
Тел: +7 (812) 334-08-01
Тел: +7 (499) 608-13-06
E-mail: info@biconsult.ru

 

 

 

 

 

×

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