ความปลอดภัยของผ้า Spark

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

ปลายทางส่วนตัวที่มีการจัดการ (MPE)

สถานการณ์สมมติ: คุณเป็นวิศวกรข้อมูลที่ทํางานกับข้อมูลที่ละเอียดอ่อนใน Fabric Spark ทีมรักษาความปลอดภัยของคุณมีข้อกําหนดในการเรียกใช้รหัสทั้งหมดในสภาพแวดล้อมที่แยกจากเครือข่ายเพื่อเพิ่มความปลอดภัย
  • เปิดใช้งานเครือข่ายเสมือนที่มีการจัดการ (VNets) เมื่อต้องการเปิดใช้งาน VNet ที่มีการจัดการ ให้ดูที่ เอกสารสาธารณะ Microsoft Fabric สร้างและจัดการ เครือข่ายเสมือนที่มีการจัดการ (VNets) สําหรับแต่ละพื้นที่ทํางาน Fabric พวกเขาให้การแยกเครือข่ายสําหรับปริมาณงาน Fabric Spark ซึ่งหมายความว่า Microsoft Fabric จะปรับใช้คลัสเตอร์การประมวลผลในเครือข่ายเฉพาะต่อพื้นที่ทํางาน โดยลบออกจากเครือข่ายเสมือนที่ใช้ร่วมกัน

  • ในการผลิต ให้ใช้ VNets ที่มีการจัดการสําหรับการดําเนินการที่ปลอดภัยของ Spark Notebooks

  • เมื่อคุณสร้าง Managed Private Endpoint (MPE) ระบบจะสร้างขึ้นที่ระดับพื้นที่ทํางานตามค่าเริ่มต้น

  • เมื่อคุณเปิดใช้งาน Private Link (PL) ที่ระดับผู้เช่า ระบบจะเปิดใช้งาน VNets ที่มีการจัดการสําหรับพื้นที่ทํางานทั้งหมดในผู้เช่า หลังจากที่คุณเปิดใช้งานการตั้งค่า PL ระบบจะสร้างเครือข่ายเสมือนที่มีการจัดการสําหรับพื้นที่ทํางานเมื่อคุณเรียกใช้งาน Spark แรก (คําจํากัดความของสมุดบันทึกหรืองาน Spark) ระบบยังสร้างเครือข่ายเสมือนเมื่อคุณดําเนินการ Lakehouse เช่น โหลดไปยังตาราง หรือการดําเนินการบํารุงรักษาตาราง (ปรับให้เหมาะสมหรือสูญญากาศ)

Note

เมื่อคุณเปิดใช้งาน VNet ที่มีการจัดการ พูลเริ่มต้นจะไม่พร้อมใช้งานเนื่องจากทํางานในเครือข่ายที่ใช้ร่วมกัน

การป้องกันการเข้าถึงขาออกของพื้นที่ทํางาน (WS OAP)

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

เปิดใช้งาน Workspace Outbound Access Protection (WS OAP) สิ่งนี้ทําให้มั่นใจได้ว่าการเชื่อมต่ออินเทอร์เน็ตขาออกจาก Spark จะไปยังปลายทางที่ได้รับอนุมัติผ่านปลายทางส่วนตัวที่มีการจัดการเท่านั้น 

  • การปิดกั้นห้องสมุดสาธารณะ: นอกจากนี้ยังบล็อกการติดตั้งห้องสมุดสาธารณะ (จาก PyPi, Maven เป็นต้น) ดังนั้น คุณต้องจัดแพ็คเกจไลบรารีของคุณเป็นไฟล์ JAR หรือ Wheel และอัปโหลดไลบรารีแบบกําหนดเองไปยังสภาพแวดล้อมหรือทรัพยากร และติดตั้งด้วยการติดตั้ง pip % ภายในโน้ตบุ๊ก สิ่งหนึ่งที่ควรทราบคือหากคุณเพิ่มลงในทรัพยากรและติดตั้งด้วยการติดตั้ง %pip แบบอินไลน์เวลาในการเผยแพร่สภาพแวดล้อมจะน้อยลง สิ่งนี้มีประโยชน์สําหรับการพัฒนาและทดสอบอย่างรวดเร็ว เมื่อต้องการนําแพคเกจกลับมาใช้ใหม่ในสมุดบันทึกต่างๆ ขอแนะนําให้เผยแพร่ไปยังสภาพแวดล้อม อีกวิธีหนึ่งคือการเชื่อมต่อกับที่เก็บส่วนตัวของคุณ สําหรับรายละเอียดเพิ่มเติม โปรดดู ที่ เอกสารประกอบการป้องกันการเข้าถึงขาออกของพื้นที่ทํางานสําหรับปริมาณงานวิศวกรรมข้อมูล
สถานการณ์สมมติ: คุณควรเปิดใช้งาน WS OAP ในสภาพแวดล้อมการพัฒนาหรือไม่

พิจารณาไม่เปิด WS OAP ในการพัฒนาหรือพื้นที่ทํางานที่ต่ํากว่า เนื่องจากจะส่งผลกระทบต่อกระบวนการพัฒนา เมื่อ Notebook หรือ Spark Job Definitions (SJD) ได้รับการทดสอบกับไลบรารีสาธารณะแล้ว ให้ทดสอบ Notebook เดียวกันกับไลบรารีแบบกําหนดเอง หลังจากการตรวจสอบโค้ดที่เหมาะสม ให้ปรับใช้กับสภาพแวดล้อมที่สูงขึ้น แล้วเปิด WS OAP หากคุณต้องการปกป้องแม้กระทั่งสภาพแวดล้อมการพัฒนา คุณสามารถเปิดใช้งาน WS OAP ได้ แต่อาจขัดขวางกระบวนการพัฒนา พูลเริ่มต้นไม่พร้อมใช้งานเมื่อคุณเปิดใช้งาน WS OAP

การเข้าถึง Azure Key Vault (AKV) จากสมุดบันทึก

สถานการณ์สมมติ: คุณเป็นวิศวกรข้อมูล และคุณต้องการเชื่อมต่อกับแหล่งข้อมูลหลายแหล่งโดยใช้ข้อมูลประจําตัวที่ปลอดภัยจาก Spark Notebooks

จัดเก็บข้อมูลประจําตัวอย่างปลอดภัยใน Azure Key Vault (AKV) อย่าเก็บห้องนิรภัยกุญแจเพียงอันเดียวเพื่อเก็บความลับทั้งหมด ให้ใช้ห้องนิรภัยหลักหลายรายการตามโปรเจ็กต์/โดเมนแทนหากเป็นไปได้

การเข้าถึง Azure Key Vault (AKV) จากสมุดบันทึก

  • เครือข่าย: เราขอแนะนําให้ปกป้อง AKV ของคุณด้วยกฎไฟร์วอลล์เพื่ออนุญาตให้เข้าถึงได้จากเครือข่ายที่รู้จักเท่านั้น อย่างไรก็ตาม คุณอนุญาตที่อยู่ IP ของ Fabric Spark ในกฎไฟร์วอลล์ของคุณ หากต้องการเชื่อมต่อกับ AKV ที่ได้รับการป้องกันอย่างปลอดภัยจาก Fabric Spark Notebooks เราขอแนะนําให้สร้างปลายทางส่วนตัวที่มีการจัดการไปยัง AKV AKV หนึ่งตัวสามารถรองรับปลายทางส่วนตัวได้สูงสุด 64 จุดเท่านั้น (การสมัครใช้งาน Azure และขีดจํากัดบริการ โควต้า และข้อจํากัด

  • ตรวจ สอบ: ระบบเรียกใช้ Fabric Spark Notebooks และ SJD ในบริบทของผู้ใช้ที่ส่งงาน/สมุดบันทึก ในการเข้าถึง AKV ผู้ใช้ที่ส่งควรมีสิทธิ์เข้าถึงเพียงพอในการดึงข้อมูลลับ ("เจ้าหน้าที่ความลับของห้องนิรภัยกุญแจ") อ้างถึง แนวทางปฏิบัติที่ดีที่สุดของ AKV: ให้สิทธิ์แก่แอปพลิเคชันเพื่อเข้าถึง Azure Key Vault โดยใช้ Azure RBAC

    • คุณสามารถใช้ notebookutils (ก่อนหน้านี้เรียกว่า mssparkutils) เพื่อเข้าถึง AKV โดยใช้ข้อมูลประจําตัวของผู้ใช้ที่เรียกใช้ Notebook/SJD:

    notebookutils.credentials.getSecret('<AKV URL>', 'Secret Name')

  • ในการผลิต เราไม่แนะนําให้ผู้ใช้เข้าถึง AKV ในสภาพแวดล้อมการผลิต ใช้บัญชีบริการเพื่อเข้าถึง Key Vault (KV) ของคุณแทน ส่งสมุดบันทึก/งานโดยใช้บัญชีบริการ 

  • ในบางกรณี บัญชีบริการที่ส่งงานมีสิทธิ์เข้าถึงเพื่ออ่านข้อมูลลับจาก AKV 

  • ในบางกรณี บัญชีบริการนี้มักจะเป็นบัญชี DevOps ที่อาจไม่สามารถเข้าถึงการอ่านความลับจาก AKV ได้ ในกรณีเช่นนี้ ตัวสร้างข้อมูลประจําตัวมีประโยชน์ในการเข้าถึง AKV โดยใช้ชื่อบริการหลัก (SPN) อื่น

นี่คือตัวอย่างข้อมูลโค้ด Scala:

val clientSecretCredential: ClientSecretCredential = new ClientSecretCredentialBuilder()
  .clientId("<client id here>")
  .clientSecret("<client secret here>")
  .tenantId("<tenant id here>")
  .build()

val secretClient: SecretClient = new SecretClientBuilder()
  .vaultUrl("<vault url here>")
  .credential(clientSecretCredential)
  .buildClient()

val secretName = "<your value>"
val retrievedSecret = secretClient.getSecret(secretName)
println(s"Retrieved secret: ${retrievedSecret.getValue}")

Note

อย่าฮาร์ดโค้ดข้อมูลลับหรือรหัสผ่านใดๆ เป็นข้อความธรรมดาในโค้ดของคุณ ใช้ห้องนิรภัยที่ปลอดภัย (เช่น Azure Key Vault) เพื่อจัดเก็บและดึงข้อมูลลับของคุณเสมอ