แชร์ผ่าน


การป้องกันการเข้าถึงขาออกของพื้นที่ทํางานสําหรับปริมาณงานด้านวิศวกรรมข้อมูล

การป้องกันการเข้าถึงขาออกของพื้นที่ทํางานช่วยให้สามารถควบคุมการสื่อสารภายนอกจากพื้นที่ทํางาน Microsoft Fabric ได้อย่างแม่นยํา เมื่อเปิดใช้งานคุณลักษณะนี้ รายการพื้นที่ทํางานทั้งหมด เช่น สมุดบันทึก ข้อกําหนดงาน Spark และ Lakehouses จะถูกจํากัดไม่ให้ทําการเชื่อมต่อขาออกไปยังปลายทางสาธารณะ เว้นแต่จะได้รับสิทธิ์การเข้าถึงอย่างชัดเจนผ่านจุดสิ้นสุดส่วนตัวที่มีการจัดการที่ได้รับอนุมัติ ความสามารถนี้มีความสําคัญสําหรับองค์กรในสภาพแวดล้อมที่ปลอดภัยหรือมีการควบคุม เนื่องจากช่วยป้องกันการขโมยข้อมูลและบังคับใช้ขอบเขตเครือข่ายขององค์กร

การกําหนดค่าการป้องกันการเข้าถึงขาออกสําหรับปริมาณงานวิศวกรรมข้อมูล

เมื่อต้องการกําหนดค่าการป้องกันการเข้าถึงขาออกสําหรับพื้นที่ทํางาน คุณสามารถเปิดใช้งานการตั้งค่าโดยใช้พอร์ทัล Fabric

  • เปิดการตั้งค่าพื้นที่ทํางานและเลือก ความปลอดภัยเครือข่าย
  • ภายใต้ การป้องกันการเข้าถึงขาออก ให้สลับ บล็อกการเข้าถึงสาธารณะขาออก เป็น เปิด

สําหรับคําแนะนําโดยละเอียด โปรดดูที่ ตั้งค่าการป้องกันการเข้าถึงขาออกของพื้นที่ทํางาน

การเรียกใช้งาน Spark โดยเปิดใช้งานการป้องกันการเข้าถึงขาออก

เมื่อเปิดใช้งานการป้องกันการเข้าถึงขาออกของพื้นที่ทํางาน การเข้าถึงอินเทอร์เน็ตสาธารณะทั้งหมดจากคลัสเตอร์ Spark จะถูกบล็อก รวมถึง:

  • pip install การดึงข้อมูลคําสั่งจาก Python Package Index (PyPI)
  • การเข้าถึงโดเมนสาธารณะ เช่น https://login.microsoftonline.com
  • ความพยายามใดๆ ในการเข้าถึง API หรือเว็บไซต์ภายนอก

ข้อจํากัดนี้ถูกบังคับใช้ผ่านเครือข่ายเสมือนที่มีการจัดการ (VNET ที่มีการจัดการ) ที่เตรียมใช้งานโดย Microsoft Fabric สภาพแวดล้อมเครือข่ายที่ปลอดภัยเหล่านี้จะถูกแยกออกจากกัน เว้นแต่จะเชื่อมต่อกับทรัพยากรภายนอกอย่างชัดเจนผ่านปลายทางที่ได้รับอนุมัติ

การเชื่อมต่ออย่างปลอดภัยโดยใช้ปลายทางส่วนตัวที่มีการจัดการ

เมื่อการเข้าถึงขาออกถูกจํากัด เฉพาะปลายทางส่วนตัวที่มีการจัดการที่ได้รับอนุมัติเท่านั้นที่สามารถอํานวยความสะดวกในการเชื่อมต่อจากคลัสเตอร์ Spark ไปยัง:

  • บริการภายนอก (เช่น Azure SQL, Blob Storage)
  • พื้นที่ทํางาน Fabric อื่นๆ ภายในผู้เช่าเดียวกัน

เมื่อสร้างและอนุมัติตําแหน่งข้อมูลส่วนตัวที่มีการจัดการแล้ว จะกลายเป็นช่องทางเดียวที่ได้รับอนุญาตสําหรับการเข้าถึงข้อมูลขาออก

การติดตั้งไลบรารีอย่างปลอดภัยในพื้นที่ทํางานที่มีการป้องกันการเข้าถึงขาออก

เนื่องจาก Fabric บล็อกการรับส่งข้อมูลทางอินเทอร์เน็ตสาธารณะ คลัสเตอร์ Spark จึงไม่สามารถติดตั้งแพ็คเกจจาก PyPI ได้โดยตรงโดยใช้ pip install.

คุณมีสองตัวเลือกที่ปลอดภัยสําหรับการติดตั้งไลบรารีในพื้นที่ทํางานที่เปิดใช้งานการป้องกันการเข้าถึงขาออก:

  1. อัปโหลดและใช้ไฟล์วงล้อ: เตรียมไฟล์วงล้อแพ็คเกจ Python ที่จําเป็นด้วยตนเองบนทรัพยากรการประมวลผลที่เชื่อถือได้ จากนั้นอัปโหลดไปยังสภาพแวดล้อม Fabric ของคุณ วิธีนี้ช่วยให้แน่ใจว่ามีการติดตั้งเฉพาะแพ็คเกจที่ได้รับอนุมัติและหลีกเลี่ยงการเข้าถึงอินเทอร์เน็ตสาธารณะ

  2. โฮสต์มิเรอร์ PyPI ส่วนตัว: ตั้งค่าที่เก็บ PyPI ส่วนตัวบน Azure Storage และซิงโครไนซ์กับแพคเกจที่เลือกจากดัชนี PyPI สาธารณะ กําหนดค่าสภาพแวดล้อม Fabric ของคุณเพื่อติดตั้งแพ็คเกจจากมิเรอร์ส่วนตัวนี้โดยใช้ปลายทางส่วนตัวที่มีการจัดการ โดยรักษาความสอดคล้องกับนโยบายความปลอดภัยของเครือข่าย

เลือกแนวทางที่เหมาะกับความต้องการขององค์กรของคุณมากที่สุดสําหรับการจัดการแพ็คเกจและความปลอดภัย

ตัวเลือกที่ 1: อัปโหลดและใช้ไฟล์วงล้อ

  1. ระบุแพ็คเกจที่ขาดหายไปซึ่งไม่รวมอยู่ในรันไทม์ Fabric Spark

  2. เรียกใช้สคริปต์ต่อไปนี้บนทรัพยากรการประมวลผลของคุณเพื่อตั้งค่าสภาพแวดล้อม python ภายในเครื่องที่เหมือนกับรันไทม์ Microsoft Fabric Spark 1.3 สคริปต์นี้ต้องการไฟล์ YAML ที่มีรายการไลบรารีทั้งหมดที่รวมอยู่ในสภาพแวดล้อมที่อบไว้ล่วงหน้า

  3. ตรวจสอบให้แน่ใจว่า ไลบรารีส่วนตัวที่โฮสต์ของ Microsoft ถูกลบออกจาก YAML นี้

    wget https://repo.anaconda.com/miniconda/Miniconda3-py310_24.1.2-0-Linux-x86_64.sh 
    bash Miniconda3-py310_24.1.2-0-Linux-x86_64.sh 
    chmod 755 -R /usr/lib/miniforge3/ 
    export PATH="/usr/lib/miniforge3/bin:$PATH" 
    sudo apt-get update 
    sudo apt-get -yq install gcc g++ 
    conda env create -n <custom-env-name> -f Python<version>-CPU.yml 
    source activate <custom-env-name> 
    
  4. สามารถใช้สคริปต์เพื่อส่งผ่านไฟล์ requirements.txt ของคุณ ซึ่งมีแพ็คเกจและเวอร์ชันทั้งหมดที่คุณต้องการติดตั้งในรันไทม์ Spark โดยจะพิมพ์ชื่อของไฟล์ล้อใหม่/การพึ่งพาสําหรับข้อกําหนดไลบรารีอินพุตของคุณ

    pip install -r <input-user-req.txt> > pip_output.txt 
    cat pip_output.txt | grep "Using cached *" 
    
  5. ดาวน์โหลด .whl ไฟล์ด้วยตนเอง

  6. ใช้ Environment Artifact เพื่ออัปโหลดวงล้อที่จําเป็นทั้งหมด

  7. แนบสภาพแวดล้อมกับสมุดบันทึกหรืองาน

ตัวเลือกที่ 2: โฮสต์มิเรอร์ PyPI ส่วนตัวบน Azure Storage

ข้อกําหนดเบื้องต้น
การซิงค์เริ่มต้นของที่เก็บ PyPI

ในขั้นตอนแรก คุณต้องทําการซิงค์ที่เก็บ PyPI ที่เก็บ PyPI ที่สมบูรณ์มีแพ็คเกจจํานวนมากและกําลังขยายอย่างต่อเนื่องดังนั้นการดาวน์โหลดครั้งแรกอาจใช้เวลาตั้งแต่ 8 ถึง 48 ชั่วโมงขึ้นอยู่กับฮาร์ดแวร์และเครือข่ายของคุณ สําหรับขนาดที่เก็บปัจจุบันและจํานวนแพ็คเกจ โปรดดูที่ สถิติ · PyPI

การบํารุงรักษา

จําเป็นต้องมีการตรวจสอบและอัปเดตเป็นระยะเพื่อให้มิเรอร์ซิงค์กัน ปัจจัยต่อไปนี้มีผลต่อความเร็วในการซิงโครไนซ์:

  • ความเร็วเครือข่าย
  • ทรัพยากรเซิร์ฟเวอร์ เช่น CPU, หน่วยความจํา และ I/O ของดิสก์บนทรัพยากรการประมวลผลที่เรียกใช้ Bandersnatch
  • ความเร็วของดิสก์ (SSD เทียบกับ HDD) ส่งผลต่อความเร็วในการเขียนข้อมูล
  • การตั้งค่าเริ่มต้นเทียบกับการซิงค์การบํารุงรักษา: การซิงค์เริ่มต้นจะดาวน์โหลดที่เก็บทั้งหมดและอาจใช้เวลาตั้งแต่ 8 ถึง 48 ชั่วโมง แต่การซิงค์ในภายหลังจะเร็วกว่าเนื่องจากจะอัปเดตเฉพาะแพ็คเกจใหม่หรือที่เปลี่ยนแปลงเท่านั้น
ขั้นตอนการตั้งค่า
  1. ตั้งค่าเครื่องพัฒนา Linux VM หรือ Windows Subsystem สําหรับ Linux (WSL))

    wget https://repo.anaconda.com/miniconda/Miniconda3-py310_24.1.2-0-Linux-x86_64.sh 
    bash Miniconda3-py310_24.1.2-0-Linux-x86_64.sh 
    chmod 755 -R /usr/lib/miniforge3/ 
    
    # Add Python executable to PATH 
    export PATH="/usr/lib/miniforge3/bin:$PATH" 
    
  2. ติดตั้ง Bandersnatch เพื่อมิเรอร์ PyPI Bandersnatch เป็นเครื่องมือมิเรอร์ PyPI ที่ดาวน์โหลดที่เก็บ PyPI ทั้งหมดและไฟล์ดัชนีที่เกี่ยวข้องบนระบบไฟล์ในเครื่อง

    # Install Bandersnatch 
    pip install bandersnatch
    
  3. กําหนดค่า Bandersnatch: สร้างไฟล์ bandersnatch.conf ด้วยการกําหนดค่าที่ระบุในตัวอย่างบน GitHub ที่ bandersnatch/src/bandersnatch/example.conf

  4. เรียกใช้คําสั่งมิเรอร์เพื่อทําการซิงโครไนซ์ครั้งเดียวกับเซิร์ฟเวอร์หลัก PyPI

    bandersnatch --config <path-to-bandersnatch.conf> mirror

    คําสั่งนี้จะสร้างไดเร็กทอรีย่อยต่อไปนี้ในไดเร็กทอรีมิเรอร์ของคุณบนระบบไฟล์โลคัล

    Note

    การซิงค์เริ่มต้นต้องใช้เวลาในการทํางาน (ดูที่ สถิติ · PyPI) Bandersnatch ยังรองรับการมิเรอร์แบบเลือกโดยใช้ปลั๊กอินรายการที่อนุญาตและรายการบล็อก ทําให้สามารถจัดการการพึ่งพาได้อย่างมีประสิทธิภาพมากขึ้น ด้วยการกรองบรรจุภัณฑ์ที่ไม่จําเป็น คุณสามารถลดขนาดของกระจก ลดทั้งต้นทุนและความพยายามในการบํารุงรักษา ตัวอย่างเช่น หากมิเรอร์มีไว้สําหรับ Fabric เท่านั้น คุณสามารถยกเว้นไบนารีของ Windows เพื่อเพิ่มประสิทธิภาพการจัดเก็บข้อมูล เราขอแนะนําให้ประเมินตัวเลือกการกรองเหล่านี้ตามกรณีการใช้งานของคุณ

    ดูเพิ่มเติมที่ [การกรองมิเรอร์ — เอกสารประกอบของ Bandersnatch] (https://bandersnatch.readthedocs.io/en/latest/filtering_configuration.html)

  5. ในการตรวจสอบการตั้งค่ามิเรอร์คุณสามารถใช้เซิร์ฟเวอร์ HTTP เพื่อให้บริการมิเรอร์ PyPI ในเครื่องของคุณ คําสั่งนี้เริ่มต้นเซิร์ฟเวอร์ HTTP อย่างง่ายบนพอร์ต 8000 ที่ให้บริการเนื้อหาของไดเร็กทอรีมิเรอร์:

    cd <directory-to-mirror>
    python -m http.server 8000
    
  6. กําหนดค่า pip เพื่อใช้มิเรอร์ PyPI ในเครื่อง:

    pip install <package> -index-url http://localhost:8000/simple 
    
  7. อัปโหลดมิเรอร์ไปยังบัญชีที่เก็บข้อมูล และเลือก เปิดใช้งานเว็บไซต์แบบคงที่ บนบัญชีที่เก็บข้อมูล Azure ของคุณ การตั้งค่านี้ช่วยให้คุณสามารถโฮสต์เนื้อหาแบบคงที่ เช่น PyPI ในหน้าดัชนี การเปิดใช้งานการตั้งค่านี้จะสร้างคอนเทนเนอร์ชื่อ $web โดยอัตโนมัติ

    คุณสามารถใช้ Azure CLI หรือ AzCopy ของ blobfuse2 เพื่ออัปโหลดมิเรอร์ภายในเครื่องจากเครื่องพัฒนาของคุณไปยังบัญชีที่เก็บข้อมูล Azure ของคุณ

    • อัปโหลดโฟลเดอร์แพคเกจไปยังคอนเทนเนอร์ที่คุณเลือกบนคอนเทนเนอร์บัญชีที่เก็บข้อมูล
    • อัปโหลดโฟลเดอร์ Simple, PyPI, local-stats และ JSON ไปยังคอนเทนเนอร์ของบัญชีที่เก็บข้อมูล$web
  8. หากต้องการใช้มิเรอร์นี้ในรายการสภาพแวดล้อม Fabric ของคุณ ให้สร้างตําแหน่งข้อมูลส่วนตัวที่มีการจัดการสองจุดใน Fabric:

    • หนึ่งสําหรับคอนเทนเนอร์ blob (แพคเกจ)
    • หนึ่งสําหรับเว็บไซต์แบบคงที่ (ดัชนี)
  9. ใช้ Environment Artifact เพื่อระบุไฟล์ yml เพื่อติดตั้งการจัดการไลบรารีในสภาพแวดล้อม Fabric

    dependencies: 
      - pip 
      - pip: 
        - pytest==8.2.2 
        - --index-url https://<storage-account-name>.z5.web.core.windows.net/simple 
    
  10. หรือคุณสามารถติดตั้งแพ็คเกจได้โดยตรงภายในสมุดบันทึกโดยใช้ %pip install คําสั่ง:

   %pip install pytest --index-url https://<storage-account-name>.z5.web.core.windows.net/simple

การทําความเข้าใจลักษณะการทํางานของเส้นทางไฟล์ในสมุดบันทึก Fabric

เมื่อทํางานกับข้อมูลใน Lakehouse ของคุณโดยใช้สมุดบันทึก Fabric คุณสามารถอ้างอิงไฟล์ได้สองวิธีหลัก:

  • เส้นทางสัมพัทธ์: วิธีนี้เป็นวิธีที่ง่ายและพบบ่อยที่สุด เมื่อคุณลากและวางไฟล์จากตัวสํารวจ Lakehouse ลงในเซลล์สมุดบันทึก ไฟล์จะใช้เส้นทางสัมพัทธ์ที่ชี้ไปยังไฟล์ภายใน Lakehouse ปัจจุบันของคุณ รูปแบบนี้ใช้งานได้โดยไม่ต้องกําหนดค่าเพิ่มเติม

    ตัวอย่าง: Files/people.csv

    รหัสประกายไฟ: df = spark.read.format("csv").option("header", "true").load("Files/people.csv")

  • เส้นทางที่มีคุณสมบัติครบถ้วน (เส้นทางสัมบูรณ์): เส้นทางนี้ให้ตําแหน่งที่สมบูรณ์ของไฟล์ รวมถึงพื้นที่ทํางานและชื่อ Lakehouse การกําหนดค่าเริ่มต้นของเซสชัน Spark ไม่ได้ตั้งค่าเพื่อแก้ไขเส้นทางเหล่านี้ ซึ่งอาจทําให้เกิดข้อยกเว้นการหมดเวลาซ็อกเก็ตเมื่อพยายามเข้าถึงข้อมูล

    ตัวอย่าง (ทําให้เกิดข้อผิดพลาดการหมดเวลาของซ็อกเก็ต): abfss://your_workspace@onelake.dfs.fabric.microsoft.com/your_lakehouse**.Lakehouse/Files/people.csv

เมื่อต้องการอ่านไฟล์โดยใช้เส้นทางที่มีคุณสมบัติครบถ้วน โดยเฉพาะอย่างยิ่งเมื่อเชื่อมต่อกับ Lakehouse ในพื้นที่ทํางานอื่น คุณต้องใช้รูปแบบ URI อื่น รูปแบบนี้ใช้รหัสพื้นที่ทํางานและรหัสเลคเฮาส์แทนชื่อที่แสดง สิ่งนี้ทําให้มั่นใจได้ว่าเซสชัน Spark สามารถแก้ไขเส้นทางและเข้าถึงข้อมูลได้อย่างถูกต้อง

  • รูปแบบ URI ที่ถูกต้อง: abfss://your_workspace_id@onelake.dfs.fabric.microsoft.com/your_lakehouse_id/Files/people.csv

วิธีค้นหา Workspace และ Lakehouse ID ของคุณ

คุณสามารถค้นหาตัวระบุที่ไม่ซ้ํากันเหล่านี้ได้ใน URL ของพื้นที่ทํางาน Fabric และ Lakehouse ของคุณ

  • รหัสพื้นที่ทํางาน: GUID ที่ปรากฏหลัง /groups/ ใน URL

  • เลคเฮาส์ ID: GUID ที่ปรากฏหลัง /lakehouses/ ใน URL

ตัวอย่าง: หาก URL ของคุณเป็น https://app.fabric.microsoft.com/groups/**4c8efb42-7d2a-4a87-b1b1-e7e98bea053d**/lakehouses/**5a0ffa3d-80b9-49ce-acd2-2c9302cce6b8**/...

รหัส Spark ที่ถูกต้อง:

หลาม

df = spark.read.format("csv").option("header", "true").load("abfss://4c8efb42-7d2a-4a87-b1b1-e7e98bea053d@onelake.dfs.fabric.microsoft.com/5a0ffa3d-80b9-49ce-acd2-2c9302cce6b8/Files/people.csv")

Note

ใช้วิธีการเดียวกันนี้เมื่อคุณต้องการเข้าถึงข้อมูลในพื้นที่ทํางานอื่น