在 Airflow 上存储登录凭据的最佳方式是什么?

What is the best way to store login credentials on Airflow?

我发现有很多方法可以将其存储为变量、挂钩和其他使用加密的方法。我想知道最好的方法是什么。

目前有两种存储秘密的方式:

1) Airflow 变量: 如果键中包含任何单词,变量的值将被隐藏 ('password', 'secret', 'passwd', 'authorization' , 'api_key', 'apikey', 'access_token') 默认情况下,但可以配置为以明文显示,如下图所示。

但是,有一个已知错误,任何有权访问 UI 的人都可以导出所有变量,这将暴露秘密。

2) 气流连接:

您可以在 Airflow 连接中使用 Passwords 字段,如果您安装了 crypto 包 (pip install apache-airflow[crypto]),它将加密该字段。如屏幕截图所示,密码字段在 UI 中显示为空白。

有关保护连接的更多信息:https://airflow.apache.org/howto/secure-connections.html

我推荐第二种方法,因为即使有人可以访问 UI,he/she 也无法获取您的秘密。请记住,您需要为此安装 crypto 软件包。

然后您可以访问以下秘密:

from airflow.hooks.base_hook import BaseHook

connection = BaseHook.get_connection(CONN_ID)
slack_token = connection.password

您可以将 CONN_ID 设置为您的连接名称。