在 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
设置为您的连接名称。
我发现有很多方法可以将其存储为变量、挂钩和其他使用加密的方法。我想知道最好的方法是什么。
目前有两种存储秘密的方式:
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
设置为您的连接名称。