在Apache Airflow中,跨DAG任务访问凭据通常涉及到安全地存储和检索敏感信息。虽然Airflow提供了连接(Connections)和变量(Variables)来管理这些信息,但有时你可能希望避免使用它们,特别是在需要更高安全性的场景下。以下是一些方法和最佳实践,用于在Airflow中跨DAG任务安全地访问凭据:
首先,安装必要的Python库:
pip install hvac
在Airflow中配置Vault连接:
from airflow import settings
from airflow.models import Connection
# 创建一个新的连接
conn = Connection(
conn_id="vault_default",
conn_type="vault",
host="vault.example.com",
port=8200,
schema="",
login="",
password=""
)
settings.CONN_MANAGER.save(conn)
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
import hvac
def get_secret():
client = hvac.Client(url='http://vault.example.com:8200')
client.auth.approle.login(role_id='your-role-id', secret_id='your-secret-id')
secret = client.secrets.kv.v2.read_secret_version(path='your-secret-path')
return secret['data']['data']
def use_secret(**context):
secret = get_secret()
print(f"Retrieved secret: {secret}")
dag = DAG('example_dag', schedule_interval=None)
task = PythonOperator(
task_id='use_secret_task',
python_callable=use_secret,
provide_context=True,
dag=dag,
)
通过上述方法,你可以在Airflow中安全地跨DAG任务访问凭据,而不必依赖于Airflow的内置连接或变量功能。
领取专属 10元无门槛券
手把手带您无忧上云