python - 在 Airflow 上存储登录凭据的最佳方式是什么?
问题描述
我发现有很多方法可以将其存储为变量、挂钩和其他使用加密的方式。我想知道最好的方法是什么。
解决方案
目前有两种存储秘密的方式:
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
为连接的名称。
推荐阅读
- ssas - 获取一组所有成员以及在 MDX 中具有成员属性的任何后代
- python - 对一列执行累积总和,但如果总和在 Pandas 中变为负数,则重置为 0
- ruby-on-rails - 试图检查是否有具有特定电子邮件地址的用户。获取:nil:NilClass 的未定义方法“[]”
- tensorflow - 无法使用 keras 为向量构建 CNN - 维度问题
- google-cloud-platform - 如何将包重新路由到 Google 负载平衡
- c++ - 自定义二进制文件在 C++ 中触发故障位
- integration-testing - 如何从 ResourceResolver 检索 SlingHttpServletRequest
- ios - 使用 UITableViewDiffableDataSource 时如何移动 UITableView 单元格?
- c++ - 通过采用迭代器的 C++ 函数包装采用原始指针的 C API
- c# - 在自定义控件上设置默认样式或控件模板