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[.]
Trang 1Bài th c hành s 3 ự ố
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):ề ệ ố
o Là 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 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
Trang 2 Quy n đ i tề ố ượng (Schema Object Privilege ho c Objectặ Privilege):
o Là 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 Có 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 lý 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 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.ề
Trang 3B. 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ì?ầ ả ề
Trang 4 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 :ụ
Trang 5GRANT 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ệ
Thu h i quy n h th ng/role:ồ ề ệ ố
Trang 6 Đ thu h i quy n h th ng, user ph i để ồ ề ệ ố ả ược c p quy n đó v i WITH ADMINấ ề ớ OPTION ho c có quy n GRANT ANY PRIVILEGES.ặ ề
Đ 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:
Trang 7 Đ thu h i 1 quy n đ i tể ồ ề ố ượng t 1 user/role, b n ph i là ngừ ạ ả ười đã c p quy n đóấ ề cho user/role đó ho c b n có quy n GRANTặ ạ ề ANY OBJECT PRIVILEGE. Tuy nhiên, đ i v i trố ớ ường h p b n có 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ó 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 mà
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 mà 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.ủ ữ