首页 > 解决方案 > 在 Airflow 上存储登录凭据的最佳方式是什么?

问题描述

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

标签: pythonhookcredentialsairflowdirected-acyclic-graphs

解决方案


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

1) Airflow Variables : 默认情况下,如果 key 包含 ('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,他/她也无法获取您的秘密。请记住,您需要为此安装crypto软件包。

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

from airflow.hooks.base_hook import BaseHook

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

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


推荐阅读