airflow.providers.microsoft.azure.secrets.key_vault

此模块包含 Azure Key Vault 后端。

AzureKeyVaultBackend

从 Azure Key Vault 密钥中检索 Airflow 连接或变量。

模块内容

class airflow.providers.microsoft.azure.secrets.key_vault.AzureKeyVaultBackend(connections_prefix='airflow-connections', variables_prefix='airflow-variables', config_prefix='airflow-config', vault_url='', sep='-', *, tenant_id='', client_id='', client_secret='', managed_identity_client_id='', workload_identity_tenant_id='', **kwargs)[source]

Bases: airflow.secrets.BaseSecretsBackend, airflow.utils.log.logging_mixin.LoggingMixin

从 Azure Key Vault 密钥中检索 Airflow 连接或变量。

Azure Key Vault 可以在 airflow.cfg 中配置为 secrets 后端。

[secrets]
backend = airflow.providers.microsoft.azure.secrets.key_vault.AzureKeyVaultBackend
backend_kwargs = {"connections_prefix": "airflow-connections", "vault_url": "<azure_key_vault_uri>"}

例如,如果 secrets 前缀为 airflow-connections-smtp-default,在提供 {\"connections_prefix\": \"airflow-connections\"} 并请求 conn_id 为 smtp-default 时即可访问。同样,如果变量前缀为 airflow-variables-hello,在提供 {\"variables_prefix\": \"airflow-variables\"} 并请求变量键 hello 时即可访问。

对于客户端身份验证,使用 Azure Python SDK 中的 DefaultAzureCredential 作为凭证提供者,它支持服务主体、托管标识和用户凭证。

例如,要使用带有密钥的服务主体,可设置环境变量 AZURE_TENANT_IDAZURE_CLIENT_IDAZURE_CLIENT_SECRET

另请参阅

有关客户端身份验证的更多细节,请参阅 DefaultAzureCredential 类参考文档:https://docs.microsoft.com/en-us/python/api/azure-identity/azure.identity.defaultazurecredential?view=azure-python

参数:
  • connections_prefix (str) – 指定用于读取连接的 secret 前缀。如果设为 None(null),则不会向 Azure Key Vault 发送连接请求

  • variables_prefix (str) – 指定用于读取变量的 secret 前缀。如果设为 None(null),则不会向 Azure Key Vault 发送变量请求

  • config_prefix (str) – 指定用于读取配置的 secret 前缀。如果设为 None(null),则不会向 Azure Key Vault 发送配置请求

  • vault_url (str) – 要使用的 Azure Key Vault 的 URL

  • sep (str) – 用于连接 secret_prefix 和 secret_id 的分隔符。默认:“-”

  • tenant_id (str) – Azure Key Vault 所在租户的 tenant_id。如果未提供,则回退到 DefaultAzureCredential

  • client_id (str) – Azure Key Vault 所在租户的 client_id。如果未提供,则回退到 DefaultAzureCredential

  • managed_identity_client_id (str) – 用户分配托管标识的 client ID。如果与 workload_identity_tenant_id 一起提供,则会传递给 DefaultAzureCredential

  • workload_identity_tenant_id (str) – 应用程序的 Microsoft Entra 租户 ID,也称为“目录”ID。如果与 managed_identity_client_id 一起提供,则会传递给 DefaultAzureCredential

vault_url = ''[source]
connections_prefix: str | None[source]
variables_prefix: str | None[source]
config_prefix: str | None[source]
sep = '-'[source]
tenant_id = ''[source]
client_id = ''[source]
client_secret = ''[source]
managed_identity_client_id = ''[source]
workload_identity_tenant_id = ''[source]
kwargs[source]
property client: azure.keyvault.secrets.SecretClient[source]

创建 Azure Key Vault 客户端。

get_conn_value(conn_id, team_name=None)[source]

从 Azure Key Vault 密钥获取 Airflow 连接的序列化表示。

参数:
  • conn_id (str) – 要检索的 Airflow 连接 ID

  • team_name (str | None) – 与尝试访问该连接的任务关联的团队名称(如果有)

get_variable(key, team_name=None)[source]

从 Azure Key Vault 密钥获取 Airflow 变量。

参数:
  • key (str) – 变量键

  • team_name (str | None) – 与尝试访问该变量的任务关联的团队名称(如果有)

返回:

变量值

返回类型:

str | None

get_config(key)[source]

获取 Airflow 配置。

参数:

key (str) – 配置选项键

返回:

配置选项值

返回类型:

str | None

static build_path(path_prefix, secret_id, sep='-')[source]

给定 path_prefix 和 secret_id,构建 Azure Key Vault 后端可接受的合法 secret 名称。

同时会将路径中的下划线替换为短横线,以便在环境变量之间轻松切换,例如 connection_default 将变为 connection-default

参数:
  • path_prefix (str) – 要检索的 secret 的路径前缀

  • secret_id (str) – secret 的名称

  • sep (str) – 用于连接 path_prefix 和 secret_id 的分隔符

此条目是否有帮助?