为什么“气流连接列表”显示未加密的结果?
why does `airflow connections list` shows unencrypted results?
气流版本:2.1.0
我设置了 FERNET_KEY
并检查了 login/password
当我通过 Web 添加连接时字段是加密的 UI。
但是,当我通过 CLI 添加连接时:
airflow connections add 'site_account' \
--conn-type 'login' \
--conn-login 'my_user_id' \
--conn-password 'wowpassword'
和运行 airflow connections list
,它以原始值显示所有内容(根本没有加密)。
我认为如果我使用 CLI 命令管理所有连接(我想让我的气流红外线可恢复。这就是我尝试使用 CLI 命令管理连接的原因)这可能已经足够危险了)
如何解决?
Airflow 在处理您的 cli 命令期间解密连接密码。
您可以使用 airflow connections list --o yaml
查看您的记录是否真的在数据库中加密。
此外,如果您能够访问 cli,您也能够访问配置,这意味着您始终可以提取数据库连接和 fernet_key
并自行获取完整密码。
Jorrick 的回答是正确的,但我想详细说明一下背景,因为我觉得它将在问题和答案之间架起一座桥梁。
当 DAG/user 要求时,Airflow 需要能够解密连接,这是非常可以理解的。这是应用程序正常运行所必需的,因此 Airflow 必须假设如果用户可以创作 DAG,则允许他使用系统资源(连接、变量)。
安全措施处于不同的水平。如果使用它们(使用 Fernet),Airflow 将加密敏感信息(如连接密码),这意味着在数据库本身中,值是加密的。这里的安全问题是 ferent_key 存储在哪里?它在旋转吗?等...
还有许多其他安全层处理不同的方面,例如:访问控制、在 Ui 中隐藏敏感信息,但这是一个不同的话题。
我认为了解安全处理两类用户的重要事项:
- 允许的用户,但您只想限制他可以执行的操作或他可以看到的内容。 (这是 Airflow 本身处理的更多内容,请参阅安全性 docs)
- 恶意用户想要造成破坏。虽然 Airflow 确实在该领域提供了一些功能,但更多的问题在于您在哪里设置 Airflow 以及您如何保护它(IP 允许列表等...)
请记住,如果恶意用户获得了对 Airflow 服务器的访问权限,那么您将无能为力。这个用户可以简单地使用他的管理员权限来做任何事情。这与入侵您拥有的任何其他服务器的用户没有什么不同。
气流版本:2.1.0
我设置了 FERNET_KEY
并检查了 login/password
当我通过 Web 添加连接时字段是加密的 UI。
但是,当我通过 CLI 添加连接时:
airflow connections add 'site_account' \
--conn-type 'login' \
--conn-login 'my_user_id' \
--conn-password 'wowpassword'
和运行 airflow connections list
,它以原始值显示所有内容(根本没有加密)。
我认为如果我使用 CLI 命令管理所有连接(我想让我的气流红外线可恢复。这就是我尝试使用 CLI 命令管理连接的原因)这可能已经足够危险了)
如何解决?
Airflow 在处理您的 cli 命令期间解密连接密码。
您可以使用 airflow connections list --o yaml
查看您的记录是否真的在数据库中加密。
此外,如果您能够访问 cli,您也能够访问配置,这意味着您始终可以提取数据库连接和 fernet_key
并自行获取完整密码。
Jorrick 的回答是正确的,但我想详细说明一下背景,因为我觉得它将在问题和答案之间架起一座桥梁。
当 DAG/user 要求时,Airflow 需要能够解密连接,这是非常可以理解的。这是应用程序正常运行所必需的,因此 Airflow 必须假设如果用户可以创作 DAG,则允许他使用系统资源(连接、变量)。
安全措施处于不同的水平。如果使用它们(使用 Fernet),Airflow 将加密敏感信息(如连接密码),这意味着在数据库本身中,值是加密的。这里的安全问题是 ferent_key 存储在哪里?它在旋转吗?等...
还有许多其他安全层处理不同的方面,例如:访问控制、在 Ui 中隐藏敏感信息,但这是一个不同的话题。
我认为了解安全处理两类用户的重要事项:
- 允许的用户,但您只想限制他可以执行的操作或他可以看到的内容。 (这是 Airflow 本身处理的更多内容,请参阅安全性 docs)
- 恶意用户想要造成破坏。虽然 Airflow 确实在该领域提供了一些功能,但更多的问题在于您在哪里设置 Airflow 以及您如何保护它(IP 允许列表等...)
请记住,如果恶意用户获得了对 Airflow 服务器的访问权限,那么您将无能为力。这个用户可以简单地使用他的管理员权限来做任何事情。这与入侵您拥有的任何其他服务器的用户没有什么不同。