หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
การรักษาความปลอดภัยระดับแถว (RLS) เป็นคุณลักษณะของการรักษาความปลอดภัย OneLake (ตัวอย่าง) ที่อนุญาตให้กําหนดข้อจํากัดของข้อมูลระดับแถวสําหรับข้อมูลแบบตารางที่จัดเก็บไว้ใน OneLake ผู้ใช้สามารถกําหนดบทบาทใน OneLake ที่ประกอบด้วยกฎสําหรับการกรองแถวของข้อมูลสําหรับสมาชิกของบทบาทนั้น เมื่อสมาชิกของบทบาท RLS ไปที่การคิวรีข้อมูลนั้น กฎ RLS จะถูกประเมิน และจะส่งกลับเฉพาะแถวที่อนุญาตเท่านั้น
ข้อกำหนดเบื้องต้น
- รายการใน OneLake ที่เปิดการรักษาความปลอดภัย OneLake ไว้ สําหรับข้อมูลเพิ่มเติม ดู เริ่มต้นใช้งานบทบาทการเข้าถึงข้อมูล OneLake
- เปลี่ยนจุดสิ้นสุดการวิเคราะห์ SQL บน lakehouse เป็นโหมด "ข้อมูลประจําตัวของผู้ใช้" ผ่านแท็บความปลอดภัย
- สําหรับการสร้างแบบจําลองความหมาย ให้ใช้ขั้นตอนในการสร้างแบบจําลอง DirectLake
- สําหรับรายการทั้งหมดของข้อจํากัด โปรดดู ที่ส่วน ข้อจํากัดที่ทราบ
บังคับใช้การรักษาความปลอดภัยระดับแถว
การรักษาความปลอดภัย OneLake RLS ได้รับการบังคับใช้ในหนึ่งในสองวิธี:
- ตารางที่กรองแล้วในกลไกจัดการ Fabric: คิวรีไปยังรายการของเครื่องมือ Fabric ที่ได้รับการสนับสนุน เช่น สมุดบันทึก Spark ส่งผลให้ผู้ใช้เห็นเฉพาะแถวที่ได้รับอนุญาตให้ดูตามกฎ RLS
- บล็อกการเข้าถึงตาราง: ตารางที่มีกฎ RLS ที่ใช้กับตารางเหล่านั้นไม่สามารถอ่านภายนอกกลไกจัดการ Fabric ที่รองรับได้
สําหรับตารางที่กรองแล้ว จะมีลักษณะการทํางานต่อไปนี้:
- กฎ RLS ไม่จํากัดการเข้าถึงสําหรับผู้ใช้ในบทบาทผู้ดูแลระบบ สมาชิก และผู้สนับสนุน
- หากกฎ RLS ไม่ตรงกันกับตารางที่กําหนดไว้ คิวรีจะล้มเหลวและไม่มีแถวถูกส่งกลับ ตัวอย่างเช่น ถ้ากฎ RLS อ้างอิงคอลัมน์ที่ไม่ใช่ส่วนหนึ่งของตาราง
- คิวรีของตาราง RLS ล้มเหลวโดยมีข้อผิดพลาดถ้าผู้ใช้เป็นส่วนหนึ่งของบทบาทที่แตกต่างกันสองบทบาทและหนึ่งในบทบาทมีความปลอดภัยระดับคอลัมน์ (CLS)
- สามารถบังคับใช้กฎ RLS สําหรับออบเจ็กต์ที่เป็นตาราง Delta parquet เท่านั้น
- กฎ RLS ที่นําไปใช้กับวัตถุตารางที่ไม่ใช่ Delta จะบล็อกการเข้าถึงตารางทั้งหมดสําหรับสมาชิกของบทบาทแทน
- การเข้าถึงตารางอาจถูกบล็อก ถ้าคําสั่ง RLS มีข้อผิดพลาดทางไวยากรณ์ที่ป้องกันไม่ให้มีการประเมิน
กําหนดกฎการรักษาความปลอดภัยระดับแถว
คุณสามารถกําหนดกฎการรักษาความปลอดภัยระดับแถวให้เป็นส่วนหนึ่งของบทบาทความปลอดภัย OneLake ใด ๆ ที่อนุญาตให้เข้าถึงข้อมูลตารางในรูปแบบปาร์เกต Delta ได้ แถวเป็นแนวคิดที่เกี่ยวข้องกับข้อมูลแบบตารางเท่านั้น ดังนั้นจึงไม่อนุญาตให้มีข้อกําหนด RLS สําหรับโฟลเดอร์ที่ไม่ใช่ตารางหรือข้อมูลที่ไม่มีโครงสร้าง
กฎ RLS ใช้ไวยากรณ์ SQL เพื่อระบุแถวที่ผู้ใช้สามารถดูได้ ไวยากรณ์นี้จะใช้รูปแบบของคําสั่ง SQL SELECT ด้วยกฎ RLS ที่กําหนดไว้ในคําสั่ง WHERE กฎ RLS สนับสนุนเฉพาะชุดย่อยของภาษา SQL ตามที่กําหนดไว้ใน กฎไวยากรณ์ คิวรีที่มีไวยากรณ์ RLS ที่ไม่ถูกต้องหรือไวยากรณ์ RLS ที่ไม่ตรงกับผลลัพธ์ของตารางพื้นฐานจะไม่มีการแสดงแถวให้กับผู้ใช้ หรือข้อผิดพลาดของคิวรีในจุดสิ้นสุดการวิเคราะห์ SQL
แนวทางปฏิบัติที่ดีที่สุด ให้หลีกเลี่ยงการใช้นิพจน์ RLS ที่คลุมเครือหรือซับซ้อนเกินไป นิพจน์ที่พิมพ์อย่างแรงด้วยการค้นหาจํานวนเต็มหรือสตริงที่มี "=" จะปลอดภัยและเข้าใจง่ายที่สุด
ใช้ขั้นตอนต่อไปนี้เพื่อกําหนดกฎ RLS:
ไปที่ Lakehouse ของคุณ แล้วเลือก จัดการความปลอดภัย OneLake (พรีวิว)
เลือกบทบาทที่มีอยู่ที่คุณต้องการกําหนดความปลอดภัยของตารางหรือโฟลเดอร์ หรือเลือก ใหม่เพื่อสร้างบทบาทใหม่
บนหน้ารายละเอียดบทบาท ให้เลือกตัวเลือกเพิ่มเติม (...) ถัดจากตารางที่คุณต้องการกําหนด RLS จากนั้นเลือก ความปลอดภัยแถว (ตัวอย่าง)
พิมพ์คําสั่ง SQL สําหรับกําหนดแถวที่คุณต้องการให้ผู้ใช้เห็นในตัวแก้ไขโค้ด ใช้ส่วนกฎไวยากรณ์ สําหรับคําแนะนํา
เลือก บันทึก เพื่อยืนยันกฎความปลอดภัยของแถว
เปิดใช้งานการรักษาความปลอดภัย OneLake สําหรับจุดสิ้นสุดการวิเคราะห์ SQL
ก่อนที่คุณสามารถใช้การรักษาความปลอดภัย OneLake กับจุดสิ้นสุดการวิเคราะห์ SQL คุณต้องเปิดใช้งานโหมดข้อมูลประจําตัวของผู้ใช้ ตําแหน่งข้อมูลการวิเคราะห์ SQL ที่สร้างขึ้นใหม่จะมีค่าเริ่มต้นเป็นโหมดข้อมูลประจําตัวของผู้ใช้ ดังนั้นจึงต้องปฏิบัติตามขั้นตอนเหล่านี้สําหรับจุดสิ้นสุดการวิเคราะห์ SQL ที่มีอยู่
หมายเหตุ
การสลับไปยังโหมด ข้อมูลประจําตัวของผู้ใช้ จะต้องทําเพียงครั้งเดียวต่อจุดสิ้นสุดการวิเคราะห์ SQL จุดสิ้นสุดที่ไม่ได้สลับเป็นโหมดข้อมูลประจําตัวของผู้ใช้จะยังคงใช้ข้อมูลประจําตัวที่ได้รับมอบหมายเพื่อประเมินสิทธิ์
นําทางไปยังจุดสิ้นสุดการวิเคราะห์ SQL
ในประสบการณ์การใช้งานจุดสิ้นสุดการวิเคราะห์ SQL ให้เลือกแท็บ ความปลอดภัย ในริบบอนด้านบน
เลือก ข้อมูลประจําตัวของผู้ใช้ ภายใต้ โหมดการเข้าถึง OneLake
ในพร้อมท์ เลือกใช่ใช้ข้อมูลประจําตัวของผู้ใช้
ตอนนี้จุดสิ้นสุดการวิเคราะห์ SQL พร้อมใช้งานกับการรักษาความปลอดภัย OneLake แล้ว
กฎไวยากรณ์
กฎการรักษาความปลอดภัยระดับแถวทั้งหมดจะอยู่ในรูปแบบต่อไปนี้:
SELECT * FROM {schema_name}.{table_name} WHERE {column_level_boolean_1}{column_level_boolean_2}...{column_level_boolean_N}
ตัวอย่างเช่น:
SELECT * FROM Sales WHERE Amount>'50000' AND State='CA'
จํานวนอักขระสูงสุดในกฎความปลอดภัยระดับแถวคือ 1000
ตัวดําเนินการที่สนับสนุน
กฎการรักษาความปลอดภัยระดับแถวสนับสนุนรายการต่อไปนี้ของตัวดําเนินการและคําสําคัญ:
| ตัวดำเนินการ | คำอธิบาย |
|---|---|
| = (เท่ากับ) | ประเมินเป็น true ถ้าค่าทั้งสองเป็นชนิดข้อมูลเดียวกันและการจับคู่ที่ตรงกัน |
| <> (ไม่เท่ากับ) | ประเมินเป็น true ถ้าค่าทั้งสองไม่ใช่ชนิดข้อมูลเดียวกัน และไม่ตรงกันทั้งหมด |
| > (มากกว่า) | ประเมินเป็น true ถ้าค่าคอลัมน์มากกว่าค่าการประเมิน สําหรับค่าสตริง ตัวดําเนินการนี้ใช้การเปรียบเทียบระดับบิตเพื่อกําหนดว่าสตริงหนึ่งมากกว่าสตริงอื่นหรือไม่ |
| >= (มากกว่าหรือเท่ากับ) | ประเมินเป็น true ถ้าค่าคอลัมน์มากกว่าหรือเท่ากับค่าการประเมิน สําหรับค่าสตริง ตัวดําเนินการนี้ใช้การเปรียบเทียบระดับบิตเพื่อกําหนดว่าสตริงหนึ่งมากกว่าหรือเท่ากับอีกสตริงหนึ่งหรือไม่ |
| < (น้อยกว่า) | ประเมินเป็น true ถ้าค่าคอลัมน์น้อยกว่าค่าการประเมิน สําหรับค่าสตริง ตัวดําเนินการนี้ใช้การเปรียบเทียบระดับบิตเพื่อกําหนดว่าสตริงหนึ่งน้อยกว่าสตริงอื่นหรือไม่ |
| <= (น้อยกว่าหรือเท่ากับ) | ประเมินเป็น true ถ้าค่าของคอลัมน์น้อยกว่าหรือเท่ากับค่าการประเมิน สําหรับค่าสตริง ตัวดําเนินการนี้ใช้การเปรียบเทียบระดับบิตเพื่อกําหนดว่าสตริงหนึ่งน้อยกว่าหรือเท่ากับอีกสตริงหนึ่งหรือไม่ |
| ใน | ประเมินเป็น true ถ้าค่าการประเมินใดก็ตามเป็นชนิดข้อมูลเดียวกันและตรงกับค่าคอลัมน์ |
| ไม่ | ประเมินเป็น true ถ้าค่าการประเมินใด ๆ ที่ไม่ใช่ชนิดข้อมูลเดียวกันหรือไม่ใช่ค่าคอลัมน์ที่ตรงกัน |
| และ | รวมคําสั่งก่อนหน้าและคําสั่งที่ตามมาโดยใช้การดําเนินการ AND บูลีน คําสั่งทั้งสองต้องเป็นจริงสําหรับเพรดิเคตทั้งหมดให้เป็นจริง |
| หรือ | รวมคําสั่งก่อนหน้าและคําสั่งที่ตามมาโดยใช้การดําเนินการ OR บูลีน หนึ่งในคําสั่งต้องเป็นจริงสําหรับเพรดิเคตทั้งหมดเป็นจริง |
| จริง | นิพจน์บูลีนสําหรับ true |
| เท็จ | นิพจน์บูลีนสําหรับเท็จ |
| เปล่า | ชนิดข้อมูลที่ว่างเปล่า ซึ่งสามารถใช้ได้กับตัวดําเนินการ IS ตัวอย่างเช่น: row IS BLANK |
| โมฆะ | ชนิดข้อมูล null ซึ่งสามารถใช้กับตัวดําเนินการ IS ได้ ตัวอย่างเช่น: row IS NULL |
รวมการรักษาความปลอดภัยระดับแถวและระดับคอลัมน์
การรักษาความปลอดภัยระดับแถวและระดับคอลัมน์สามารถใช้ร่วมกันเพื่อจํากัดการเข้าถึงตารางของผู้ใช้ อย่างไรก็ตาม ต้องมีการใช้นโยบายสองข้อโดยใช้บทบาทความปลอดภัย OneLake เดียว ในสถานการณ์นี้ การเข้าถึงข้อมูลจะถูกจํากัดตามกฎที่กําหนดไว้ในบทบาทเดียว
การรักษาความปลอดภัย OneLake ไม่สนับสนุนการรวมบทบาทสองบทบาทหรือมากกว่าโดยที่บทบาทหนึ่งมีกฎ RLS และอีกอันมีกฎ CLS ผู้ใช้ที่พยายามเข้าถึงตารางที่เป็นส่วนหนึ่งของชุดบทบาทที่ไม่สนับสนุนจะได้รับข้อผิดพลาดในการคิวรี