Bài viết giới thiệu những kiến thức cơ bản về tạo mặt nạ dữ liệu động (DDM) trong SQL Server cùng với tổng quan về nó được hỗ trợ bởi một ví dụ đơn giản về triển khai mặt nạ dữ liệu. Ngoài ra, người đọc sẽ làm quen với những lợi ích của việc che dấu dữ liệu động. Bài báo này cũng nhấn mạnh tầm quan trọng của việc che dấu dữ liệu trong các nhiệm vụ phát triển cơ sở dữ liệu hàng ngày khi một số trường phải được che do tính chất nhạy cảm của chúng để tuân thủ các thông lệ tiêu chuẩn.
Giới thiệu về Mặt nạ dữ liệu
Hãy cùng chúng tôi xem qua các khái niệm cơ bản về mặt nạ dữ liệu và tính khả dụng của tính năng này trong SQL Server.
Định nghĩa đơn giản
Tạo mặt nạ dữ liệu là một phương pháp che giấu hoàn toàn hoặc một phần dữ liệu do đó làm cho dữ liệu khó nhận ra hoặc hiểu được sau khi đã áp dụng tính năng che.
Định nghĩa Microsoft
Theo tài liệu của Microsoft, Tạo mặt nạ dữ liệu động (DDM) hạn chế việc hiển thị dữ liệu nhạy cảm bằng cách che nó cho người dùng không có đặc quyền.
Dữ liệu nhạy cảm là gì
Theo dữ liệu nhạy cảm, chúng tôi muốn nói đến bất kỳ dữ liệu nào chứa thông tin cá nhân, nhận dạng cá nhân, tài chính hoặc thông tin bảo mật mà nếu bị tiết lộ có thể bị sử dụng sai mục đích hoặc làm tổn hại danh tiếng của một tổ chức.
Ví dụ về dữ liệu nhạy cảm
Một ví dụ điển hình về dữ liệu nhạy cảm là số thẻ ghi nợ được lưu trữ trong cơ sở dữ liệu phải được bảo vệ khỏi mọi hành vi sử dụng trái phép. Một ví dụ điển hình khác về dữ liệu nhạy cảm là địa chỉ email cá nhân có thể dễ dàng xác định một người.
Người dùng không có đặc quyền
Bất kỳ người dùng cơ sở dữ liệu nào không được phép xem dữ liệu nhạy cảm đều được coi là người dùng không có đặc quyền.
Mặt nạ dữ liệu động (DDM)
Tính năng tạo mặt nạ dữ liệu được SQL Server hỗ trợ được gọi là mặt nạ dữ liệu động cũng được tham chiếu là DDM trong tài liệu của Microsoft. Nói cách khác, Microsoft đề cập đến việc tạo mặt nạ dữ liệu là mặt nạ dữ liệu động trong SQL Server.
Khả năng tương thích
Theo tài liệu của Microsoft, tính năng tạo mặt nạ dữ liệu động được các phiên bản SQL Server sau hỗ trợ:
1. SQL Server 2016 và các phiên bản mới hơn
2. Cơ sở dữ liệu Azure SQL
3. Kho dữ liệu Azure SQL
Vì vậy, nếu bạn chưa bắt đầu sử dụng (các) cơ sở dữ liệu Azure SQL, thì bạn cần có SQL Server 2016 tối thiểu để sử dụng tính năng tạo mặt nạ dữ liệu động.
Định cấu hình Mặt nạ dữ liệu động
Mặt nạ dữ liệu động có thể được định cấu hình đơn giản bằng cách sử dụng các lệnh T-SQL.
Việc triển khai tạo mặt nạ dữ liệu động được thực hiện thông qua tập lệnh T-SQL để ngăn người dùng trái phép xem dữ liệu nhạy cảm.
Lợi ích của Mặt nạ dữ liệu động
Cuối cùng, hãy cùng chúng tôi điểm qua một số lợi ích chính của việc tạo mặt nạ dữ liệu động. ràng buộc chính để đảm bảo rằng cột mà nó được áp dụng có các giá trị riêng biệt (không trùng lặp). Nếu tôi có thể thực thi các giá trị cột riêng biệt tại thời điểm nhập dữ liệu trong ứng dụng front-end của mình, tại sao tôi phải thực thi nó thông qua cơ sở dữ liệu bằng cách áp dụng một ràng buộc khóa duy nhất?
Câu trả lời là để đảm bảo các quy tắc (ràng buộc toàn vẹn ) vẫn nhất quán và được kiểm soát tập trung. Tôi phải làm điều đó ở cấp cơ sở dữ liệu, nếu không, tôi có thể phải viết mã để thực thi các giá trị duy nhất trong tất cả các ứng dụng hiện tại và bất kỳ ứng dụng sắp tới nào truy cập vào cơ sở dữ liệu.
Điều này cũng đúng với tính năng tạo mặt nạ dữ liệu động vì nó xác định che dấu trên một cột ở cấp cơ sở dữ liệu nên các ứng dụng truy cập cơ sở dữ liệu không cần thực hiện thêm bất kỳ thao tác tạo mặt nạ (mã) nào.
Việc tạo mặt nạ dữ liệu động có những lợi ích sau đây so với các phương pháp tiếp cận truyền thống:
1. Tạo mặt nạ dữ liệu động thực hiện chính sách tập trung che giấu hoặc thay đổi dữ liệu nhạy cảm trong cơ sở dữ liệu được kế thừa bởi bất kỳ ứng dụng nào muốn truy cập dữ liệu.
2. Tạo mặt nạ dữ liệu động trong SQL Server có thể giúp quản lý người dùng có đặc quyền xem dữ liệu nhạy cảm và những người dùng không được phép xem dữ liệu đó.
3. Nó có một triển khai đơn giản dưới dạng tập lệnh T-SQL.
Triển khai mặt nạ dữ liệu động
Trước khi triển khai tạo mặt nạ dữ liệu động, chúng ta cần hiểu các loại mặt nạ dữ liệu động có thể được áp dụng cho một cột trong bảng của Cơ sở dữ liệu SQL hoặc Azure SQL.
Các loại Mặt nạ Dữ liệu
Có bốn loại mặt nạ dữ liệu mà chúng ta có thể áp dụng cho một cột:
1. (Các) Mặt nạ dữ liệu mặc định
2. (Các) Mặt nạ dữ liệu từng phần
3. (Các) Mặt nạ Dữ liệu Ngẫu nhiên
4. (Các) Mặt nạ dữ liệu tùy chỉnh
Trong bài viết này, chúng tôi sẽ tập trung vào loại mặt nạ dữ liệu mặc định.
Áp dụng Mặt nạ dữ liệu động
Mặt nạ dữ liệu động có thể được áp dụng cho một cột của bảng theo những cách sau:
1. Khi tạo một bảng mới
2. Thay đổi bảng đã được tạo để áp dụng tính năng che dữ liệu cho (các) cột của nó
Thiết lập cơ sở dữ liệu mẫu
Hãy để chúng tôi tạo cơ sở dữ liệu mẫu có tên SQLDevBlogV5 bằng cách chạy tập lệnh T-SQL sau:
- Tạo cơ sở dữ liệu mẫu (SQLDevBlogV5) TẠO CƠ SỞ DỮ LIỆU SQLDevBlogV5; GOUSE SQLDevBlogV5; - (1) Tạo bảng Bài viết trong cơ sở dữ liệu mẫu Tác giả VARCHAR (50), Tiêu đề VARCHAR (150), Đã xuất bản DATETIME2, Ghi chú VARCHAR (400)) ĐI-- (2) Đang điền bảng bài viếtSET IDENTITY_INSERT [dbo]. [Article] ONINSERT INTO [dbo]. [Article] ([ArticleId ], [Danh mục], [Tác giả], [Tiêu đề], [Đã xuất bản], [Ghi chú]) GIÁ TRỊ (1, N'Development ', N'Atif', N'Introduction to T-SQL Programming ', N'2017- 01-01 00:00:00 ', NULL) CHÈN VÀO [dbo]. [Bài báo] ([Bài báo], [Danh mục], [Tác giả], [Tiêu đề], [Đã xuất bản], [Ghi chú]) GIÁ TRỊ (2, N'Testing ', N'Peter', N'Database Unit Testing Fundamentals ', N'2017-01-10 00:00:00', NULL) CHÈN VÀO [dbo]. [Article] ([ArticleId], [Category ], [Tác giả], [Tiêu đề], [Đã xuất bản], [Ghi chú]) GIÁ TRỊ (3, N'DLM ', N'Sadaf', N'Database Lifecycle Management cho người mới bắt đầu ', N'2017-01-20 00:00:00 ', NULL) CHÈN VÀO [dbo]. [ Bài báo] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) GIÁ TRỊ (4, N'Development ', N'Peter', N'Common Table Expressions (CTE) ' , N'2017-02-10 00:00:00 ', NULL) CHÈN VÀO [dbo]. [Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes] ) GIÁ TRỊ (5, N'Testing ', N'Sadaf', N'Manual Testing so với Automated Testing ', N'2017-03-20 00:00:00', NULL) CHÈN VÀO [dbo]. [Bài báo] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) GIÁ TRỊ (6, N'Testing ', N'Atif', N'Beyond Database Unit Testing ', N'2017 -11-10 00:00:00 ', NULL) CHÈN VÀO [dbo]. [Bài báo] ([Bài báo], [Danh mục], [Tác giả], [Tiêu đề], [Đã xuất bản], [Ghi chú]) GIÁ TRỊ (7 , N'Testing ', N'Sadaf', N'Cross Database Unit Testing ', N'2017-12-20 00:00:00', NULL) CHÈN VÀO [dbo]. [Article] ([ArticleId], [ Danh mục], [Tác giả], [Tiêu đề], [Đã xuất bản], [Ghi chú]) GIÁ TRỊ (8, N'Development ', N'Peter', N'SQLCMD - A Handy Utitliy for Developers ', N'2018-01- 10 00:00:00 ', NULL) CHÈN VÀO [dbo]. [Article] ([ArticleId], [Danh mục], [Tác giả], [Tiêu đề], [Đã xuất bản], [Ghi chú]) GIÁ TRỊ (9, N'Testing ', N'Sadaf', N'Scripting and Testing Database cho người mới bắt đầu ', N'2018-02- 15 00:00:00 ', NULL) CHÈN VÀO [dbo]. [Bài báo] ([Bài báo], [Thể loại], [Tác giả], [Tiêu đề], [Đã xuất bản], [Ghi chú]) GIÁ TRỊ (10, N' Phát triển ', N'Atif', N'Các phương pháp phát triển cơ sở dữ liệu nâng cao ', N'2018-07-10 00:00:00', NULL) CHÈN VÀO [dbo]. [Article] ([ArticleId], [Category], [Tác giả], [Tiêu đề], [Đã xuất bản], [Ghi chú]) GIÁ TRỊ (11, N'Testing ', N'Sadaf', N'How to Write Unit Test for your Database ', N'2018-11-10 00 :00:00 ', NULL) CHÈN VÀO [dbo]. [Bài báo] ([Bài báo], [Danh mục], [Tác giả], [Tiêu đề], [Đã xuất bản], [Ghi chú]) GIÁ TRỊ (12, Không phát triển' , N'Peter ', N'Database Development using Modern Tools', N'2018-12-10 00:00:00 ', NULL) CHÈN VÀO [dbo]. [Article] ([ArticleId], [Category], [ Tác giả], [Tiêu đề], [Đã xuất bản], [Ghi chú]) GIÁ TRỊ (13, N'DLM ', N'Atif', N'Design, Development and Deploy Database ', N'2019-01-01 00:00:00 ', KHÔNG) CHÈN VÀO [dbo]. [ Bài báo] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) GIÁ TRỊ (14, N'DLM ', N'Peter', N'How to Apply Database Lifecycle Management ' , N'2019-02-10 00:00:00 ', NULL) ĐẶT IDENTITY_INSERT [dbo]. [Bài báo] TẮT
Sử dụng truy vấn sau để xem các bài viết:
- Xem bài viết CHỌN [a]. [ArticleId], [a]. [Category], [a]. [Author], [a]. [Title], [a]. [Published], [a ]. [Ghi chú] TỪ dbo Điều A
Yêu cầu kinh doanh để che giấu tên tác giả
Bây giờ, giả sử bạn nhận được một yêu cầu kinh doanh quy định rằng tên tác giả phải được che đi do tính nhạy cảm của thông tin này. Cách tốt nhất để đáp ứng yêu cầu kinh doanh này là che cột Tên bằng DDM.
Tên tác giả tạo mặt nạ
Chúng ta sẽ thay đổi bảng để thêm chức năng che dữ liệu như sau:
- Tạo mặt nạ Tác giả cộtKiểm tra trạng thái mặt nạ
Bạn có thể kiểm tra trạng thái che dữ liệu động bất cứ lúc nào bằng cách sử dụng tập lệnh T-SQL sau được cung cấp trong tài liệu của Microsoft:
- Kiểm tra trạng thái che dữ liệu động:Chọn c.name, tbl.name làm tên_bảng, c.is_masked, c.masking_ Chức năng TỪ sys.masked_columns NHƯ c THAM GIA sys.tables NHƯ tbl BẬT c. [object_id] =tbl. [object_id ] WHERE is_masked =1;Kết quả hiển thị cho chúng ta biết những cột nào đã được che thành công:
Kiểm tra dữ liệu
Bây giờ, hãy kiểm tra dữ liệu bằng cách truy vấn 5 bản ghi hàng đầu của bảng mà chúng tôi đã áp dụng mặt nạ:
- Xem 5 bản ghi khớp hàng đầuSELECT TOP 5 [a]. [ArticleId], [a]. [Category], [a]. [Author], [a]. [Title], [a]. [Đã xuất bản ], [a]. [Notes] FROM dbo.Article AORDER BY a.ArticleIdĐầu ra dường như không cho chúng ta thấy kết quả mong đợi:
Như bạn có thể thấy mặc dù thực tế là chúng tôi đã che cột Tác giả, nó vẫn hiển thị các giá trị thực của nó. Lý do đằng sau hành vi này là tài khoản mà chúng tôi đã sử dụng để áp dụng tính năng tạo mặt nạ dữ liệu động đã có các đặc quyền cao hơn và đó là lý do tại sao dữ liệu bị che lại hiển thị ở dạng ban đầu khi chúng tôi truy vấn bảng bằng tài khoản hiện tại.
Giải pháp là để tạo người dùng mới với quyền Chọn.Tạo người dùng với quyền Chọn trên bảng
Bây giờ chúng ta hãy tạo một người dùng cơ sở dữ liệu mới mà không cần đăng nhập, chỉ có quyền Chọn trên bảng Bài viết như sau:
- Tạo ArticleUser để có Quyền truy cập Chọn vào bảng ArticleCREATE USER Article Người dùng KHÔNG ĐĂNG NHẬP; CẤP LỰA CHỌN ĐỐI VỚI Bài viết ĐẾN Người dùng;Xem 5 bài báo hàng đầu với tư cách là Người dùng
Tiếp theo, thực hiện câu lệnh Select để nhận 5 bài viết hàng đầu bằng cách sử dụng ArticleUser người dùng mới được tạo chỉ với quyền được chọn:
- Thực hiện SELECT Article với tư cách là ArtilceUserEXECUTE AS USER ='ArticleUser'; - Xem phần CHỌN ĐẦU 5 [a]. [ArticleId], [a]. [Category], [a]. [Author], [a]. [Title], [a]. [Published] FROM dbo.Article AORDER BY a.ArticleId - Hoàn nguyên Người dùng về lại người dùng trước đâyREVERT;
Xin chúc mừng! Bạn đã che thành công cột Tác giả theo yêu cầu.
Thả cột có mặt nạ
Bạn có thể loại bỏ tính năng tạo mặt nạ dữ liệu động trên cột mà bạn đã áp dụng nó trước đó bằng cách chỉ cần phát hành lệnh T-SQL sau:
- Xóa mặt nạ dữ liệu động trên cột Tác giảVui lòng giữ liên lạc vì tính năng tạo mặt nạ dữ liệu động nâng cao hơn đang được áp dụng trong bài viết tiếp theo.
Việc cần làm
Bây giờ bạn có thể che các cột của bảng trong cơ sở dữ liệu, vui lòng thử những cách sau để cải thiện kỹ năng của bạn hơn nữa:
1. Vui lòng cố gắng che cột Danh mục trong cơ sở dữ liệu mẫu.
2. Vui lòng cố gắng tạo bảng Tác giả với các cột Tác giả, Tên và Email, sau đó chuyển Tác giả làm khóa ngoại trong bảng Bài viết, sau đó áp dụng tính năng che dữ liệu động trên các cột Tên và Email của bảng Tác giả bằng cách tạo người dùng thử nghiệm
3. Vui lòng cố gắng tạo và bỏ tính năng tạo mặt nạ dữ liệu động để đảm bảo rằng bạn có thể thêm và xóa mặt nạ dữ liệu động thành công trên bảng SQL