В 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
, оставить только новый.
kgbt++ 23 Июнь 2023
а если в airflow.cfg fernet_key не прописан, то можно просто прописать и перезагрузить сервер?