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 có 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):
oLà 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),…
oUser có th c p 1 quy n h th ng n u có 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.
Chương Trình Đào Tạo Từ Xa KH & KT Máy Tính – Đại học Bách Khoa TP.HCM
Quy n đi t ng (Schema Object Privilege ho c Object ượ
Privilege):
oLà 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.ế
oCó nhi u quy n đi t ng khác nhau dành cho các lo i đi t ng schema ượ ượ
khác nhau.
oDùng đ qu n lý vi c truy xu t đn các đi t ng schema c th nào đó. ế ượ
oUser có th c p 1 quy n đi t ng n u có 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. ườ ế ơ
Có 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 là 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 có 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.
Chương Trình Đào Tạo Từ Xa KH & KT Máy Tính – Đại học Bách Khoa TP.HCM
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.
L u ý, đ t o đc role, ph i có 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:
Ví 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 lavender
s đ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 có quy n gì? ượ
Chương Trình Đào Tạo Từ Xa KH & KT Máy Tính – Đại học Bách Khoa TP.HCM
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):
GRANT ALL PRIVILEGES TO salapati;
Grant succeeded.
Đ th c hi n câu l nh trên thành công thì user c n ph i có 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 đó.
Ví d :
GRANT CREATE SESSION TO salapati WITH ADMIN OPTION;
Grant succeeded.
b. Gán quy n đi t ng: ượ
Ví d :
Chương Trình Đào Tạo Từ Xa KH & KT Máy Tính – Đại học Bách Khoa TP.HCM
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 có quy n c p nh ng ượ
quy n đó):
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 có 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 có 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:
Chương Trình Đào Tạo Từ Xa KH & KT Máy Tính – Đại học Bách Khoa TP.HCM