Bài thực hành Bảo mật hệ thống thông tin - Bài thực hành số 3: Quyền và role

Bảo Mật Hệ Thống Thông Tin  
Lab 3  
1
Bài thực hành số 3  
QUYỀN và ROLE  
Tóm tắt nội dung:  
Quyền (privilege)  
Role  
Data Dictionary  
I. Quyền và Role  
A. Lý thuyết  
1. Quyền (privilege)  
Một quyền là 1 sự cho phép thực hiện 1 câu lệnh SQL nào đó hoặc được phép truy  
xuất đến một đối tượng nào đó (vd: quyền tạo bảng CREATE TABLE, quyền  
connect đến cơ sở dữ liệu CREATE SESSION, quyền SELECT trên một bảng cụ  
thể nào đó,…).  
Chỉ cấp cho user chính xác những quyền mà user cần đến. Việc cấp dư thừa những  
quyền không cần thiết thể gây nguy hại cho việc bảo mật hệ thống.  
Có 2 loại quyền:  
Quyền hệ thống (System Privilege):  
o quyền thực hiện một tác vụ CSDL cụ thể hoặc quyền thực hiện một loại  
hành động trên tất cả những đối tượng schema của hệ thống. Vd: quyền  
ALTER SYSTEM, quyền CREATE TABLE, quyền DELETE ANY  
TABLE (xóa các hàng của bất kỳ bảng nào trong CSDL),…  
o User có thể cấp 1 quyền hệ thống nếu một trong các điều kiện sau:  
-
User đã được cấp quyền hệ thống đó với tùy chọn WITH ADMIN  
OPTION.  
-
User có quyền GRANT ANY PRIVILEGE.  
Quyền đối tượng (Schema Object Privilege hoặc Object Privilege):  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
Lab 3  
2
o quyền thực hiện một hành động cụ thể trên một đối tượng schema cụ thế.  
Vd: quyền xóa các hàng dữ liệu khỏi bảng Department.  
o nhiều quyền đối tượng khác nhau dành cho các loại đối tượng schema  
khác nhau.  
o Dùng để quản việc truy xuất đến các đối tượng schema cụ thể nào đó.  
o User có thể cấp 1 quyền đối tượng nếu một trong các điều kiện sau:  
-
User có tất cả mọi quyền đối tượng trên tất cả các đối tượng thuộc  
schema của mình. Vì vậy user có quyền cấp bất kỳ quyền đối tượng trên  
bất kỳ đối tượng nào thuộc sở hữu của mình cho bất cứ user nào khác.  
User có quyền GRANT ANY OBJECT PRIVILEGE.  
User được cấp quyền đối tượng đó với tùy chọn WITH GRANT  
OPTION.  
-
-
2. Role  
Role là một tập hợp bao gồm các quyền và các role khác.  
Role được gán cho các user hoặc các role khác.  
Role giúp cho việc quản trị người dùng dễ dàng và tiết kiệm công sức hơn.  
một số role có sẵn do hệ thống định nghĩa(vd: DBA, RESOURCE,  
CONNECT,…) nhưng đa phần các role là do người quản trị CSDL tạo ra.  
Role không phải một đối tượng schema (schema object) nên không được lưu trữ  
trong schema của user tạo ra nó. Do vậy, user tạo ra một role có thể bị xóa mà  
không ảnh hưởng đến role đó.  
User có thể cấp 1 role nếu một trong các điều kiện sau:  
User đã tạo ra role đó.  
User đã được cấp role đó với tùy chọn WITH ADMIN OPTION.  
User có quyền GRANT ANY ROLE.  
B. Thực hành  
1. Tạo ROLE  
Tạo một role mới với câu lệnh:  
CREATE ROLE myrole;  
Role created.  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
Lab 3  
3
Lưu ý, để tạo được role, phải quyền hệ thống CREATE ROLE.  
2. Lệnh GRANT  
a. Gán quyền hệ thống/role:  
Ta dùng cú pháp dưới đây để gán các quyền hệ thống/role cho các user/role khác:  
dụ:  
GRANT DELETE ANY TABLE TO salapati;  
Grant succeeded.  
GRANT CREATE USER TO myrole;  
Grant succeeded.  
GRANT myrole TO salapati;  
Grant succeeded.  
GRANT myrole TO lavender;  
Grant succeeded.  
Xem lệnh sau:  
GRANT CREATE SESSION TO lavender IDENTIFIED BY purple.  
Grant succeeded.  
Với câu lệnh vừa rồi, nếu user lavender đã tồn tại, password của lavendersẽ  
được thay đổi thành purple. Ngược lại, hệ thống sẽ tạo ra 1 người dùng mới có  
username là lavender và password là purple. Sinh viên tự tìm hiểu xem để câu  
lệnh trên có thể thực hiện được, user cần phải quyền gì?  
Dùng từ khóa PUBLIC nếu muốn cấp quyền/role cho mọi user:  
GRANT CREATE SESSION TO PUBLIC;  
Grant succeeded.  
Dùng từ khóa ALL PRIVILEGES nếu muốn cấp tất cả các quyền hệ thống (trừ  
quyền SELECT ANY DICTIONARY):  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
GRANT ALL PRIVILEGES TO salapati;  
Lab 3  
4
Grant succeeded.  
Để thực hiện câu lệnh trên thành công thì user cần phải quyền gì?  
Tùy chọn WITH ADMIN OPTION sẽ cho phép người được cấp role/quyền:  
Cấp lại role/quyền đó cho một user hoặc role khác (có hoặc không có tùy chọn  
WITH ADMIN OPTION).  
Thu hồi lại role/quyền đó từ một user hoặc role bất kỳ.  
Thay đổi role đó bằng lệnh ALTER ROLE.  
Xóa role đó.  
dụ:  
GRANT CREATE SESSION TO salapati WITH ADMIN OPTION;  
Grant succeeded.  
b. Gán quyền đối tượng:  
dụ:  
GRANT DELETE ON mytable TO salapati;  
GRANT SELECT ON mytable TO public;  
GRANT SELECT,INSERT,UPDATE,DELETE ON mytable TO lavender;  
GRANT SELECT ON salapati.xyz TO myrole;  
Dùng từ khóa ALL [PRIVILEGES] khi muốn cấp tất cả các quyền đối tượng mà  
user có trên 1 đối tượng nào đó (với điều kiện user phải quyền cấp những quyền  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
Lab 3  
5
đó):  
GRANT ALL ON salapati.xyz TO paris;  
GRANT ALL PRIVILEGES ON salapati.xyz TO paris;  
Nếu chỉ muốn cấp quyền trên vài cột nào đó của table hoặc view, ta chỉ ra cụ thể tên  
các cột đó:  
GRANT UPDATE (name) ON salapati.xyz TO myrole;  
Grant succeeded.  
Lưu ý là ta chỉ thể chỉ ra các cột cụ thể khi cấp quyền INSERT và UPDATE.  
Dùng tùy chọn WITH GRANT OPTION khi muốn user được cấp quyền thể cấp  
quyền đó cho user/role khác. Tuy nhiên chỉ được dùng tùy chọn này khi cấp quyền  
cho một user hay PUBLIC:  
GRANT ALL ON salapati.xyz TO paris WITH GRANT OPTION;  
c. Xem thông tin các quyền hệ thống đã được gán cho user hiện tại:  
SELECT * FROM user_sys_privs;  
Xem thông tin các quyền đối tượng đã được gán cho user hiện tại:  
SELECT * FROM user_tab_privs_recd;  
d. Sinh viên tham khảo danh sách các quyền hệ thống, quyền đối tượng trong phần mô  
tả lệnh GRANT của cuốn SQL Reference thuộc Oracle Document Library.  
3. Lệnh REVOKE  
a. Thu hồi quyền hệ thống/role:  
Để thu hồi quyền hệ thống, user phải được cấp quyền đó với WITH ADMIN  
OPTION hoặc quyền GRANT ANY PRIVILEGES.  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
Lab 3  
6
Để thu hồi role, user phải được cấp role đó với WITH ADMIN OPTION hoặc có  
quyền GRANT ANY ROLE.  
Không thể dùng lệnh REVOKE để thu hồi những role/quyền được cấp thông qua  
những role khác.  
REVOKE DELETE ANY TABLE FROM salapati;  
Revoke succeeded.  
REVOKE myrole FROM lavender;  
Revoke succeeded.  
Dùng từ khóa PUBLIC để thu hồi 1 quyền hệ thống/role khỏi tất cả các user. Tuy  
nhiên không thể dùng PUBLIC để thu hồi những quyền được gán trực tiếp hoặc  
thông qua 1 role khác.  
REVOKE CREATE SESSION FROM PUBLIC;  
Các từ khóa khác có ý nghĩa như trong lệnh GRANT.  
b. Thu hồi quyền đối tượng:  
Để thu hồi 1 quyền đối tượng từ 1 user/role, bạn phải người đã cấp quyền đó cho  
user/role đó hoặc bạn quyền GRANT ANY OBJECT PRIVILEGE. Tuy nhiên,  
đối với trường hợp bạn quyền GRANT ANY OBJECT PRIVILEGE, bạn chỉ có  
thể thu hồi những quyền đối tượng được cấp cho user/role, nếu quyền đối tượng đó  
đã được cấp cho user/role bởi chủ nhân của chính đối tượng hoặc bởi những user có  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
Lab 3  
7
quyền GRANT ANY OBJECT PRIVILEGE.  
Không thể dùng lệnh REVOKE để thu hồi quyền/role đã được cấp thông qua các  
role khác.  
REVOKE SELECT ON mytable FROM salapati;  
Dùng từ khóa ALL [PRIVILEGES] để thu hồi tất cả những quyền đối tượng bạn  
đã cấp cho user/role đó.  
REVOKE ALL ON salapati.xyz FROM paris;  
Dùng từ khóa PUBLIC để thu hồi 1 quyền đối tượng khỏi những user đã được cấp  
quyền đó thông qua việc gán cho PUBLIC. Không thể dùng PUBLIC để thu hồi  
những quyền được gán trực tiếp hoặc thông qua 1 role khác.  
REVOKE INSERT ON salapati.xyz FROM paris;  
Lưu ý:  
Nếu user bị thu hồi quyền đối tượng quyền này đã được cấp cho user/role  
khác, hệ thống cũng thu hồi quyền đối tượng đó của những user/role kia.  
Nếu schema của user bị thu hồi quyền đối tượng chứa các procedure,  
function, package có sử dụng lệnh SQL liên quan đến quyền bị thu hồi thì  
những procedure, function, package đó không còn có thể thực thi được.  
4. Enable và disable một ROLE  
a. Một user có thể nhiều role. Tuy nhiên không phải session nào cũng cần sử dụng  
tất cả các role đó. Oracle cho phép bản thân user enable/disable các role mà mình  
được cấp để quản sự cần thiết của các role trong session hiện tại.  
Mặc định khi bắt đầu 1 session mới, user sẽ được hệ thống enable tất cả các role  
mặc định (default role). Sau đó user có thể dùng lệnh SET ROLE để enable/disable  
các role theo ý mình theo cú pháp sau:  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
Lab 3  
8
dụ:  
SET ROLE myrole, lavender;  
Câu lệnh trên sẽ enable 2 role được chỉ định và disable tất cả các role còn lại của  
user.  
Để enable tất cả các role dùng lệnh:  
SET ROLE ALL;  
Để disable tất cả các role dùng lệnh:  
SET ROLE NONE;  
Để enable tất cả các role ngoại trừ role lavender ta dùng lệnh:  
SET ROLE ALL EXCEPT lavender;  
b. Để bảo vệ một role với mục đích không cho phép các user tùy ý enable/disable một  
role, người tạo user có thể thiết lập password cho role đó ngay khi tạo role:  
CREATE ROLE newrole IDENTIFIED BY protected;  
Ta cũng thể thay đổi việc thiết lập password cho role:  
ALTER ROLE newrole IDENTIFIED BY changed;  
ALTER ROLE newrole NOT IDENTIFIED;  
c. Để biết hiện tại role nào đang được enable ta truy xuất view SESSION_ROLES:  
SELECT * FROM SESSION_ROLES;  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
Lab 3  
9
d. Để quy định những role nào là role mặc định ta dùng lệnh ALTER USER:  
ALTER USER salapati DEFAULT ROLE myrole, lavender;  
ALTER USER salapati DEFAULT ROLE ALL;  
ALTER USER salapati DEFAULT ROLE ALL EXCEPT myrole;  
ALTER USER salapati DEFAULT ROLE NONE;  
5. Xóa ROLE  
DROP ROLE myrole;  
II. Tự điển dữ liệu (Data Dictionary)  
A. Lý thuyết  
1. Tổng quan  
Mọi CSDL Oracle đều một tự điển dữ liệu. Tự điển dữ liệu được tạo ra khi  
CSDL được tạo.  
Tự điển dữ liệu trong Oracle là một tập các bảng và view được sử dụng như một  
tham khảo dạng chỉ đọc (read-only) về bản thân CSDL đó.  
Từ điển dữ liệu nằm trên tablespace SYSTEM, thuộc schema của user SYS, bao  
gồm 2 loại:  
Các bảng cơ bản (Base table):  
Là các bảng lưu trữ thông tin của tự điển dữ liệu. Dữ liệu được lưu trong các  
bảng này dưới dạng mã hóa.  
Các view dành cho người dùng truy xuất (User-accessible View):  
Tổng hợp hiển thị thông tin được lưu trong các bảng cơ bản ở dạng người  
bình thường thể đọc hiểu. Tùy vào quyền của mỗi user mà user đó thể truy  
xuất view nào và truy xuất những dữ liệu nào của view đó.  
Một tự điển dữ liệu sẽ lưu trữ tất cả các thông tin về cấu trúc luận lý và cấu trúc vật  
của CSDL:  
Định nghĩa của tất cả các đối tượng schema trong CSDL.  
Các quy định, giới hạn về sử dụng tài nguyên của các user,v.v  
Danh sách các user. Các quyền, role được cấp cho các user.  
Các ràng buộc toàn vẹn của dữ liệu  
Thông tin audit  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
Lab 3 10  
Các thông tin CSDL tổng quát khác.  
Oracle tự động cập nhật từ điển dữ liệu để phản ánh chính xác trạng thái thực tế của  
CSDL.  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
Lab 3 11  
2. Các tiếp đầu ngữ trong tên view  
Trong nhiều trường hợp, một tập gồm 3 view chứa những thông tin tương tự như và  
tên của chúng chỉ khác nhau các tiếp đầu ngữ: user, all, dba.  
USER: hiển thị những thuộc schema của user đó.  
ALL: hiển thị những gì mà user đó thể truy xuất.  
DBA: hiển thị tất cả thông tin thuộc schema của mọi user (view dành cho những  
người quản trị).  
Các column trong các view thuộc 1 bộ ba view hầu như giống nhau, ngoại trừ  
một số ngoại lệ.  
3. Các view thường sử dụng  
DBA_USERS: cung cấp thông tin của các user trong CSDL.  
DBA_TS_QUOTAS: cung cấp thông tin quota của các user.  
DBA_PROFILES: cung cấp thông tin về các profile.  
DBA_SYS_PRIVS: hiển thị những user được cấp các quyền hệ thống.  
DBA_ROLES: hiển thị tất cả các role có trong CSDL.  
DBA_COL_PRIVS: hiển thị thông tin về việc gán quyền hệ thống mức cột.  
DBA_ROLE_PRIVS: hiển thị tất cả các user và role của họ.  
DBA_TAB_PRIVS: hiển thị các user và quyền trên các bảng của họ.  
ROLE_ROLE_PRIVS: hiển thị thông tin về các role được cấp cho các role.  
ROLE_SYS_PRIVS: hiển thị các quyền hệ thống được cấp cho các role.  
ROLE_TAB_PRIVS: hiển thị các quyền trên các bảng được cấp cho các role.  
SESSION_PRIVS: hiển thị các quyền hiện tại được enable cho user.  
SESSION_ROLES: hiển thị các role hiện tại đang được enable cho user.  
B. Thực hành  
Sinh viên dùng cuốn Reference trên Oracle Documentation Library để tra cứu danh  
sách các view của tự điển dữ liệu.  
Truy xuất các view trên để xem các dữ liệu được hiển thị.  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
Bảo Mật Hệ Thống Thông Tin  
Lab 3 12  
III. Bài tập  
1. Tạo các users John, Joe, Fred, Lynn, Amy, and Beth:  
a. Password lần lượt là tên username viết hoa.  
b. Đảm bảo các user này có thể tạo bất kỳ bảng nào trong tablespace với quota 10M.  
2. Cho bảng Attendance  
(
ID INT PRIMARY KEY,  
Name NVARCHAR2  
)
Làm các bước sau:  
a. Tạo các role sau: DataEntry, Supervisor, và Management.  
b. Gán John, Joe, và Lynn vào role DataEntry, gán Fred vào role Supervisor, và gán Amy  
và Beth vào role Management.  
c. Cho role DataEntry các quyền SELECT, INSERT, và UPDATE trên bảng Attendance.  
d. Cho role Supervisor các quyền SELECT và DELETE trên bảng Attendance.  
e. Cho role Management quyền SELECT trên bảng Attendance.  
f. Lần lượt kiểm tra kết quả phân quyền đã cấp cho các role  
3. Tạo một user mới tên NameManager với password là pc123. Gán quyền update cho user  
này trên cột Name của bảng Attendance.  
4. Thực hiện các yêu cầu sau đối với các view được liệt ở phần II (Tự điển dữ liệu):  
a. Tìm quyền mà trong tên của quyền chữ CONTEXT  
b. Liệt tất cả user có quyền SELECT ANY TABLE  
5. Thực hiện các bước sau:  
a. Gán password cho role DataEntry bài 1 là “mgt”  
b. Cho phép user John quyền cấp quyền cho các user khác  
c. Gán tất cả các quyền mà John có cho Beth. Beth có quyền INSERT và UPDATE trên  
bảng Attendance không?  
Chương Trình Đào Tạo Từ Xa  
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM  
docx 12 trang yennguyen 08/04/2022 6620
Bạn đang xem tài liệu "Bài thực hành Bảo mật hệ thống thông tin - Bài thực hành số 3: Quyền và role", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • docxbai_thuc_hanh_bao_mat_he_thong_thong_tin_bai_thuc_hanh_so_3.docx