airflow.providers.yandex.secrets.lockbox

从 Yandex Cloud Lockbox 获取密钥相关的对象。

模块内容

LockboxSecretBackend

从 Yandex Lockbox 检索连接、变量或配置。

class airflow.providers.yandex.secrets.lockbox.LockboxSecretBackend(yc_oauth_token=None, yc_sa_key_json=None, yc_sa_key_json_path=None, yc_connection_id=None, folder_id='', connections_prefix='airflow/connections', variables_prefix='airflow/variables', config_prefix='airflow/config', sep='/', endpoint=None)[源代码]

基类: airflow.secrets.BaseSecretsBackend, airflow.utils.log.logging_mixin.LoggingMixin

从 Yandex Lockbox 检索连接、变量或配置。

可以通过 airflow.cfg 进行配置,如下所示

[secrets]
backend = airflow.providers.yandex.secrets.lockbox.LockboxSecretBackend
backend_kwargs = {"connections_prefix": "airflow/connections"}

例如,当 {"connections_prefix": "airflow/connections"} 设置时,如果使用路径 airflow/connections/smtp_default 定义了密钥,则可以使用 conn_id smtp_default 访问该连接。

{"variables_prefix": "airflow/variables"} 设置时,如果使用路径 airflow/variables/hello 定义了密钥,则可以使用名称 hello 访问该变量。

{"config_prefix": "airflow/config"} 设置时,如果使用路径 airflow/config/sql_alchemy_conn 定义了密钥,则可以使用键 sql_alchemy_conn 访问该配置。

如果前缀为空,则不会将请求发送到 Yandex Lockbox。

[secrets]
backend = airflow.providers.yandex.secrets.lockbox.LockboxSecretBackend
backend_kwargs = {"yc_connection_id": "<connection_ID>", "folder_id": "<folder_ID>"}

您需要指定凭据或 yandexcloud 连接的 ID 才能连接到 Yandex Lockbox。凭据将按以下优先级使用

  • OAuth 令牌

  • 来自 JSON 文件的服务帐户密钥

  • JSON 格式的服务帐户密钥

  • Yandex Cloud 连接

如果您未指定任何凭据,系统将使用默认连接 ID:yandexcloud_default

此外,您需要指定 Yandex Cloud 文件夹 ID,以在其中搜索 Yandex Lockbox 密钥。如果未指定文件夹 ID,则请求将使用连接的 folder_id(如果已指定)。

参数
  • yc_oauth_token (str | None) – 指定用户帐户 OAuth 令牌以连接到 Yandex Lockbox。参数值应如下所示: y3_xx123

  • yc_sa_key_json (dict | str | None) – 以 JSON 格式指定服务帐户密钥。参数值应如下所示:{"id": "...", "service_account_id": "...", "private_key": "..."}

  • yc_sa_key_json_path (str | None) – 指定 JSON 文件路径中的服务帐户密钥。参数值应如下所示:/home/airflow/authorized_key.json,而文件内容应具有以下格式:{"id": "...", "service_account_id": "...", "private_key": "..."}

  • yc_connection_id (str | None) – 指定用于连接到 Yandex Lockbox 的连接 ID。默认值为 yandexcloud_default

  • folder_id (str) – 指定在其中搜索 Yandex Lockbox 密钥的文件夹 ID。如果设置为 None (JSON 中的 null),则请求将使用连接的 folder_id(如果已指定)。

  • connections_prefix (str | None) – 指定读取密钥以获取连接的前缀。如果设置为 None (JSON 中的 null),则不会将连接请求发送到 Yandex Lockbox。默认值为 airflow/connections

  • variables_prefix (str | None) – 指定读取密钥以获取变量的前缀。如果设置为 None (JSON 中的 null),则不会将变量请求发送到 Yandex Lockbox。默认值为 airflow/variables

  • config_prefix (str | None) – 指定读取密钥以获取配置的前缀。如果设置为 None (JSON 中的 null),则不会将变量请求发送到 Yandex Lockbox。默认值为 airflow/config

  • sep (str) – 指定用于连接 secret_prefixsecret_id 的分隔符。默认值为 /

  • endpoint (str | None) – 指定 API 端点。如果设置为 None (JSON 中的 null),则请求将使用连接端点(如果已指定);否则,它们将使用默认端点。

get_conn_value(conn_id)[源代码]

从密钥后端检索表示 Connection 对象的字符串值。

参数

conn_id (str) – 连接 ID

返回

连接值

返回类型

str | None

get_variable(key)[源代码]

返回 Airflow 变量的值。

参数

key (str) – 变量键

返回

变量值

返回类型

str | None

get_config(key)[源代码]

返回 Airflow 配置键的值。

参数

key (str) – 配置键

返回

配置值

返回类型

str | None

此条目是否有帮助?