ความปลอดภัยระดับตาราง คอลัมน์ และแถวใน OneLake

บทบาทความปลอดภัยของ OneLake ควบคุมว่าใครสามารถเข้าถึงข้อมูลในรายการ Fabric ของคุณได้ บางครั้งการอนุญาตหรือปฏิเสธการเข้าถึงทั้งรายการก็หยาบคายเกินไป คุณอาจต้องซ่อนคอลัมน์ที่ละเอียดอ่อน จํากัดแถวที่ผู้ใช้จะเห็น หรือเปิดเผยเฉพาะตารางบางตารางเท่านั้น ภายในบทบาท คุณสามารถปรับแต่งการเข้าถึงได้สามระดับของความละเอียด ได้แก่ ความปลอดภัยระดับวัตถุสําหรับตารางและโฟลเดอร์, ความปลอดภัยระดับคอลัมน์ (CLS) สําหรับแต่ละคอลัมน์ และความปลอดภัยระดับแถว (RLS) สําหรับแต่ละแถว

บทความนี้อธิบายว่าการควบคุมแต่ละตัวทําอะไรและ OneLake บังคับใช้อย่างไร หากต้องการสร้างคอนโทรลเหล่านี้ ดูที่ การสร้างและจัดการบทบาทความปลอดภัยของ OneLake

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

ความปลอดภัยของตารางและโฟลเดอร์

ความปลอดภัยระดับตารางและระดับโฟลเดอร์ หรือที่เรียกว่าความปลอดภัยระดับวัตถุ (OLS) ช่วยให้คุณอนุญาตให้เข้าถึงตารางหรือโฟลเดอร์เฉพาะในรายการข้อมูล ด้วย OLS คุณจะสร้างสิทธิ์สําหรับทั้งข้อมูลที่มีโครงสร้างและไม่มีโครงสร้างในระดับโฟลเดอร์ เนื่องจากตาราง Delta Parquet ใน OneLake ถูกแสดงเป็นโฟลเดอร์ คุณจึงสามารถรักษาความปลอดภัยตารางได้เหมือนกับการรักษาความปลอดภัยโฟลเดอร์ สคีมาก็เป็นโฟลเดอร์เช่นกัน ดังนั้นคุณสามารถรักษาความปลอดภัยในลักษณะเดียวกันได้

ความปลอดภัยระดับคอลัมน์และระดับแถว

ความปลอดภัยของ OneLake บังคับใช้ความปลอดภัยระดับคอลัมน์และระดับแถวในสองวิธี:

  • ตารางกรอง: ผู้ใช้ที่สืบค้นตารางโดยใช้เอนจิน Fabric เช่น โน้ตบุ๊ก Spark หรือเอนจินของบุคคลที่สามที่ได้รับอนุญาต จะเห็นเฉพาะคอลัมน์หรือแถวที่กฎ CLS หรือ RLS อนุญาตเท่านั้น
  • ตารางบล็อก: ผู้ใช้ที่สืบค้นตารางโดยใช้เครื่องมือของบุคคลที่สามที่ไม่ได้รับอนุญาตจะไม่สามารถอ่านตารางได้

ความปลอดภัยของ OneLake สามารถบังคับใช้กฎ CLS และ RLS สําหรับโต๊ะ Delta Parquet หรือ โต๊ะ Iceberg แบบเสมือนจริง กฎที่ใช้กับประเภทตารางอื่น ๆ จะบล็อกการเข้าถึงตารางทั้งหมดสําหรับสมาชิกของบทบาทนั้น

หากกฎ CLS หรือ RLS มีความไม่ตรงกันกับตารางที่กําหนดไว้ การสืบค้นจะล้มเหลวและไม่คืนค่าข้อมูล ตัวอย่างเช่น ความไม่ตรงกันเกิดขึ้นเมื่อกฎอ้างอิงถึงคอลัมน์ที่ไม่มีในตาราง

ความปลอดภัยระดับคอลัมน์

ความปลอดภัยระดับคอลัมน์ (CLS) ให้สิทธิ์เข้าถึงคอลัมน์ที่เลือกในตารางแทนตารางเต็ม ข้อมูลในคอลัมน์ที่คุณลบออกจากรายการที่อนุญาตจะไม่ปรากฏให้ผู้ใช้เห็น

สําหรับตารางที่กรองด้วย CLS พฤติกรรมต่อไปนี้จะใช้:

  • หากผู้ใช้รันselect *คําสั่งค้นหาบนตารางที่เข้าถึงได้เพียงบางส่วนของคอลัมน์ กฎ CLS จะทํางานแตกต่างกันขึ้นอยู่กับเอนจิน Fabric:
    • สมุดบันทึก Spark: การค้นหาสําเร็จและแสดงเฉพาะคอลัมน์ที่อนุญาตเท่านั้น
    • ปลายทางการวิเคราะห์ SQL: การค้นหาจะส่งคืนข้อผิดพลาดและบล็อกการเข้าถึงคอลัมน์ที่ผู้ใช้ไม่สามารถเข้าถึงได้
    • โมเดลเชิงความหมาย: คําค้นจะคืนค่าข้อผิดพลาดและบล็อกการเข้าถึงคอลัมน์ที่ผู้ใช้ไม่สามารถเข้าถึงได้
  • ชื่อของคอลัมน์ที่ปลอดภัยอาจปรากฏในบางประสบการณ์ แต่ค่าข้อมูลจะไม่ปรากฏ

การรักษาความปลอดภัยระดับต่ำ

ความปลอดภัยระดับแถว (RLS) กําหนดข้อจํากัดข้อมูลระดับแถวสําหรับข้อมูลตารางที่จัดเก็บใน OneLake คุณกําหนดบทบาทที่มีกฎสําหรับการกรองแถวข้อมูลสําหรับสมาชิกของบทบาทนั้น เมื่อสมาชิกของบทบาท RLS สอบถามข้อมูล OneLake จะประเมินกฎ RLS และคืนเฉพาะแถวที่อนุญาตเท่านั้น แถวเป็นแนวคิดที่เกี่ยวข้องกับข้อมูลแบบตารางเท่านั้น ดังนั้นคุณไม่สามารถกําหนด RLS สําหรับโฟลเดอร์ที่ไม่ใช่ตารางหรือข้อมูลที่ไม่มีโครงสร้างได้

สําหรับตารางที่กรองด้วย RLS พฤติกรรมต่อไปนี้จะใช้:

  • การเข้าถึงตารางอาจถูกบล็อก ถ้าคําสั่ง RLS มีข้อผิดพลาดทางไวยากรณ์ที่ป้องกันไม่ให้มีการประเมิน

สําหรับไวยากรณ์ที่ใช้เขียนกฎ RLS ดูที่ อ้างอิงไวยากรณ์ความปลอดภัยระดับแถว

รวมการรักษาความปลอดภัยระดับแถวและระดับคอลัมน์

การรักษาความปลอดภัยระดับแถวและระดับคอลัมน์สามารถใช้ร่วมกันเพื่อจํากัดการเข้าถึงตารางของผู้ใช้ อย่างไรก็ตาม ต้องมีการใช้นโยบายสองข้อโดยใช้บทบาทความปลอดภัย OneLake เดียว ในสถานการณ์นี้ การเข้าถึงข้อมูลจะถูกจํากัดตามกฎที่กําหนดไว้ในบทบาทเดียว

การรักษาความปลอดภัย OneLake ไม่สนับสนุนการรวมบทบาทสองบทบาทหรือมากกว่าโดยที่บทบาทหนึ่งมีกฎ RLS และอีกอันมีกฎ CLS ผู้ใช้ที่พยายามเข้าถึงตารางที่เป็นส่วนหนึ่งของชุดบทบาทที่ไม่สนับสนุนจะได้รับข้อผิดพลาดในการคิวรี