Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Nota:
El trabajo de Apache Airflow funciona con Apache Airflow.
Apache Airflow ofrece varios back-ends que permiten almacenar información confidencial, como variables y conexiones, de forma segura. Una de estas opciones es Azure Key Vault. En este artículo se explica el proceso de configuración de Key Vault como back-end secreto para el trabajo de Apache Airflow.
Requisitos previos
- Suscripción de Azure: Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.
- Azure Key Vault: puede seguir este tutorial para crear una nueva instancia de Key Vault si no tiene ninguna.
- Entidad de servicio: puede crear una nueva entidad de servicio o usar una existente y concederle permiso para acceder a la instancia de Key Vault. Por ejemplo, puede conceder el rol key-vault-contributor al nombre de entidad de seguridad de servicio (SPN) para la instancia de Key Vault para que el SPN pueda administrarlo. También debe obtener el id. de cliente de la entidad de servicio y el secreto de cliente (clave de API) para agregarlos como variables de entorno, como se describe más adelante en este artículo.
Permisos
Asigne al SPN los siguientes roles en la instancia de Key Vault desde los roles integrados:
- Colaborador de almacén de claves
- Usuario de secretos de Key Vault
Configuraciones para habilitar Azure Key Vault como back-end secreto en el trabajo de Apache Airflow.
Requisitos de Airflow: instale apache-airflow-providers-microsoft-azure durante la configuración inicial del entorno de Airflow.
Invalidaciones de configuración: agregue las siguientes configuraciones para las invalidaciones de configuración de Airflow en las propiedades del entorno de ejecución de integración:
-
AIRFLOW__SECRETS__BACKEND:
airflow.providers.microsoft.azure.secrets.key_vault.AzureKeyVaultBackend
-
AIRFLOW__SECRETS__BACKEND_KWARGS:
{"connections_prefix": "airflow-connections", "variables_prefix": "airflow-variables", "vault_url": **\<your keyvault uri\>**}
-
AIRFLOW__SECRETS__BACKEND:
Variables de entorno: agregue las siguientes variables para la configuración de Variable de entorno en las propiedades del entorno de ejecución de integración de Airflow:
- AZURE_CLIENT_ID = <Id. de cliente de SPN>
- AZURE_TENANT_ID = <Id. de inquilino>
- AZURE_CLIENT_SECRET = <Secreto de cliente de SPN>
Con esta configuración, puede usar variables y conexiones dentro de los DAG de Airflow. Los nombres de las conexiones y variables deben seguir
AIRFLOW__SECRETS__BACKEND_KWARGS
, tal como se definió anteriormente. Por ejemplo, si el nombre de la variable essample_var
, debe almacenarla comoairflow-variables-sample-var
. Para más información, consulte Azure Key Vault como back-end secreto.
Ejemplo de DAG mediante Key Vault como back-end
Cree el nuevo archivo
adf.py
de Python con el siguiente contenido:from datetime import datetime, timedelta from airflow.operators.python_operator import PythonOperator from textwrap import dedent from airflow.models import Variable from airflow import DAG import logging def retrieve_variable_from_akv(): variable_value = Variable.get("sample-variable") logger = logging.getLogger(__name__) logger.info(variable_value) with DAG( "tutorial", default_args={ "depends_on_past": False, "email": ["airflow@example.com"], "email_on_failure": False, "email_on_retry": False, "retries": 1, "retry_delay": timedelta(minutes=5), }, description="This DAG shows how to use Azure Key Vault to retrieve variables in Apache Airflow DAG", schedule_interval=timedelta(days=1), start_date=datetime(2021, 1, 1), catchup=False, tags=["example"], ) as dag: get_variable_task = PythonOperator( task_id="get_variable", python_callable=retrieve_variable_from_akv, ) get_variable_task
Variable almacenada en Azure Key Vault.