Интеграция с HashiCorp Vault для хранения секретов

Обзор

В Airflow под secret backend понимается механизм безопасного хранения и получения конфиденциальных данных, таких как пароли или API-ключи. Airflow поддерживает работу с различными видами secret backend (например, системные переменные, БД метаданных, локальная файловая система), но для безопасности рекомендуется использовать HashiCorp Vault.

Подготовка

Перед тем как проводить настройку в ADCM, убедитесь, что у вас установлен, настроен и доступен экземпляр Vault (см. Установка Vault).

Для подготовки к интеграции с ADO выполните следующие действия:

  1. Создайте точку монтирования для Airflow:

    $ vault secret enable -path=airflow -version=2 kv
  2. Сгенерируйте данные для входа (например, токен):

    $ vault token create -period=30m

Сохраните полученный токен в файл или скопируйте его, т.к. он вам понадобится далее.

Настройка в ADCM

Для интеграции ADO с HashiCorp Vault следуйте шагам ниже:

  1. В ADCM выберите ваш кластер ADO и перейдите в раздел Services → Airflow.

  2. Активируйте переключатель Show advanced.

  3. Активируйте переключатель Use secret backend with Vault и присвойте параметрам необходимые значения (см. Конфигурационные параметры Airflow):

    Настройки Vault в ADCM
    Настройки Vault в ADCM
    ПРИМЕЧАНИЕ
    При активированном параметре Manage sensitive configuration data ADO берет на себя как создание секретов (перемещение их из настроек в Vault), так и их обновление. Для подобных действий требуются права на создание секретов в Vault.
  4. Сохраните конфигурацию и перезапустите Airflow.

Чтобы сгенерировать блок airflow.cfg[secrets] вручную, вам необходимо добавить необходимые параметры через поля параметра Custom airflow.cfg.

Ручная настройка секретов в ADCM
Ручная настройка секретов в ADCM

Значения кастомных параметров переписывают значения, установленные в секции Use secret backend with Vault.

Ротация fernet-ключа

При включенной интеграции ADO с HashiCorp Vault меняется поведение сервисного действия Rotate fernet key.

Autogenerate new fernet key активен Autogenerate new fernet key неактивен

Manage sensitive configuration data активен

Fernet-ключ изменится в Vault, значение не будет сохранено на хосте

Если в качестве кастомного fernet-ключа предоставить пустое значение, то действие выполнится, но ни в Vault, ни на хосте никаких изменений не будет

Manage sensitive configuration data неактивен

Fernet-ключ изменится на хосте, в Vault не произойдет никаких изменений

Если в качестве кастомного fernet-ключа предоставить пустое значение, то действие завершится с ошибкой из-за невозможности ротации ключа с пустым значением

Во всех остальных случаях (например, при непустом валидном/невалидном кастомном fernet-ключе), действие ведет себя одинаково вне зависимости от упомянутых выше параметров.

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней