กําหนดค่าการมาสก์ข้อมูลแบบไดนามิก
การมาสก์ข้อมูลแบบไดนามิก เป็นวิธีจํากัดการเปิดเผยข้อมูลที่ละเอียดอ่อนโดยไม่ต้องเปลี่ยนโค้ดแอปพลิเคชันหรือข้อมูลพื้นฐาน เมื่อผู้ใช้คิวรีคอลัมน์ที่มาสก์ SQL Server จะส่งกลับค่าที่สร้างความสับสนตามกฎการมาสก์ที่คุณกําหนด ข้อมูลจริงยังคงไม่เปลี่ยนแปลงในฐานข้อมูล แต่ผู้ใช้ที่ไม่ได้รับอนุญาตจะเห็นค่าที่มาสก์ในผลลัพธ์แบบสอบถาม
วิธีนี้ใช้ได้ผลดีเมื่อคุณต้องการปกป้องข้อมูลที่ละเอียดอ่อนจากผู้ใช้บางรายในขณะที่อนุญาตให้ผู้อื่นเห็นข้อมูลที่สมบูรณ์ ผู้ดูแลระบบฐานข้อมูล นักพัฒนา และเจ้าหน้าที่ฝ่ายสนับสนุนสามารถทํางานกับข้อมูลการผลิตได้โดยไม่ต้องเปิดเผยข้อมูลลูกค้าจริง
ทําความเข้าใจฟังก์ชันการมาสก์
การมาสก์ข้อมูลแบบไดนามิกรองรับฟังก์ชันการมาสก์สี่ฟังก์ชัน ซึ่งแต่ละฟังก์ชันได้รับการออกแบบมาสําหรับประเภทข้อมูลและสถานการณ์ที่แตกต่างกัน การทําความเข้าใจฟังก์ชันเหล่านี้จะช่วยให้คุณเลือกแนวทางการมาสก์ที่เหมาะสมสําหรับคอลัมน์ที่ละเอียดอ่อนของคุณ
ฟังก์ชัน ดีฟอลต์ จะแทนที่ค่าทั้งหมดด้วยสตริงคงที่ สําหรับสตริง คุณจะเห็น "XXXX" (หรืออักขระ X น้อยกว่าสําหรับคอลัมน์ที่สั้นกว่า) ตัวเลขแสดงเป็นศูนย์ และวันที่แสดง "01-01-1900" ใช้สิ่งนี้เมื่อคุณต้องการสร้างความสับสนอย่างสมบูรณ์
ฟังก์ชัน อีเมล จะแสดงเฉพาะอักขระตัวแรกของที่อยู่อีเมลแทนที่ตรงกลางด้วย "XXX" และรักษาคําต่อท้ายโดเมนไว้ ดังนั้น "john.smith@contoso.com" จะปรากฏเป็น "jXXX@XXXX.com" ข้อมูลยังคงดูเหมือนอีเมลที่ถูกต้อง แต่ที่อยู่จริงยังคงซ่อนอยู่
ฟังก์ชัน สุ่ม จะแสดงค่าตัวเลขเป็นตัวเลขสุ่มภายในช่วงที่คุณระบุ แต่ละแบบสอบถามจะส่งกลับค่าที่แตกต่างกัน วิธีนี้ใช้ได้ผลดีกับข้อมูลทางการเงินหรือสถิติที่คุณต้องการข้อมูลที่ดูเหมือนเป็นของแท้
ฟังก์ชัน บางส่วน ช่วยให้คุณควบคุมได้อย่างแม่นยํา คุณระบุจํานวนอักขระที่จะแสดงที่จุดเริ่มต้น อักขระช่องว่างภายในที่จะใช้ตรงกลาง และจํานวนอักขระที่จะแสดงในตอนท้าย ตัวอย่างเช่น หมายเลขโทรศัพท์อาจปรากฏเป็น "206-XXX-XX89"
กําหนดค่ามาสก์คอลัมน์
คุณใช้มาสก์เมื่อสร้างตาราง หรือโดยการเปลี่ยนแปลงคอลัมน์ที่มีอยู่
MASKED WITHส่วนคําสั่งระบุฟังก์ชันที่จะใช้
นี่คือตารางที่มีคอลัมน์มาสก์หลายคอลัมน์:
CREATE TABLE Customers (
CustomerID int PRIMARY KEY,
FirstName varchar(50),
LastName varchar(50),
Email varchar(100) MASKED WITH (FUNCTION = 'email()'),
Phone varchar(20) MASKED WITH (FUNCTION = 'partial(3, "-XXX-XX", 2)'),
CreditCardNumber varchar(19) MASKED WITH (FUNCTION = 'partial(0, "XXXX-XXXX-XXXX-", 4)'),
Income decimal(18,2) MASKED WITH (FUNCTION = 'random(10000, 100000)'),
SSN char(11) MASKED WITH (FUNCTION = 'default()')
);
สังเกตว่าแต่ละคอลัมน์ใช้ฟังก์ชันการมาสก์ที่แตกต่างกันอย่างไรโดยอิงตามสิ่งที่สมเหตุสมผลสําหรับข้อมูลนั้น:
-
Emailใช้การมาสก์อีเมลเพื่อรักษารูปแบบอีเมล -
Phoneแสดงตัวเลขสามหลักแรกและตัวเลขสองหลักสุดท้าย -
CreditCardNumberเผยเฉพาะตัวเลขสี่หลักสุดท้าย -
Incomeแสดงค่าสุ่มระหว่าง 10,000 ถึง 100,000 -
SSNใช้การมาสก์เริ่มต้นสําหรับการทําให้สับสนอย่างสมบูรณ์
หากต้องการเพิ่มการมาสก์ให้กับคอลัมน์ที่มีอยู่ ให้ใช้ ALTER COLUMN:
ALTER TABLE Customers
ALTER COLUMN DateOfBirth ADD MASKED WITH (FUNCTION = 'default()');
คุณสามารถลบการมาสก์ออกจากคอลัมน์ได้เมื่อไม่ต้องการอีกต่อไป
ALTER TABLE Customers
ALTER COLUMN DateOfBirth DROP MASKED;
ควบคุมการมองเห็นมาสก์ด้วยสิทธิ์
โดยค่าเริ่มต้น ผู้ใช้จะเห็นข้อมูลที่มาสก์ เว้นแต่จะมีสิทธิ์ที่ยกระดับ
UNMASKสิทธิ์จะควบคุมว่าใครจะเห็นค่าที่แท้จริงที่อยู่เบื้องหลังมาสก์
หากต้องการอนุญาตให้ผู้ใช้ดูข้อมูลที่ไม่ได้ปิดบังทั้งหมดในฐานข้อมูล ให้ทําดังนี้
GRANT UNMASK TO DataAnalyst;
สิทธิ์ระดับฐานข้อมูลนี้จะแสดงคอลัมน์ที่มาสก์ทั้งหมดให้กับผู้ใช้ที่ระบุ อย่างไรก็ตาม คุณอาจต้องการการควบคุมที่ละเอียดยิ่งขึ้น ซึ่งช่วยให้ผู้ใช้สามารถเปิดโปสก์เฉพาะตารางหรือคอลัมน์ที่เฉพาะเจาะจงได้
เริ่มต้นด้วย SQL Server 2022 คุณสามารถให้สิทธิ์ UNMASK ในระดับสคีมา ตาราง หรือแม้แต่คอลัมน์:
-- Grant unmask on a specific schema
GRANT UNMASK ON SCHEMA::Sales TO SalesManager;
-- Grant unmask on a specific table
GRANT UNMASK ON Customers TO CustomerService;
-- Grant unmask on a specific column
GRANT UNMASK ON Customers(Phone) TO TelemarketingTeam;
วิธีการที่ละเอียดนี้ช่วยให้คุณปฏิบัติตามหลักการของสิทธิ์ขั้นต่ํา โดยผู้ใช้จะเห็นเฉพาะข้อมูลที่ละเอียดอ่อนที่พวกเขาต้องการจริงๆ สําหรับงานของตน
สำคัญ
ผู้ใช้ที่ SELECT มีสิทธิ์ในตารางรวมกับ ALTER สิทธิ์สามารถข้ามการมาสก์ได้โดยการแก้ไขข้อกําหนดคอลัมน์ จัดการสิทธิ์อย่างระมัดระวังเพื่อป้องกันไม่ให้ผู้ใช้ถอดมาสก์ออก
ใช้กลยุทธ์การกําบัง
เมื่อวางแผนกลยุทธ์การมาสก์ ให้นึกถึงวิธีที่บทบาทของผู้ใช้ต่างๆ โต้ตอบกับข้อมูลของคุณ คอลัมน์ใดที่มีข้อมูลที่ละเอียดอ่อน ใครต้องการเห็นคุณค่าที่แท้จริงอย่างถูกต้องตามกฎหมาย?
รูปแบบทั่วไปคือการสร้างบทบาทฐานข้อมูลสําหรับระดับการเข้าถึงที่แตกต่างกัน:
-- Role for users who see masked data
CREATE ROLE MaskedDataViewers;
GRANT SELECT ON Customers TO MaskedDataViewers;
-- Role for users who see unmasked data
CREATE ROLE UnmaskedDataViewers;
GRANT SELECT ON Customers TO UnmaskedDataViewers;
GRANT UNMASK ON Customers TO UnmaskedDataViewers;
-- Add users to appropriate roles
ALTER ROLE MaskedDataViewers ADD MEMBER SupportStaff;
ALTER ROLE UnmaskedDataViewers ADD MEMBER ComplianceOfficer;
สิ่งหนึ่งที่ควรทราบ: การมาสก์ข้อมูลแบบไดนามิกทํางานที่เลเยอร์การนําเสนอ ซึ่งหมายความว่าข้อมูลจริงยังคงสามารถอนุมานได้ผ่านรูปแบบการสืบค้นบางอย่าง สําหรับข้อมูลที่มีความอ่อนไหวสูงซึ่งต้องการการป้องกันอย่างสมบูรณ์ ให้รวมการปิดบังกับมาตรการรักษาความปลอดภัยอื่นๆ เช่น การเข้ารหัสหรือการรักษาความปลอดภัย Row-Level
พิจารณาสถานการณ์เหล่านี้ที่การมาสก์มีประโยชน์:
- สภาพแวดล้อมการพัฒนาและการทดสอบที่ทีมต้องการโครงสร้างข้อมูลที่สมจริงโดยไม่มีข้อมูลลูกค้าจริง
- แอปพลิเคชันการบริการลูกค้าที่เจ้าหน้าที่ฝ่ายสนับสนุนจําเป็นต้องตรวจสอบรายละเอียดบัญชีบางส่วน
- สถานการณ์การรายงานที่ข้อมูลรวมมีความสําคัญ แต่แต่ละเรกคอร์ดควรเป็นส่วนตัว
- ตรวจสอบการปฏิบัติตามข้อกําหนดที่ผู้ใช้บางรายต้องการการเข้าถึงแบบเต็มรูปแบบในขณะที่ผู้อื่นเห็นข้อมูลที่จํากัด
Note
การมาสก์ข้อมูลแบบไดนามิกในฐานข้อมูล SQL ใน Microsoft Fabric ทํางานในลักษณะเดียวกับฐานข้อมูล Azure SQL คุณกําหนดค่ามาสก์โดยใช้ T-SQL ผ่านจุดสิ้นสุดการวิเคราะห์ SQL
การปิดบังจะเพิ่มชั้นการป้องกันที่สําคัญ แต่อย่าพึ่งพาข้อมูลที่ละเอียดอ่อนที่สุดของคุณเพียงอย่างเดียว ใช้ควบคู่ไปกับการเข้ารหัส ความปลอดภัยของ Row-Level และการจัดการสิทธิ์ที่เหมาะสมเพื่อการป้องกันที่ครอบคลุม