跳到主要内容

Airflow Variables 加密

在 Apache Airflow 中,Variables 是一种用于存储和传递配置信息的机制。然而,当这些变量包含敏感信息(如 API 密钥、数据库密码等)时,直接存储可能会带来安全风险。为了解决这个问题,Airflow 提供了变量加密的功能,确保敏感数据在存储和传输过程中得到保护。

什么是 Airflow Variables 加密?

Airflow Variables 加密是指对存储在 Airflow 中的敏感变量进行加密处理,以防止未经授权的访问。通过加密,即使数据库被泄露,攻击者也无法轻易获取敏感信息。

如何启用 Airflow Variables 加密

要启用 Airflow Variables 加密,您需要配置 Airflow 以使用加密密钥。以下是逐步指南:

1. 生成加密密钥

首先,您需要生成一个加密密钥。可以使用以下命令生成一个随机的密钥:

bash
openssl rand -hex 32

这将生成一个 32 字节的十六进制字符串,作为您的加密密钥。

2. 配置 Airflow 使用加密密钥

接下来,您需要在 Airflow 的配置文件 airflow.cfg 中设置加密密钥。找到以下配置项并设置为您生成的密钥:

ini
[core]
fernet_key = your_generated_fernet_key

3. 加密 Variables

一旦配置了加密密钥,Airflow 将自动对存储的 Variables 进行加密。您可以通过 Airflow UI 或 CLI 创建和更新 Variables,Airflow 会自动处理加密和解密。

实际案例

假设您有一个包含数据库连接信息的 Variable,您希望对其进行加密。以下是具体步骤:

1. 创建加密 Variable

通过 Airflow UI 或 CLI 创建一个新的 Variable:

bash
airflow variables set db_connection '{"host": "localhost", "port": 5432, "username": "user", "password": "securepassword"}'

2. 查看加密后的 Variable

在 Airflow UI 中,您可以看到 Variable 的值已经被加密存储。即使您直接查看数据库,也无法直接读取明文信息。

3. 在 DAG 中使用加密 Variable

在 DAG 中,您可以通过以下方式使用加密的 Variable:

python
from airflow.models import Variable

db_connection = Variable.get("db_connection", deserialize_json=True)
print(db_connection)

输出将是解密的 JSON 对象:

json
{
"host": "localhost",
"port": 5432,
"username": "user",
"password": "securepassword"
}

总结

通过启用 Airflow Variables 加密,您可以有效保护敏感信息,防止数据泄露。本文介绍了如何生成加密密钥、配置 Airflow 以及在实际场景中使用加密 Variables。希望这些内容能帮助您更好地理解和使用 Airflow 的加密功能。

附加资源

练习

  1. 生成一个新的加密密钥,并在 Airflow 中配置使用。
  2. 创建一个包含敏感信息的 Variable,并在 DAG 中使用它。
  3. 尝试通过 Airflow UI 和 CLI 查看加密后的 Variable,验证其安全性。

通过完成这些练习,您将更深入地理解 Airflow Variables 加密的工作原理和应用场景。