В настоящее время существует 2 способа хранения секретов:
1) Переменные воздушного потока : значение переменной будет скрыто, если ключ содержит какие-либо слова в ('password', 'secret', 'passwd', 'authorization', 'api_key', ' apikey ',' access_token ') по умолчанию, но его можно настроить для отображения в виде открытого текста, как показано на рисунке ниже.
Однако существует известная ошибка, при которой любой, имеющий доступ к пользовательскому интерфейсу, может экспортировать все переменные, которые будут раскрывать секреты.
2) Соединения воздушного потока :
Вы можете использовать поле Passwords в соединениях Airflow, которое будет шифровать это поле, если вы установили пакет crypto
(pip install apache-airflow[crypto]
). Поле пароля будет выглядеть пустым в пользовательском интерфейсе, как показано на скриншоте.
Подробнее о защите соединений: https://airflow.apache.org/howto/secure-connections.html
Я рекомендую второй подход, так как даже если кто-то получит доступ к пользовательскому интерфейсу, он / она не сможет получить ваши секреты. Имейте в виду, что для этого вам нужно установить пакет crypto
.
Вы можете получить доступ к секретам, как показано ниже:
from airflow.hooks.base_hook import BaseHook
connection = BaseHook.get_connection(CONN_ID)
slack_token = connection.password
Вы можете установить CONN_ID
в качестве имени вашего соединения.