次の方法で共有


ワークフロー オーケストレーション マネージャーの Azure Key Vault を有効にする

適用対象: Azure Data Factory Azure Synapse Analytics

ヒント

企業向けのオールインワン分析ソリューション、Microsoft Fabric の Data Factory をお試しください。 Microsoft Fabric は、データ移動からデータ サイエンス、リアルタイム分析、ビジネス インテリジェンス、レポートまで、あらゆるものをカバーしています。 無料で新しい試用版を開始する方法について説明します。

Note

ワークフロー オーケストレーション マネージャーは Apache Airflow を利用しています。

Apache Airflow には、変数や接続などの機密情報を安全に保存するためのさまざまなバックエンドが用意されています。 Azure Key Vault はこれらのオプションの 1 つです。 この記事では、ワークフロー オーケストレーション マネージャー環境内の Apache Airflow のシークレット バックエンドとして Key Vault を構成するプロセスについて説明します。

Note

Azure Data Factory 用のワークフロー オーケストレーション マネージャーは、オープンソースの Apache Airflow アプリケーションに依存しています。 Airflow のドキュメントとその他のチュートリアルについては、Apache Airflow のドキュメントまたはコミュニティの Web ページをご覧ください。

前提条件

  • Azure サブスクリプション:Azure サブスクリプションをお持ちでない場合は、開始する前に無料の Azure アカウントを作成してください。
  • Azure Storage アカウント: ストレージ アカウントがない場合の作成手順については、「Azure Storage アカウントの作成」を参照してください。 ストレージ アカウントで、選択したネットワーク からのアクセスのみが許可されていることを確認します。
  • Azure Key Vault: 所有していない場合、このチュートリアルに従って新しい Key Vault インスタンスを作成できます
  • サービス プリンシパル: 新しいサービス プリンシパルを作成するか、既存のサービス プリンシパルを使用して Key Vault インスタンスにアクセスするためのアクセス許可を付与できます。 たとえば、key-vault-contributor ロールを Key Vault インスタンスのサービス プリンシパル名 (SPN) に付与し、SPN でそれを管理できるようにします。 この記事で後述するように、サービス プリンシパルのクライアント IDクライアント シークレット (API キー) を取得し、環境変数として追加する必要もあります。

アクセス許可

組み込みロールから、Key Vault インスタンスの以下のロールを SPN に割り当てます。

  • Key Vault Contributor
  • Key Vault Secrets User

ワークフロー オーケストレーション マネージャー インスタンスの Key Vault バックエンドを有効にする

ワークフロー オーケストレーション マネージャー インスタンスのシークレット バックエンドとして Azure Key Vault を有効にするには:

  1. ワークフロー オーケストレーション マネージャー インスタンスの統合ランタイム環境に移動します。

  2. 最初の Airflow 環境のセットアップ時に、[Airflow の要件] に合わせて apache-airflow-providers-microsoft-azure をインストールします。

    Airflow の要件を強調表示する Airflow 環境のセットアップ ウィンドウを示すスクリーンショット。

  3. 統合ランタイム プロパティの [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 環境のセットアップでの Airflow 構成のオーバーライド設定の構成を示すスクリーンショット。

  4. Airflow 統合ランタイム プロパティの環境変数の構成に以下の変数を追加します。

    • AZURE_CLIENT_ID = <SPN のクライアント ID>
    • AZURE_TENANT_ID = <テナント ID>
    • AZURE_CLIENT_SECRET = <SPN のクライアント シークレット>

    Airflow 統合ランタイム プロパティの環境変数セクションを示すスクリーンショット。

  5. これで、変数と接続を使用することができ、それらは自動的に Key Vault に格納されます。 接続と変数の名前は、前に定義した AIRFLOW__SECRETS__BACKEND_KWARGS に従う必要があります。 詳細については、シークレット バック エンドとしての Azure Key Vault に関するページを参照してください。

Key Vault をバックエンドとして使用するサンプル 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. Key Vault の接続用の変数を格納します。 詳細については、「Azure Key Vault への資格情報の格納」を参照してください。

    Azure Key Vault のシークレットの構成を示すスクリーンショット。