다음을 통해 공유


워크플로 오케스트레이션 관리자에 Azure Key Vault 사용

적용 대상: Azure Data Factory Azure Synapse Analytics

기업용 올인원 분석 솔루션인 Microsoft Fabric의 Data Factory를 사용해 보세요. Microsoft Fabric은 데이터 이동부터 데이터 과학, 실시간 분석, 비즈니스 인텔리전스 및 보고에 이르기까지 모든 것을 다룹니다. 무료로 새 평가판을 시작하는 방법을 알아봅니다!

참고 항목

워크플로 오케스트레이션 매니저는 Apache Airflow를 통해 구동됩니다.

Apache Airflow는 변수 및 연결과 같은 중요한 정보를 안전하게 저장하기 위한 다양한 백 엔드를 제공합니다. 이러한 옵션 중 하나는 Azure Key Vault입니다. 이 문서에서는 워크플로 오케스트레이션 관리자 환경 내에서 Apache Airflow의 비밀 백 엔드로 Key Vault를 구성하는 프로세스를 안내합니다.

참고 항목

Azure Data Factory용 워크플로 오케스트레이션 관리자는 오픈 소스 Apache Airflow 애플리케이션을 사용합니다. Airflow에 대한 설명서와 추가 자습서는 Apache Airflow 설명서 또는 커뮤니티 웹 페이지를 참조하십시오.

필수 조건

  • Azure 구독: Azure 구독이 아직 없는 경우 시작하기 전에 Azure 체험 계정을 만듭니다.
  • Azure Storage 계정: 스토리지 계정이 없는 경우 계정을 만드는 단계는 Azure Storage 계정 만들기를 참조하세요. 스토리지 계정이 선택한 네트워크에서만 액세스를 허용하는지 확인합니다.
  • Azure Key Vault: Key Vault 인스턴스가 없는 경우 이 자습서에 따라 새 Key Vault 인스턴스를 만들 수 있습니다.
  • 서비스 주체: 새 서비스 주체를 만들거나 기존 서비스 주체를 사용하고 Key Vault 인스턴스에 액세스할 수 있는 권한을 부여할 수 있습니다. 예를 들어 Key Vault 인스턴스의 SPN(서비스 사용자 이름)에 key-vault-contributor 역할을 부여하여 SPN이 이를 관리할 수 있도록 할 수 있습니다. 또한 이 문서의 뒷부분에 설명된 대로 서비스 주체의 클라이언트 ID클라이언트 암호(API 키)를 가져와서 환경 변수로 추가해야 합니다.

사용 권한

기본 제공 역할에서 Key Vault 인스턴스의 다음 역할을 SPN에 할당합니다.

  • Key Vault 참가자
  • Key Vault 비밀 사용자

워크플로 오케스트레이션 관리자 인스턴스에 Key Vault 백 엔드 사용

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의 비밀 세부 정보를 보여 주는 스크린샷