แชร์ผ่าน


การมาสก์ข้อมูลแบบไดนามิกในคลังข้อมูล 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 อย่างถูกต้องและปฏิบัติตามหลักการการอนุญาตที่จําเป็นน้อยที่สุดเสมอ

ขั้นตอนถัดไป