啟用工作流程協調流程管理員的 Azure 金鑰保存庫
適用於:Azure Data Factory Azure Synapse Analytics
提示
試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用!
注意
工作流程協調管理員是由 Apache Airflow 提供。
Apache Airflow 提供各種後端,以安全地儲存敏感性資訊,例如變數和連線。 其中一個選項是 Azure Key Vault。 本文將逐步引導您完成在工作流程協調流程管理員環境中將 金鑰保存庫 設定為 Apache Airflow 秘密後端的程式。
注意
適用於 Azure Data Factory 的工作流程協調流程管理員依賴開放原始碼 Apache Airflow 應用程式。 如需 Airflow 的文件和更多教學課程,請參閱 Apache Airflow 文件 或 社群 網頁。
必要條件
- Azure 訂用帳戶:如果您沒有 Azure 訂用帳戶,請在開始前先建立免費 Azure 帳戶。
- Azure 儲存體帳戶: 如果您沒有儲存體帳戶,請參閱 建立 Azure 儲存體帳戶,以取得建立的步驟。 請確定儲存體帳戶只允許從選取的網路進行存取。
- Azure Key Vault: 如果您沒有 Azure Key Vault,可以遵循這個教學課程建立新的 Key Vault 執行個體。
- 服務主體: 您可以 建立新的服務主體 或使用現有的服務主體,並授與它存取 Key Vault 執行個體的權限。 例如,您可以將 key-vault-contributor 角色 授與 Key Vault 執行個體的服務主體名稱 (SPN),讓 SPN 可以管理它。 您也需要取得服務主體的 用戶端識別碼,和 客戶端密碼 (API 金鑰) 以將它們新增為環境變數,如本文稍後所述。
權限
從 內建角色,在 Key Vault 執行個體中將下列角色指派給 SPN:
- Key Vault 參與者
- Key Vault 祕密使用者
為工作流程協調流程管理員實例啟用 金鑰保存庫 後端
若要啟用 金鑰保存庫 作為工作流程協調流程管理員實例的秘密後端:
在您初始的 Airflow 環境設定期間,安裝 Airflow 要求的 apache-airflow-providers-microsoft-azure。
在整合式執行階段屬性,新增 Airflow 設定覆寫的下列設定:
- 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:
在 Airflow 整合執行階段屬性新增環境變數設定的下列變數:
- AZURE_CLIENT_ID = <SPN 的用戶端識別碼>
- AZURE_TENANT_ID = <租用戶識別碼>
- AZURE_CLIENT_SECRET = <SPN 的用戶端祕密>
如此一來,您就可以使用變數和連線,並可自動將其儲存在 Key Vault。 連線和變數的名稱必須遵循
AIRFLOW__SECRETS__BACKEND_KWARGS
,如先前所定義。 如需詳細資訊,請參閱 以 Azure Key Vault 作為祕密後端。
使用 Key Vault 作為後端的範例 DAG
建立含有下列內容的新 Python 檔案
adf.py
。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
在 Key Vault 中儲存連線的變數。 如需詳細資訊,請參閱 將認證儲存在 Azure Key Vault 中 (部分機器翻譯)。