共用方式為


啟用工作流程協調流程管理員的 Azure 金鑰保存庫

適用於:Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告等所有項目。 了解如何免費啟動新的試用版

注意

工作流程協調流程管理員由 Apache Airflow 提供。

Apache Airflow 提供各種後端,以安全地儲存機密資訊,例如變數和連線。 其中一個選項是 Azure 金鑰保存庫。 本文將逐步引導您完成在工作流程協調流程管理員環境中將 金鑰保存庫 設定為 Apache Airflow 秘密後端的程式。

注意

適用於 Azure Data Factory 的工作流程協調流程管理員依賴開放原始碼 Apache Airflow 應用程式。 如需 Airflow 的檔和更多教學課程,請參閱 Apache Airflow 社群 網頁。

必要條件

  • Azure 訂用帳戶:如果您沒有 Azure 訂用帳戶,請在開始前先建立免費 Azure 帳戶
  • Azure 儲存體 帳戶:如果您沒有記憶體帳戶,請參閱建立 Azure 儲存體 帳戶以取得建立帳戶的步驟。 確定記憶體帳戶只允許從選取的網路存取。
  • Azure 金鑰保存庫:如果您沒有 金鑰保存庫 實例,您可以遵循本教學課程來建立新的 金鑰保存庫 實例
  • 服務主體:您可以建立新的服務主體,或使用現有的服務主體,並授與其存取 金鑰保存庫 實例的許可權。 例如,您可以將金鑰保存庫參與者角色與 金鑰保存庫 實例的服務主體名稱 (SPN),讓 SPN 可以管理它。 您也需要取得服務主體的 用戶端標識碼客戶端密碼 (API 金鑰),以將它們新增為環境變數,如本文稍後所述。

權限

從內建角色,將 金鑰保存庫 實例中的下列角色指派給SPN:

  • Key Vault 參與者
  • Key Vault 祕密使用者

啟用工作流程協調流程管理員實例的 金鑰保存庫 後端

若要啟用 金鑰保存庫 作為工作流程協調流程管理員實例的秘密後端:

  1. 移至 工作流程協調流程管理員實例的整合運行時間環境

  2. 在初始 Airflow 環境設定期間,安裝 apache-airflow-providers-microsoft-azure符合 Airflow 需求

    顯示 [Airflow 環境設定] 視窗的螢幕快照,其中醒目提示 [Airflow 需求]。

  3. 在整合運行時間屬性中新增 Airflow 組態覆寫下列設定:

    • AIRFLOW__SECRETS__BACKENDairflow.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 設定的設定會覆寫 Airflow 環境設定中的設定。

  4. 在 Airflow 整合運行時間屬性中,為 環境變數組態新增下列變數

    • AZURE_CLIENT_ID = <SPN 的用戶端識別碼>
    • AZURE_TENANT_ID = <租使用者識別碼>
    • AZURE_CLIENT_SECRET = <SPN 的客戶端密碼>

    顯示 Airflow 整合運行時間屬性之 [環境變數] 區段的螢幕快照。

  5. 然後,您可以使用變數和連線,而且它們會自動儲存在 金鑰保存庫 中。 連接和變數的名稱必須遵循 AIRFLOW__SECRETS__BACKEND_KWARGS,如先前所定義。 如需詳細資訊,請參閱 Azure 金鑰保存庫 作為秘密後端

使用 金鑰保存庫 作為後端的 DAG 範例

  1. 使用下列內容建立新的 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
    
  2. 在 金鑰保存庫 中儲存連線的變數。 如需詳細資訊,請參閱在 Azure 金鑰保存庫 中儲存認證。

    顯示 Azure 金鑰保存庫 中秘密設定的螢幕快照。