การมาสก์ข้อมูลแบบไดนามิกในคลังข้อมูล Fabric
นําไปใช้กับ:✅ จุดสิ้นสุดการวิเคราะห์ SQL และ Warehouse ใน Microsoft Fabric
การมาสก์ข้อมูลแบบไดนามิกจํากัดการเปิดเผยข้อมูลที่ละเอียดอ่อนโดยการซ่อนไว้กับผู้ใช้ที่ไม่แสวงหาสิทธิ์ ซึ่งสามารถใช้เพื่อลดความซับซ้อนของการออกแบบและการเข้ารหัสความปลอดภัยในแอปพลิเคชันของคุณ
การมาสก์ข้อมูลแบบไดนามิกช่วยป้องกันการดูข้อมูลที่สําคัญโดยไม่ได้รับอนุญาตโดยเปิดให้ผู้ดูแลระบบระบุปริมาณข้อมูลที่ละเอียดอ่อนที่จะเปิดเผย โดยมีผลน้อยที่สุดในเลเยอร์ของแอปพลิเคชัน สามารถกําหนดค่าการมาสก์ข้อมูลแบบไดนามิกบนเขตข้อมูลฐานข้อมูลที่กําหนดเพื่อซ่อนข้อมูลที่ละเอียดอ่อนในชุดผลลัพธ์ของคิวรี ด้วยการมาสก์ข้อมูลแบบไดนามิก ข้อมูลในฐานข้อมูลจะไม่ถูกเปลี่ยนแปลง ดังนั้นจึงสามารถใช้กับแอปพลิเคชันที่มีอยู่ได้เนื่องจากมีการใช้กฎการมาสก์กับผลลัพธ์ของคิวรี แอปพลิเคชันจํานวนมากสามารถซ่อนตัวข้อมูลที่สําคัญได้โดยไม่ต้องปรับเปลี่ยนคิวรีที่มีอยู่
- นโยบายการปกปิดข้อมูลส่วนกลางทําหน้าที่โดยตรงกับเขตข้อมูลที่ละเอียดอ่อนในฐานข้อมูล
- กําหนดผู้ใช้ที่มีสิทธิ์พิเศษหรือบทบาทที่มีสิทธิ์เข้าถึงข้อมูลที่ละเอียดอ่อน
- คุณลักษณะการปกปิดข้อมูลแบบไดนามิกแบบเต็มรูปแบบและฟังก์ชันการมาสก์บางส่วนและรูปแบบสุ่มสําหรับข้อมูลตัวเลข
- คําสั่ง Transact-SQL อย่างง่ายจะกําหนดและจัดการมาสก์
วัตถุประสงค์ของการมาสก์ข้อมูลแบบไดนามิกคือการจํากัดการเปิดเผยข้อมูลที่ละเอียดอ่อน ป้องกันผู้ใช้ที่ไม่ควรเข้าถึงข้อมูลจากการดู การมาสก์ข้อมูลแบบไดนามิกไม่ได้มีวัตถุประสงค์เพื่อป้องกันไม่ให้ผู้ใช้ฐานข้อมูลเชื่อมต่อกับฐานข้อมูลโดยตรงและเรียกใช้คิวรีที่ละเอียดถี่ถ้วนที่แสดงส่วนของข้อมูลที่ละเอียดอ่อน
การมาสก์ข้อมูลแบบไดนามิกเป็นส่วนเสริมของคุณลักษณะความปลอดภัยของ Fabric อื่น ๆ เช่น การรักษาความปลอดภัย ระดับคอลัมน์และการ รักษาความปลอดภัยระดับแถว เราแนะนําให้ใช้คุณลักษณะการป้องกันข้อมูลเหล่านี้ร่วมกันเพื่อปกป้องข้อมูลที่สําคัญในฐานข้อมูล
กําหนดรูปแบบข้อมูลแบบไดนามิก
กฎการมาสก์สามารถกําหนดบนคอลัมน์ในตารางเพื่อขจัดข้อมูลในคอลัมน์นั้น มาสก์มีอยู่สี่ประเภท
Function | คำอธิบาย | ตัวอย่าง |
---|---|---|
ค่าเริ่มต้น | การมาสก์เต็มรูปแบบตามชนิดข้อมูลของเขตข้อมูลที่กําหนด สําหรับชนิดข้อมูลสตริง ให้ใช้ XXXX (หรือน้อยกว่า) ถ้าขนาดของเขตข้อมูลน้อยกว่า 4 อักขระ (char, nchar, varchar, nvarchar, text, ntext)สําหรับชนิดข้อมูลตัวเลข ให้ใช้ค่าศูนย์ (bigint, bit, decimal, int, money, numeric, smallint, smallmoney, tinyint, float, real) สําหรับชนิดข้อมูลวันที่และเวลา ให้ใช้ (วันที่, วันที่เวลา 2, วันที่เวลา, datetimeoffset, smalldatetime, time) 1900-01-01 00:00:00.0000000 สําหรับชนิดข้อมูลไบนารี ใช้ไบต์เดียวของค่า ASCII 0 (ไบนารี varbinary รูปภาพ) |
ไวยากรณ์ข้อกําหนดคอลัมน์ตัวอย่าง: Phone# varchar(12) MASKED WITH (FUNCTION = 'default()') NULL ตัวอย่างของไวยากรณ์การเปลี่ยนแปลง: ALTER COLUMN Gender ADD MASKED WITH (FUNCTION = 'default()') |
ส่งอีเมล | วิธีการมาสก์ที่แสดงตัวอักษรแรกของที่อยู่อีเมลและคําต่อท้ายคงที่ ".com" ในรูปแบบที่อยู่อีเมล aXXX@XXXX.com . |
ไวยากรณ์ข้อกําหนดตัวอย่าง: Email varchar(100) MASKED WITH (FUNCTION = 'email()') NULL ตัวอย่างของไวยากรณ์การเปลี่ยนแปลง: ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()') |
สุ่ม | ฟังก์ชันมาสก์แบบสุ่มสําหรับใช้กับชนิดตัวเลขใด ๆ เพื่อมาสก์ค่าเดิมด้วยค่าสุ่มภายในช่วงที่ระบุ | ไวยากรณ์ข้อกําหนดตัวอย่าง: Account_Number bigint MASKED WITH (FUNCTION = 'random([start range], [end range])') ตัวอย่างของไวยากรณ์การเปลี่ยนแปลง: ALTER COLUMN [Month] ADD MASKED WITH (FUNCTION = 'random(1, 12)') |
สตริงแบบกําหนดเอง | วิธีการมาสก์ที่แสดงตัวอักษรตัวแรกและตัวสุดท้าย และเพิ่มสตริงช่องว่างภายในแบบกําหนดเองตรงกลาง prefix,[padding],suffix ถ้าค่าเดิมสั้นเกินไปเพื่อทําให้รูปแบบทั้งหมดเสร็จสมบูรณ์ ส่วนหนึ่งของคํานําหน้าหรือคําต่อท้ายจะไม่แสดงขึ้น |
ไวยากรณ์ข้อกําหนดตัวอย่าง: FirstName varchar(100) MASKED WITH (FUNCTION = 'partial(prefix,[padding],suffix)') NULL ตัวอย่างของไวยากรณ์การเปลี่ยนแปลง: ALTER COLUMN [Phone Number] ADD MASKED WITH (FUNCTION = 'partial(1,"XXXXXXX",0)') ซึ่งจะเปลี่ยนหมายเลขโทรศัพท์เช่น 555.123.1234 เป็น5XXXXXXX ตัวอย่างเพิ่มเติม: ALTER COLUMN [Phone Number] ADD MASKED WITH (FUNCTION = 'partial(5,"XXXXXXX",0)') ซึ่งจะเปลี่ยนหมายเลขโทรศัพท์เช่น 555.123.1234 เป็น555.1XXXXXXX |
สําหรับตัวอย่างเพิ่มเติม ดูวิธีการใช้การมาสก์ข้อมูลแบบไดนามิกใน Synapse Data Warehouse
การอนุญาต
ผู้ใช้ที่ไม่มีสิทธิ์ของผู้ดูแลระบบ สมาชิก หรือผู้สนับสนุนในพื้นที่ทํางาน และไม่มีสิทธิ์ระดับสูงบนคลังสินค้า จะเห็นข้อมูลที่มาสก์
คุณไม่จําเป็นต้องมีสิทธิ์พิเศษในการสร้างตารางที่มีรูปแบบข้อมูลแบบไดนามิก เฉพาะสิทธิ์มาตรฐาน CREATE TABLE
และ ALTER
บน Schema เท่านั้น
การเพิ่ม การแทนที่ หรือการลบรูปแบบของคอลัมน์จําเป็นต้องมี ALTER ANY MASK
สิทธิ์และ ALTER
สิทธิ์บนตาราง ก็เหมาะสมที่จะมอบ ALTER ANY MASK
ให้เจ้าหน้าที่รักษาความปลอดภัย
ผู้ใช้ที่ SELECT
มีสิทธิ์บนตารางสามารถดูข้อมูลตารางได้ คอลัมน์ที่กําหนดเป็นมาสก์จะแสดงข้อมูลที่ถูกมาสก์ UNMASK
ให้สิทธิ์แก่ผู้ใช้เพื่อให้สามารถเรียกใช้ข้อมูลที่ไม่ติดมาสก์จากคอลัมน์ที่มีการกําหนดมาสก์
สิทธิ์ CONTROL
บนฐานข้อมูลมีทั้ง ALTER ANY MASK
สิทธิ์ และ UNMASK
ที่ช่วยให้ผู้ใช้สามารถดูข้อมูลที่ไม่ได้เก็บข้อมูลได้ ผู้ใช้หรือบทบาทผู้ดูแลระบบ เช่น ผู้ดูแลระบบ สมาชิก หรือผู้สนับสนุนมีสิทธิ์ควบคุมบนฐานข้อมูลตามการออกแบบ และสามารถดูข้อมูลที่ไม่ได้เก็บตามค่าเริ่มต้น สิทธิ์แบบยกระดับบนคลังสินค้ารวมถึง CONTROL
สิทธิ์
ข้อควรพิจารณาด้านความปลอดภัย: การบายพาสก์โดยใช้เทคนิคการอนุมานหรือการบังคับใช้กําลังเดรัจฉาน
การมาสก์ข้อมูลแบบไดนามิกได้รับการออกแบบมาเพื่อทําให้การพัฒนาแอปพลิเคชันง่ายขึ้นโดยการจํากัดการเปิดเผยข้อมูลในชุดคิวรีที่กําหนดไว้ล่วงหน้าที่ใช้โดยแอปพลิเคชัน ในขณะที่ Dynamic Data Masking ยังมีประโยชน์ในการป้องกันการเปิดเผยข้อมูลที่ละเอียดอ่อนโดยไม่ตั้งใจเมื่อเข้าถึงข้อมูลโดยตรง สิ่งสําคัญคือต้องทราบว่าผู้ใช้ที่ไม่มีสิทธิเข้าถึงคิวรีสามารถใช้เทคนิคเพื่อเข้าถึงข้อมูลจริงได้
ตัวอย่างเช่น พิจารณาผู้ใช้ที่มีสิทธิ์เพียงพอในการเรียกใช้คิวรีบน Warehouse และพยายาม 'คาดเดา' ข้อมูลเบื้องต้นและอนุมานค่าจริงในท้ายที่สุด สมมติว่าเรามีรูปแบบที่กําหนดไว้ใน [Employee].[Salary]
คอลัมน์ และผู้ใช้รายนี้เชื่อมต่อโดยตรงกับฐานข้อมูล และเริ่มการคาดเดาค่า ซึ่งจะอนุมาน [Salary]
ค่าในตาราง Employees
ในที่สุด:
SELECT ID, Name, Salary FROM Employees
WHERE Salary > 99999 and Salary < 100001;
ผลลัพธ์ใน:
รหัส | ชื่อ | เงินเดือน |
---|---|---|
62543 | Jane Doe | 0 |
91245 | จอห์น สมิธ | 0 |
ซึ่งแสดงให้เห็นว่าไม่ควรใช้การมาสก์ข้อมูลแบบไดนามิกเพียงอย่างเดียวเพื่อรักษาความปลอดภัยของข้อมูลที่ละเอียดอ่อนจากผู้ใช้ที่มีการเข้าถึงคิวรีไปยังจุดสิ้นสุดคลังสินค้าหรือการวิเคราะห์ SQL ซึ่งเหมาะสมสําหรับการป้องกันการเปิดเผยข้อมูลที่ละเอียดอ่อน แต่ไม่ป้องกันจากเจตนาที่เป็นอันตรายในการอนุมานข้อมูลพื้นฐาน
สิ่งสําคัญคือการจัดการการรักษาความปลอดภัยระดับออบเจ็กต์ด้วย สิทธิ์ระดับแยกย่อยของ SQL อย่างถูกต้องและปฏิบัติตามหลักการการอนุญาตที่จําเป็นน้อยที่สุดเสมอ
เนื้อหาที่เกี่ยวข้อง
- บทบาทพื้นที่ทํางานในคลังข้อมูล Fabric
- การรักษาความปลอดภัยระดับคอลัมน์ในคลังข้อมูล Fabric
- การรักษาความปลอดภัยระดับแถวในคลังข้อมูล Fabric
- ความปลอดภัยสําหรับคลังข้อมูลใน Microsoft Fabric