Habilitación de Azure Key Vault para el Administrador de orquestación de flujo de trabajo
SE APLICA A: Azure Data Factory Azure Synapse Analytics
Sugerencia
Pruebe Data Factory en Microsoft Fabric, una solución de análisis todo en uno para empresas. Microsoft Fabric abarca todo, desde el movimiento de datos hasta la ciencia de datos, el análisis en tiempo real, la inteligencia empresarial y los informes. ¡Obtenga más información sobre cómo iniciar una nueva evaluación gratuita!
Nota:
El Administrador de orquestación de flujo de trabajo cuenta con la tecnología de 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 Apache Airflow en un entorno de Administrador de orquestación de flujo de trabajo.
Nota:
El administrador de orquestación de flujo de trabajo para Azure Data Factory se basa en la aplicación Apache Airflow de código abierto. Puede encontrar documentación y más tutoriales para Airflow en las páginas de Documentación o la Comunidad de Airflow de Apache.
Requisitos previos
- Suscripción de Azure: Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.
- Cuenta de almacenamiento de Azure: si no tiene una cuenta de almacenamiento de Azure, consulte Creación de una cuenta de almacenamiento para crear una. Asegúrese de que la cuenta de almacenamiento solo permita el acceso desde las redes seleccionadas.
- 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
Habilitación del back-end de Key Vault para una instancia de Administrador de orquestación de flujo de trabajo
Para habilitar Key Vault como back-end secreto para la instancia de Administrador de orquestación de flujo de trabajo:
Instale apache-airflow-providers-microsoft-azure para los requisitos de Airflow durante la configuración inicial del entorno de Airflow.
Agregue las siguientes opciones para las invalidaciones de configuración de Airflow en las propiedades del entorno de ejecución integrado:
- 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:
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>
A continuación, puede usar variables y conexiones y se almacenan automáticamente en Key Vault. Los nombres de las conexiones y variables deben seguir
AIRFLOW__SECRETS__BACKEND_KWARGS
, tal como se definió anteriormente. 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
Almacene variables para las conexiones en Key Vault. Para obtener más información, consulte Almacenamiento de credenciales en Azure Key Vault.