Secrets 后端

1.10.10 版本新增。

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

注意

Airflow UI 仅显示存储在元数据数据库中的连接和变量,不显示通过任何其他方法存储的连接和变量。如果您使用替代的密钥后端,请检查您的后端以查看变量和连接的值。

您还可以从密钥后端获取包含敏感数据的 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 键中提供完全限定的类名。

可以在 airflow.cfg 中配置您的 SecretsBackend 的其他参数,方法是将 JSON 字符串提供给 backend_kwargs,该字符串将传递给您的 SecretsBackend 的 __init__。有关更多详细信息,请参阅配置,并参阅 SSM 参数存储 以获取示例。

适配不兼容 Airflow 的连接密钥格式

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

此条目是否有帮助?