แชร์ผ่าน


เปิดใช้งานชุดเก็บคีย์ของ Azure เป็นข้อมูลลับส่วนหลัง

หมายเหตุ

งานกระแสอากาศ Apache ขับเคลื่อนด้วย กระแสอากาศ Apache

Apache Airflow มี Backend ต่าง ๆ เพื่อจัดเก็บข้อมูลที่สําคัญได้อย่างปลอดภัย เช่น ตัวแปรและการเชื่อมต่อ หนึ่งในตัวเลือกเหล่านี้คือ Azure Key Vault บทความนี้จะแนะนําคุณเกี่ยวกับกระบวนการกําหนดค่า Key Vault เป็นส่วนหลังลับสําหรับงานกระแสอากาศ Apache

ข้อกำหนดเบื้องต้น

  • สมัครใช้งาน Azure: ถ้าคุณยังไม่มีการสมัครใช้งาน Azure สร้าง บัญชี Azure ฟรีก่อนที่คุณจะเริ่ม
  • Azure Key Vault: คุณสามารถทําตาม บทช่วยสอนนี้เพื่อสร้างอินสแตนซ์ ชุดเก็บคีย์ใหม่ได้ถ้าคุณยังไม่มี
  • บริการหลัก: คุณสามารถสร้าง บริการหลัก ใหม่หรือใช้บริการที่มีอยู่และให้สิทธิ์ในการเข้าถึงอินสแตนซ์ Key Vault ของคุณ ตัวอย่างเช่น คุณสามารถมอบ บทบาท key-vault-contributor ให้กับชื่อบริการหลัก (SPN) สําหรับอินสแตนซ์ Key Vault ของคุณเพื่อให้ SPN สามารถจัดการได้ คุณยังจําเป็นต้องรับ Client ID และ Client Secret (คีย์ API) ของบริการหลักเพื่อเพิ่มเป็นตัวแปรสภาพแวดล้อม ตามที่อธิบายไว้ในบทความนี้ในภายหลัง

การอนุญาต

กําหนดบทบาทต่อไปนี้ในอินสแตนซ์ชุดเก็บคีย์ของ SPN ของคุณจาก บทบาทที่มีอยู่ภายใน:

  • ผู้สนับสนุนชุดเก็บคีย์
  • ผู้ใช้ Key Vault Secrets

การกําหนดค่าเพื่อเปิดใช้งาน Azure Key Vault เป็นส่วนหลังลับในงานกระแสอากาศ Apache

  • ข้อกําหนดของกระแสอากาศ: ติดตั้ง apache-airflow-providers-microsoft-azure ระหว่างการตั้งค่าสภาพแวดล้อม Airflow เริ่มต้นของคุณ

    สกรีนช็อตที่แสดงหน้าต่างการตั้งค่าสภาพแวดล้อม Airflow ที่เน้นข้อกําหนดของกระแสอากาศ

  • การแทนที่การกําหนดค่า: เพิ่มการตั้งค่าต่อไปนี้สําหรับการ แทนที่ การกําหนดค่า 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:

    • AZURE_CLIENT_ID = <ID ไคลเอ็นต์ของ SPN>
    • AZURE_TENANT_ID = <รหัสผู้เช่า>
    • AZURE_CLIENT_SECRET = <ข้อมูลลับไคลเอ็นต์ของ SPN>
  • ด้วยการตั้งค่าเหล่านี้ คุณสามารถใช้ตัวแปรและการเชื่อมต่อภายใน DAG ของ Airflow ได้ ชื่อของการเชื่อมต่อและตัวแปรจําเป็นต้องทําตาม AIRFLOW__SECRETS__BACKEND_KWARGSตามที่กําหนดไว้ก่อนหน้านี้ ตัวอย่างเช่น ถ้าชื่อตัวแปรคือ sample_varคุณควรเก็บไว้เป็นairflow-variables-sample-var สําหรับข้อมูลเพิ่มเติม โปรดดู ที่ Azure Key Vault เป็นส่วนหลังของข้อมูลลับ

ตัวอย่าง DAG โดยใช้ Key Vault เป็น Backend

  1. สร้างไฟล์ adf.py Python ใหม่ด้วยเนื้อหาต่อไปนี้:

    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 Key Vault

    สกรีนช็อตที่แสดงการกําหนดค่าข้อมูลลับในชุดเก็บคีย์ของ Azure

เริ่มต้นใช้งานด่วน: สร้างงานกระแสอากาศ Apache