Совершенно секретно: 5 советов по управлению секретами в Apache Airflow

курсы по Airflow, безопасность Airflow, cybersecurity Airflow, Apache Airflow обучение, курсы дата-инженеров, обучение инженеров Big Data, инженерия больших данных, AirFlow применение, data pipeline, AirFlow инженерия данных обучение, Школа Больших Данных Учебный центр Коммерсант

В сферу ответственности дата-инженера входит не только проектирование быстрых и производительных конвейеров обработки данных, но обеспечение их надежности, в т.ч. с точки зрения информационной безопасности. Сегодня рассмотрим, как управлять чувствительной информацией (секретами) в Apache AirFlow, каких видов они бывают, где хранятся и что нужно сделать, чтобы не отображать их в UI и логе задач.

3 вида секретов в Apache Airflow

Секреты — это конфиденциальная информация, которая используется в пользовательских DAG-цепочках. Они бывают следующих видов [1]:

  • переменные (variables) – как общий способ хранения и извлечения произвольного контента или настроек в виде простого хранилища значений ключа в Airflow. Переменные среды — самый простой в использовании способ, но неудобный в обслуживании. Переменные среды не поддерживают встроенное шифрование и к ним невозможно получить доступ из GUI или CLI-интерфейсов Airflow. Безопаснее работать и этим видом секретов из Kubernetes. Продолжительность жизни переменных среды зависит от развертывания Airflow или его конфигураций.
  • подключения (connections) — информация, необходимая для подключения к внешним системам в формате URI в URL-кодировке.
  • конфигурации (configurations) – конфигурационные настройки AirFlow, которые могут храниться в бэкэнде системы.

При хранении секретов в базе метаданных AirFlow (Metastore DB), их обслуживание упрощается. В частности, они доступны из GUI- и CLI-интерфейсов, а также через API. При добавлении соединений кодирование URL и форматирование URI выполняется автоматически. Поддерживается шифрование ключом Fernet в БД, просто экспортируется и импортируется. В этом случае длительность жизни секрета определяется хранилищем Airflow Metastore. Впрочем, этот способ может быть не одобрен специалистами cybersecurity и не подойдет для production-сред. Поэтому стоит рассмотреть альтернативные способы [1]:

  • HashiCorp Vault – open-source утилита для безопасного и надежного хранения и распространения секретов, таких как ключи API, токены доступа и пароли [2];
  • GCP Secret Manager — система хранения ключей API, паролей, сертификатов и других конфиденциальных данных в Google Cloud [3];
  • AWS Secrets Manager — сервис управления конфиденциальными данными, который помогает защитить доступ к приложениям, сервисам и ИТ‑ресурсам [4];
  • Azure Key Vault — облачная служба для безопасного хранения секретов (ключи API, пароли, сертификаты или криптографические ключи) и доступа к ним.

Data Pipeline на Apache Airflow

Код курса
AIRF
Ближайшая дата курса
28 августа, 2024
Продолжительность
24 ак.часов
Стоимость обучения
72 000 руб.

Лучшие практики управления секретами в AirFow

С учетом, что развертывание Apache AirFlow в Google Cloud Platform (GCP) и других облачных средах сегодня становится весьма популярно, целесообразно использовать возможности именно этих SaaS/PaaS-решений для хранения конфиденциальной информацией и управления доступом к ней. В частности, интеграция GCP Workload Identity и AWS IAM (Identity and Access Management) предоставляет следующие преимущества совместного использования этих технологий [1]:

  • безопасность – не нужно прикасаться к учетным записям сервисов;
  • гибкость — учетные записи облачных служб привязаны к учетным записям служб Kubernetes;
  • простота эксплуатации – достаточно однажды настроить разрешения и сохранить их для долговременного использования.

Подключения и конфиденциальные переменные среды рекомендуется хранить в backend-альтеративах, таких как HashiCorp Vault, GCP Secret Manager, AWS Secrets Manager, Azure Key Vault. А Airflow Metastore DB стоит применять для тех секретов, к которым нужен доступ непосредственно из самого фреймворка [1]. Об автоматизации очистки хранилища Metastore читайте в нашей новой статье. Посмотреть и установить готовые Python-пакеты управления секретами от самих провайдеров, в частности, HashiCorp, можно в открытом и бесплатном реестре от компании Astronomer, которая занимается коммерциализирует Apache AirFlow. Подробнее об этом мы рассказываем здесь.

Также имеет смысл маскировать конфиденциальные данные. Airflow по умолчанию маскирует пароли подключения, конфиденциальные переменные и ключи из дополнительного поля подключения (JSON), когда они появляются в журналах задач, в представлениях переменных и визуализированных полях GUI. За включение/отключение маскирования отвечает параметр конфигурации hide_sensitive_var_conn_fields. Автоматическое маскирование запускается подключением или доступом к переменной. Но при передаче чувствительных данных через XCom или любой другой подобный канал, оно не будет замаскировано в нисходящей задаче.

Когда маскирование включено, Airflow всегда будет маскировать поле пароля каждого соединения, к которому выполняется задача. Также фреймворк спрячет значение переменной или поле дополнительного JSON-объекта Connection, если имя содержит слова типа ‘password’, ‘secret’, ‘passwd’, ‘authorization’, ‘api_key’, ‘apikey’, ‘access_token’. Наконец, если требуется маскировать дополнительный секрет, который уже был замаскирован одним из вышеперечисленных методов, дата-инженер может сделать это в пользовательском DAG-файле или в функции выполнения оператора с помощью mask_secret() следующим образом [5]:

@task
def my_func():
    from airflow.utils.log.secrets_masker import mask_secret
    mask_secret("custom_value")

или через объявление функции в классе:

class MyOperator(BaseOperator):
    def execute(self, context):
        from airflow.utils.log.secrets_masker import mask_secret
        mask_secret("custom_value")

Читайте в нашей новой статье про управление пользователями в AirFlow.

Data Pipeline на Apache Airflow

Код курса
AIRF
Ближайшая дата курса
28 августа, 2024
Продолжительность
24 ак.часов
Стоимость обучения
72 000 руб.

Узнайте больше полезных тонкостей современной дата-инженерии и практического применения Apache AirFlow для разработки сложных конвейеров аналитики больших данных с Hadoop и Spark на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.

Источники

  1. https://www.astronomer.io/blog/secrets-management-airflow-2
  2. https://www.vaultproject.io/
  3. https://cloud.google.com/secret-manager
  4. https://aws.amazon.com/ru/secrets-manager/faqs/
  5. https://airflow.apache.org/docs/apache-airflow/stable/security/secrets/index.html

Контакты авторизированного учебного центра
«Школа Больших Данных»
Адрес:
127576, г. Москва, м. Алтуфьево, Илимская ул. 5 корпус 2, офис 319, БЦ «Бизнес-Депо»
Часы работы:
Понедельник - Пятница: 09.00 – 18.00
Остались вопросы?
Звоните нам +7 (495) 414-11-21 или отправьте сообщение через контактную форму. Также вы можете найти ответы на ваши вопросы в нашем сборнике часто задаваемых вопросов.
Оставьте сообщение, и мы перезвоним вам в течение рабочего дня
Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.
Или напишите нам в соц.сетях
Поиск по сайту