Abilitare Azure Key Vault per Workflow Orchestration Manager
SI APPLICA A: Azure Data Factory
Azure Synapse Analytics
Suggerimento
Provare Data Factory in Microsoft Fabric, una soluzione di analisi all-in-one per le aziende. Microsoft Fabric copre tutto, dallo spostamento dati al data science, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Vedere le informazioni su come iniziare una nuova prova gratuita!
Nota
Il gestore dell'orchestrazione del flusso di lavoro dispone di tecnologia Apache Airflow.
Apache Airflow offre diversi back-end per l'archiviazione sicura di informazioni riservate, ad esempio variabili e connessioni. Una di queste opzioni è Azure Key Vault. Questo articolo illustra il processo di configurazione di Key Vault come back-end segreto per Apache Airflow all'interno di un ambiente di Workflow Orchestration Manager.
Nota
Workflow Orchestration Manager per Azure Data Factory si basa sull'applicazione Apache Airflow open source. Per la documentazione e altre esercitazioni su Airflow, vedere la documentazione di Apache Airflow o le pagine Web della community.
Prerequisiti
- Sottoscrizione di Azure: se non si dispone di una sottoscrizione di Azure, prima di iniziare, creare un account Azure gratuito.
- Archiviazione di Azure account: se non si ha un account di archiviazione, vedere Creare un account Archiviazione di Azure per la procedura per crearne uno. Assicurarsi che l'account di archiviazione consenta l'accesso solo da reti selezionate.
- Azure Key Vault: è possibile seguire questa esercitazione per creare una nuova istanza di Key Vault se non ne se ne ha una a disposizione.
- Entità servizio: è possibile creare una nuova entità servizio o usarne una esistente e concederle l'autorizzazione per accedere all'istanza di Key Vault. Ad esempio, è possibile concedere il ruolo collaboratore di Key Vault al nome dell'entità servizio (SPN) per la propria istanza Key Vault in modo che il nome SPN possa gestirla. È inoltre necessario ottenere l'ID client e il segreto client (chiave API) dell'entità servizio per aggiungerli come variabili di ambiente, come descritto più avanti in questo articolo.
Autorizzazioni
Assegnare il nome SPN ai seguenti ruoli predefiniti nell'istanza Key Vault:
- Collaboratore di Key Vault
- Utente dei segreti di Key Vault
Abilitare il back-end di Key Vault per un'istanza di Workflow Orchestration Manager
Per abilitare Key Vault come back-end segreto per l'istanza di Workflow Orchestration Manager:
Passare all'ambiente del runtime di integrazione dell'istanza di Workflow Orchestration Manager.
Installare apache-airflow-providers-microsoft-azure per i requisiti di Airflow durante la configurazione iniziale dell'ambiente Airflow.
Aggiungere le impostazioni seguenti per le sostituzioni della configurazione airflow nelle proprietà del runtime di integrazione:
- 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:
Aggiungere le variabili seguenti per la configurazione delle variabili di ambiente nelle proprietà del runtime di integrazione Airflow:
- AZURE_CLIENT_ID = <ID client dell'SPN>
- AZURE_TENANT_ID = <Id Tenant>
- AZURE_CLIENT_SECRET = <Segreto client dell'SPN>
È quindi possibile usare variabili e connessioni che vengono archiviate automaticamente in Key Vault. I nomi delle connessioni e delle variabili devono seguire
AIRFLOW__SECRETS__BACKEND_KWARGS
, come definito in precedenza. Per altre informazioni, vedere Azure Key Vault come back-end segreto.
DAG di esempio che usa Key Vault come back-end
Creare un nuovo file Python
adf.py
con il contenuto seguente: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
Archiviare le variabili per le connessioni in Key Vault. Per altre informazioni, vedere Memorizzare credenziali in Azure Key Vault.