Tạo user với with admin option => người được gán quyền có thể gán quyền đó cho người khác
Thu hồi quyền revoke chỉ được thực hiện khi 1 user được gán quyền grant (nghĩa là chỉ thực hiện thu hồi quyền sau khi đã gán, còn với user ko được gán quyền thì ko thể thu hồi được vì sinh ra đã có quyền đó rồi, ví dụ: user sys, system => ko thể thu hồi quyền được vì sinh ra đã có các quyền rồi ko ai gán cho nó)
Thu hồi quyền hoặc vai trò với WITH ADMIN OPTION
Khi thu hồi một quyền hoặc vai trò đã được cấp với WITH ADMIN OPTION, bạn cần lưu ý rằng tất cả các quyền hoặc vai trò được cấp bởi người dùng đó cũng sẽ bị thu hồi.
Ví dụ:
Giả sử bạn đã cấp quyền CREATE TABLE cho john với WITH ADMIN OPTION, và john đã cấp quyền này cho mary. Khi bạn thu hồi quyền từ john, quyền từ mary cũng sẽ bị thu hồi:
Kết quả là mary sẽ mất quyền CREATE TABLE mà cô ấy đã nhận từ john.
Có 2 loại quyền:
Hệ thống: với các quyền như create, alter….
Đối tượng: thực hiện trên 1 đối tượng cụ thể nào đó được chỉ định trong khi gán quyền như trên table, view, obj sequence, procedure
Grant select on emi.table to jeee with grant option;
Tương tự như vơi quyền hệ thống admin option thì trong obj cũng có with grant option, user được gán với quyền này có thể gán lại quyền cho user khác.
Đối tượng được gán phải thuộc sở hữu của user đang gán quyền, mang đi gán cho user khác
User gán phải có quyền: grant any object privilege (quyền trên mọi đối tượng)
Thu hồi quyền object: user trực tiếp gán quyền đó thì có quyền thu hồi quyền, hoặc user phải có quyền grant any object mới thu hồi được quyền.
Thu hồi quyền đối tượng sẽ thu hồi quyền đồng thời trên tất cả user được gán theo thác nước:
View chứa các thông tin về quyền:
dba_sys_privs: thông tin quyền hệ thống gán cho user và role
user_sys_privs: thông tin quyền hệ thống gán cho user hiện tại
dba_tab_privs: thông tin quyền đối tượng
Một số Role được định nghĩa sẵn:
Role có thể gán cho user hoặc role, và có thể thu hồi bình thường giống như gán và thu hồi quyền.
Role có thể gán cho bất kỳ user và role nào, nhưng không thể gán cho chính nó hoặc gán vòng quanh.
Role có thể bao gồm cả quyền hệ thống và quyền đối tượng.
Tên của role là duy nhất: không được trùng với tên user, role, đối tượng khác đã tồn tại trong CSDL.
Role được lưu trữ trong data dictionary, nó không thuộc sở hữu của user nào, và không được lưu trữ trong bất kỳ schema nào.
Một user có thể enable và disable role đã được gán cho nó.
Khi một role có mật khẩu thì cần phải nhập mật khẩu khi enable role.
Gán quyền cho role thì không có chức năng grant option.
Xoá role:
Drop role role_name;
Khi drop role thì tất cả user có role đó đều bị huỷ (thu hồi)
Huỷ bỏ role đó khỏi csdl
Phải có quyền admin option hoặc có quyền drop any role mới có thể drop role
View chứa thông tin về role:
DBA_ROLES: Tất cả các chức danh có trong CSDL
DBA_ROLE_PRIVS: Các chức danh gán cho user và chức danh
DBA_SYS_PRIVS: Các quyền hệ thống gán cho user và chức danh
ROLE_SYS_PRIVS: Các quyền hệ thống gán cho chức danh của user hiện tại
ROLE_TAB_PRIVS: Các quyền đối tượng gán cho chức danh
SESSION_ROLES: Các chức danh user hiện enable