Secrets Backend

1.10.10 版本中的新增功能。

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

注意

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

你还可以从 Secrets Backend 获取包含敏感数据的 Airflow 配置。有关更多详细信息,请参阅 设置配置选项

搜索路径

在查找连接/变量时,Airflow 默认将首先搜索环境变量,然后搜索元存储数据库。

如果您启用替代密码后端,它将首先被搜索,然后是环境变量,最后是元存储。此搜索顺序不可配置。不过,在某些替代密码后端中,您可能有权选择在密码后端中搜索哪些连接/变量/配置。请查看您正在使用的密码后端的文档,以了解是否存在此类选项。

警告

在使用环境变量或替代密码后端来存储密码或变量时,可能会创建键冲突。如果后端之间存在重复键,则所有写入操作都将更新元存储中的值,但所有读取操作都将返回对请求键的第一个匹配,从自定义后端开始,然后是环境变量,最后是元存储。

配置

[secrets] 部分具有以下选项

[secrets]
backend =
backend_kwargs =

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

您可以使用 json 提供 backend_kwargs,它将作为 kwargs 传递给密码后端的 __init__ 方法。

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

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

支持的核心后端

Apache Airflow 社区提供的密码后端

Apache Airflow 社区还发布了社区开发的提供程序(提供程序包),其中一些还提供了扩展 Apache Airflow 密码后端功能的处理程序。您可以在 密码后端 中看到所有这些提供程序。

推出您自己的密码后端

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

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

可以通过向 backend_kwargs 提供一个 JSON 字符串来在 airflow.cfg 中配置 SecretsBackend 的其他参数,该字符串将传递给 SecretsBackend 的 __init__。有关更多详细信息,请参见 配置,有关示例,请参见 SSM 参数存储

适用于不兼容 Airflow 的连接秘密格式

Secret 后端的默认实现需要使用 Airflow 特定的格式来存储连接的密钥。目前,大多数社区提供的实现要求将连接存储为 JSON 或 Airflow 连接 URI 格式(请参阅 Secret 后端)。但是,某些组织可能需要以其他方式存储凭据(密码/令牌等)。例如,如果需要将相同的凭据存储用于多个数据平台,或者如果您使用的是具有内置凭据轮换机制的服务,而该机制不适用于 Airflow 特定的格式。在这种情况下,您需要按照上一章所述自行构建 Secret 后端,可能需要扩展现有的 Secret 后端并将其调整为组织使用的方案。

此条目是否有用?