Điều khiển truy cập (P2)
I. DAC (Discretionary Access Control) 1. Ưu và khuyết điểm: 2. System R: 3. Một số quyền quan trọng: 4. DAC trong Oracle: 5. Các kiểu thu hồi quyền: a. Thu hồi quyền đệ quy (recursive revocation): H1. Thu hồi quyền đệ quy. => khi người dùng A thu hồi quyền truy xuất trên ...
I. DAC (Discretionary Access Control)
1. Ưu và khuyết điểm:
2. System R:
3. Một số quyền quan trọng:
4. DAC trong Oracle:
5. Các kiểu thu hồi quyền:
a. Thu hồi quyền đệ quy (recursive revocation):H1. Thu hồi quyền đệ quy.
=> khi người dùng A thu hồi quyền truy xuất trên bảng của một người B thì tất cả các quyền mà B đã gán cho người khác đều bị thu hồi.
- Sẽ phá vỡ quyền truy xuất mà đối tượng bị thu hồi quyền đã cấp.
- Thực tế khi 1 user A thay đổi công việc hay vị trí thì chỉ muốn lấy lại quyền truy xuất của A mà không muốn lấy lại các quyền truy xuất mà A đã cấp.
- Thu hồi quyền đệ quy trong System R dựa vào nhãn thời gian mỗi lần cấp quyền truy xuất cho người dùng.
- Một biến thể của cách tiếp cận này là không dựa vào nhãn thời gian, mục đích là để tránh thu hồi quyền dây chuyền.
H2. Biến thể của thu hồi quyền đệ quy.
=> nếu C bị B thu hồi quyền và C lại có quyền tương đương do người khác cấp (mặc dù sau đó) thì quyền mà C cấp cho người khác vẫn được giữ.
b. Thu hồi quyền không dây chuyền (Noncascading revoke)- Khi A thu hồi quyền truy xuất trên B thì tất cả quyền truy xuất mà B đã cấp cho chủ thể khác được thay bằng A đã cấp cho những chủ thể này.
- Bởi vì B được cấp quyền truy xuất trên đối tượng từ nhiều chủ thể (khác A), nên không phải tất cả các quyền mà B cấp đều thay bằng A cấp. Và A được xem là người cấp thay cho B khi B sử dụng quyền A đã cấp cho mình cấp cho những chủ thể khác.
- A sẽ là người cấp các quyền mà B đã cấp sau khi nhận quyền đó từ A có chỉ định WITH GRANT OPTION. Với những quyền B đã được cấp bởi C ≠ A, đến lượt B cấp cho người khác thì B vẫn là người cấp các quyền này.
- Quyền mà H cấp cho L, sau khi thu hồi quyền, không được thay I như là người cấp vì quyền này được cấp trước khi I cấp quyền cho H.
-
Trong các RDBMS, view là một cơ chế thường được dùng để hỗ trợ việc điều khiển truy cập dựa trên nội dung.
-
Dùng các vị từ (predicate) để giới hạn nội dung dữ liệu cần cấp quyền.
-
Chỉ những bộ của quan hệ thỏa mãn vị từ được xem là các đối tượng để cấp quyền.
-
Việc điều khiển truy cập dựa trên nội dung trong các RDBMS được thực hiện như sau:
- Định nghĩa 1 view dùng các vị từ để chọn ra các dòng dữ liệu muốn cấp cho chủ thể S.
- Cấp cho S các quyền trên view.
-
Ví dụ: giả sử ta muốn cấp quyền cho user B truy cập chỉ những nhân viên có lương ít hơn 20000:
– CREATE VIEW V_NHANVIEN AS SELECT * FROM NHANVIEN WHERE LUONG < 20000; - GRANT Select ON V_NHANVIEN TO B;a. Phân quyền trên view
Để xác định quyền mà view definer có trên view, hệ thống phải:
- Tìm giao tập quyền mà view definer có với tập quyền ứng với các thao tác có thể thực hiện trên view.
** Lưu ý:
- Quyền alter và index không thể áp dụng cho view.
A: CREATE VIEW V1 (MANV, TONGTIEN) AS SELECT MANV, LUONG+THUONG FROM NHANVIEN WHERE CONGVIEC = ‘Lap trinh vien’
=> Thao tác update không được định nghĩa trên trường TONGTIEN của view nên A sẽ không thể có quyền update trên field này.
- Ví dụ 1 phân quyền trên view: Xét quan hệ NHANVIEN và giả sử A là ngườitạo nên quan hệ NHANVIEN
A: GRANT Select, Insert, Update ON NHANVIEN to D; D: CREATE VIEW V1 AS SELECT MANV, LUONG FROM NHANVIEN; D: CREATE VIEW V2 (MANV, LUONG_NAM) AS SELECT MANV, LUONG*12 FROM NHANVIEN;
=> D có thể thực hiện tất cả các quyền trên V1 như là các quyền mà D có trên quan hệ NHANVIEN, đó là Select, Insert, Update.
Tuy nhiên, D chỉ có thể thực hiện trên V2 quyền Select và Update trên cột MANV.
- Ví dụ 2 phân quyền trên view:
A: GRANT Select ON NHANVIEN TO D WITH GRANT OPTION; A: GRANT Update, Insert ON NHANVIEN TO D; D: CREATE VIEW V4 AS SELECT MANV, LUONG FROM NHANVIEN;
=> Quyền của D trên V4 sẽ là:
- Select with Grant Option;
- Update, Insert without Grant Option;
7. DAC – Quyền khẳng định & Phủ định:
- Quyền khẳng định: danh sách quyền truy xuất được sử dụng.
- Quyền phủ định: danh sách quyền truy xuất không được sử dụng.
- Tuy nhiên sử dụng Quyền khẳng định và Quyền phủ định thì gây nên xung đột. Thường người ta giải quyết xung đột bằng cách ưu tiên quyền phủ định.
a. Câu lệnh DENY
DENY {ALL [PRIVILEGES] | permission[,…n]} { [(column[,…n])] ON { table | view} | ON {table | view} [( column[,…n])] | {procedure | extended_procedure} } TO security_account
DENY SELECT, INSERT, UPDATE ON NHANVIEN TO A, B
=> User A, B không được quyền Select, Insert, Update trên bảng NHANVIEN.