在Airflow中,可以使用密码变量来保存敏感信息,例如API密钥或数据库密码。但是,默认情况下,这些密码变量在Airflow数据库中以明文的形式保存。为了更好地保护存储的密码,可以使用加密机制来保护敏感信息。
以下是使用Fernet加密算法来加密Airflow密码变量的示例代码:
import os
from cryptography.fernet import Fernet
from airflow.models import Variable
# 生成加密密钥
key = Fernet.generate_key()
fernet_cipher = Fernet(key)
# 加密密码
my_password = "my_database_password"
encrypted_password = fernet_cipher.encrypt(my_password.encode())
# 保存加密后的密码变量
Variable.set("encrypted_database_password", encrypted_password.decode())
# 解密密码
encrypted_password = Variable.get("encrypted_database_password")
decrypted_password = fernet_cipher.decrypt(encrypted_password.encode())
print(decrypted_password.decode())
在这个示例中,首先生成Fernet密钥,然后使用该密钥来加密密码变量。加密后,保存加密的密码变量。当需要解密密码变量时,使用相同的Fernet密钥来解密密码。
请注意,在生产环境中,应该将Fernet密钥存储在安全的位置,例如加密的文件中。
上一篇:Airflow每周调度的开始日期可以使用Airflow的DateTimeOperator设置开始日期,并使用Python的datetime库动态计算开始日期。
下一篇:Airflow命令错误:参数GROUP_OR_COMMAND:celery子命令仅适用于CeleryExecutor