워크플로 오케스트레이션 관리자에 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를 워크플로 오케스트레이션 관리자 인스턴스의 비밀 백 엔드로 사용하도록 설정하려면 다음을 수행합니다.
워크플로 오케스트레이션 관리자 인스턴스의 통합 런타임 환경으로 이동합니다.
초기 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의 클라이언트 ID>
- AZURE_TENANT_ID = <테넌트 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에 자격 증명 저장을 참조하세요.