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 参数存储 以获取示例。