Step 1 of 2

Fernet key

В Airflow для шифрования всех секретных данных в разделе Connections и Variable используется симметричный ключ шифрования Fernet key. Он гарантирует, что никто не сможет увидеть данные в открытом виде без доступа к этому ключу. К слову, в базе данных значения хранятся в зашифрованном виде. Поэтому если кто-то получит к ней доступ, то не сможет увидеть ничего секретного.

Fernet key задаётся через airflow.cfg. Параметр так и называется — fernet_key:

Ключ также можно явно задать через переменную окружения:

export AIRFLOW__CORE__FERNET_KEY=<ваш_секретный_ключ>

Переменная окружения имеет приоритет выше чем значение в airflow.cfg.

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

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

from cryptography.fernet import Fernet
fernet_key= Fernet.generate_key()
print(fernet_key.decode())

Чтобы правильно заменить Fernet key необходимо выполнить следующие шаги:

  • Сгенерировать новый ключ, используя сниппет кода выше
  • В airflow.cfg найти параметр fernet_key и установить ему значения, следуя шаблону:
fernet_key = <новый_ключ>,<старый_ключ>
  • Выполнить команду airflow rotate-fernet-key
  • Удалить старый ключ (включая запятую) в параметре fernet_key, оставить только новый.

Comments

а если в airflow.cfg fernet_key не прописан, то можно просто прописать и перезагрузить сервер?