BAN CƠ YẾU CHÍNH PHỦ
HỌC VIỆN KỸ THUẬT MẬT MÃ
TÌM HIỂU VỀ CƠ CHẾ AN TOÀN MỨC HÀNG
(ROW-LEVEL SECURITY)
VÀ TẤN CÔNG KÊNH KỀ VƯỢT QUA CƠ CHẾ NÀY
TRONG SQL SERVER
Subjects
: An toàn cơ sở dữ liệu
Lecturers : Trần Thị Lượng
Student
: Nguyễn Thị Kim Huế
Main content
1
Overview of Row-level security
2
RLS implementation
3
Side-Channel Attacks
1. Overview of
Row-Level Security
in SQL SERVER
Trần Cơng Giang (lớp trưởng lớp clc)
Chỉ nhìn thấy danh sách thơng tin cá nhân
các bạn có idsv=‘clc%’
Trần Huyền Diệp
(lớp trưởng lớp at)
Chỉ nhình thấy danh
sách thơng tin cá nhân
các bạn có idsv=‘at%’
Row-Level
Security
(RLS)
⇒
Đây là một tính năng cho phép kiểm sốt chi tiết tốt đối với quyền truy cập vào các hàng trong bảng.
⇒
RLS cho phép dễ dàng kiểm soát người dùng nào có thể truy cập dữ liệu nào
⇒
Có độ trong suốt hoàn toàn cho ứng dụng.
⇒
Hạn chế dữ liệu truy cập thơng qua các chính sách bảo mật (security policy)
Ví dụ áp dụng Row-Level Security:
Một bệnh viện có thể tạo ra một chính sách
bảo mật cho phép các y tá chỉ xem các hàng
dữ liệu cho bệnh nhân của họ.
Ngân hàng có thể tạo chính
sách để hạn chế quyền truy
cập vào các hàng dữ liệu tài chính dựa trên bộ
phận kinh doanh hoặc vai trị của nhân viên trong
cơng ty.
3 khái niệm cốt lõi trong Row-Level Security:
1. Predicate function : Hàm có giá trị bảng nội tuyến thực hiện logic điều khiển truy cập (ví dụ: trả về một hàng hay
khơng tùy thuộc vào tên, vai trị hoặc các thuộc tính khác của người dùng gọi).
2. Security predicate: Liên kết một predicate function vào một bảng
(ví dụ: áp dụng một hàm kiểm tra vai trò của nhân viên
cho bảng Danh sách lương )
•
•
Filter predicates: Lọc các hoạt động đọc (SELECT, UPDATE và DELETE)
Block predicates: Chặn các hoạt động ghi (AFTER INSERT, AFTER UPDATE, BEFORE UPDATE, BEFORE DELETE) vị phạm
predicates.
3. Security policy: Một tập hợp các Security predicates được áp dụng trong một đối tượng gọi là chính sách bảo mật
Filter predicates
-
Được áp dụng trong khi đọc dữ liệu từ bảng cơ sở.
-
Ứng dụng không biết về bất kỳ hàng nào được lọc cho các hoạt động SELECT, UPDATE và
DELETE
-
Ứng dụng có thể INSERT các hàng, ngay cả khi chúng sẽ được lọc trong bất kỳ hoạt động nào
khác
Block predicates
Ảnh hưởng đến tất cả các hoạt động ghi.
-
AFTER INSERT and AFTER UPDATE predicates :
-
Có thể ngăn người dùng cập nhật các hàng thành các giá trị vi phạm predicate.
-
BEFORE UPDATE predicates: Có thể ngăn người dùng cập nhật
các hàng hiện đang vi phạm predicate
-
BEFORE DELETE predicates: Có thể chặn hoạt động delete.
Cách tạo security policy
Cú pháp :
SQL Server Row Level Security Limitations:
- SCHEMABINDING
Predicate function phải được tạo ra với SCHEMABINDING.
Nếu bạn tạo một hàm khơng có cài đặt này và sau đó thử liên kết nó
với chính sách bảo mật, sẽ gặp lỗi sau:
SQL Server Row Level Security Limitations:
- Performance Impact
Khơng có chính sách bảo mật
Áp dụng lọc cấp hàng:
SQL Server Row Level Security Limitations:
- Data Leakage
Chính sách bảo mật và thông đồng : Người chịu trách nhiệm quản lý chính sách bảo mật cũng có quyền truy cập để sửa đổi
các chức năng được sử
dụng bởi các chính sách đó, thì họ có thể dễ dàng thao tác logic để mở
rộng phạm vi truy cập của họ
-
A middle-tier application
Side-channel attacks
Inserting invalid rows
RLS is incompatible with FileStream.
RLS is incompatible with Polybase.
2.RLS implementation
Có 3 bước cơ bản để triển khai RLS:
Bước 1. Tạo người dùng và cấp quyền truy cập
Bước 2. Tạo một hàm có giá trị bảng nội tuyến chứa Filter Predicate /Block
Predicate
Bước 3. Tạo Security Policy
Create User:
1. Giáo viên chủ nhiệm(user_gvcn)
2. Lớp trưởng lớp CLC(user_loptruongclc)
3. Lớp trưởng lớp CT(user_loptruongct)
Create Table:
Insert data
Kiểm tra giá trị trả về:
Grant to user:
Tạo hàm có giá trị bảng nội tuyến chứa Filter Predicate
Hàm này trả về giá trị 1 khi:
-
Một hàng trong cột @idquanly giống như người dùng thực hiện truy vấn
(@idquanly = USER_NAME ())
-
Hoặc nếu người dùng thực hiện truy vấn là người có quyền cao
(USER_NAME () = ‘user_gvcn’)
Tạo Security Policy
we can see that a FILTER predicate is not blocking the user from
INSERTING a record which after insert is filtered by it for that user for
any operation.