Airflow 峰会 2025 将于 10 月 07-09 日举行。立即注册抢购早鸟票!

Secrets 后端

自版本 1.10.10 加入。

除了从环境变量或元数据数据库中检索连接和变量外,您还可以启用备用 secrets 后端,通过 Apache Airflow 社区提供的后端Secret 后端 中检索 Airflow 连接或 Airflow 变量。

注意

Airflow UI 仅显示存储在元数据数据库中的连接和变量,而不显示通过其他任何方式存储的。如果您使用备用 secrets 后端,请在您的后端中查看变量和连接的值。

您还可以从 Secrets 后端获取包含敏感数据的 Airflow 配置。更多详情请参见 设置配置选项

搜索路径

查找连接/变量时,Airflow 默认首先搜索环境变量,其次搜索元数据数据库。

如果您启用备用 secrets 后端,它将首先被搜索,其次是环境变量,然后是元数据数据库。此搜索顺序不可配置。不过,在某些备用 secrets 后端中,您可能可以选择过滤在 secret 后端中搜索哪些连接/变量/配置。请查阅您正在使用的 secret 后端的文档,查看是否有此选项。

另一方面,如果定义了 worker secrets 后端,查找顺序会优先搜索 worker secrets 后端,然后才是 secrets 后端。

警告

当使用环境变量或备用 secrets 后端存储 secrets 或变量时,可能会发生键冲突。如果在后端之间出现重复的键,所有写入操作都会更新元数据数据库中的值,但所有读取操作将返回按自定义后端、然后是环境变量、最后是元数据数据库的顺序找到的第一个匹配项。

配置

配置的 [secrets] 部分包含以下选项

[secrets]
backend =
backend_kwargs =

backend 设置为您要启用的后端的完全限定类名。

您可以提供 json 格式的 backend_kwargs,它将作为 kwargs 传递给您的 secrets 后端的 __init__ 方法。

如果您想检查当前设置的是哪个 secret 后端,可以使用如下示例所示的 airflow config get-value secrets backend 命令。

$ airflow config get-value secrets backend
airflow.providers.google.cloud.secrets.secret_manager.CloudSecretManagerBackend

Worker 特有配置

上述部分介绍了所有 Airflow 组件的通用配置选项。但在 Airflow 3 中,如果您想为 worker 配置单独的 secrets 后端,可以使用以下选项:

[workers]
secrets_backend =
secrets_backend_kwargs =

secrets_backend 设置为您要启用的后端的完全限定类名。

您可以提供 json 格式的 secrets_backend_kwargs,它将作为 kwargs 传递给 worker secrets 后端的 __init__ 方法。

如果您想检查当前设置的是哪个 secret 后端,可以使用如下示例所示的 airflow config get-value workers secrets_backend 命令。

$ airflow config get-value workers secrets_backend
airflow.providers.google.cloud.secrets.secret_manager.CloudSecretManagerBackend

支持的核心后端

Apache Airflow 社区提供的 Secret 后端

Apache Airflow 社区还发布社区开发的 Provider(Provider),其中一些也提供了扩展 Apache Airflow secret 后端能力的 handler。您可以在 Secret 后端 中查看所有这些 provider。

开发自己的 Secrets 后端

secrets 后端是 airflow.secrets.base_secrets.BaseSecretsBackend 的子类,并且必须实现 get_connection()get_conn_value() 来检索连接,实现 get_variable() 来检索变量,实现 get_config() 来检索 Airflow 配置。

编写完后端类后,在 airflow.cfg[secrets] 部分的 backend 键中提供完全限定类名。

您的 SecretsBackend 的额外参数可以在 airflow.cfg 中配置,通过向 backend_kwargs 提供 JSON 字符串,该字符串将传递给您的 SecretsBackend 的 __init__ 方法。更多详情请参见 配置,示例请参见 SSM Parameter Store

适配非 Airflow 兼容的连接 Secret 格式

Secret 后端的默认实现要求使用 Airflow 特定的格式来存储连接的 secrets。目前大多数社区提供的实现要求连接以 JSON 或 Airflow 连接 URI 格式存储(参见 Secret 后端)。然而,有些组织可能需要以其他方式存储凭据(密码/token 等)。例如,如果同一凭据存储需要用于多个数据平台,或者您正在使用的服务具有内置的凭据轮换机制,但该机制与 Airflow 特定格式不兼容。在这种情况下,您需要按照前一章所述,开发自己的 secret 后端,可能需要扩展现有的 secrets 后端并使其适应您组织使用的方案。

此条目有帮助吗?