Thứ Hai, 22 tháng 6, 2020

HỌC ORACLE DB TỪ A-Z - BÀI 20: QUẢN LÝ CHỨC DANH (ROLE)

20.1.CHỨC DANH (ROLE)  TRONG DATABASE

Oracle cung cấp công cụ cho phép quản lý một cách dễ dàng các quyền thông qua việc sử dụng chức danh (Roles). Chức danh là một nhóm các quyền được đặt tên có liên quan đến nhau và được gán cho một user hay một chức danh khác. Chức danh được đưa ra nhằm làm dễ dàng quản lý các quyền trong hệ thống.


                                         
Hình vẽ 1.    Chức danh trong database

20.1.1.  Các tính chất của chức danh

§  Được gán và lấy lại từ user với cùng câu lệnh.
§  Có thể  gán cho bất cứ user nào một chức danh ngoại trừ cho chính nó.
§  Có thể bao gồm cả quyền hệ thống (system privileges) và quyền đối tượng (object privileges) trong chức danh.
§  Có thể enable và disable các chức danh được gán cho các user.
§  Có thể yêu cầu password khi cần enable các chức danh.
§  Tên các chức danh phải là duy nhất trong các user đang tồn tại và tên các chức danh đang tồn tại.
§  Không thuộc về bất cứ user nào và không thuộc về bất cứ schema nào.
§  Có các mô tả đặt trong data dictionary.

20.1.2.  Lợi ích của việc sử dụng chức danh

Giảm công việc gán các quyền
Sử dụng các chức danh đơn giản hoá việc quản lý các chức danh, bằng cách gán một tập các quyền cho người dùng. Có thể gán các quyền  cho một chức danh và sau đó gán chức danh đó cho các user.

Quản lý các quyền một cách linh động
Khi thay đổi các quyền có trong một chức danh thì quyền của tất cả các user đã được gán các chức danh đó sẽ bị thay đổi theo.
Chọn các quyền  đã có sẵn
Một chức danh có thể được enable hay disable tạm thời để cho phép hay cấm các quyền.
Không có hiện tượng lan truyền khi lấy lại các chức danh.
Các quyền đối tượng có thể lấy lại mà không gây ra hiện tượng lan truyền.

20.2.QUẢN LÝ CHỨC DANH

20.2.1.  Tạo và sửa chữa các Chức danh

Sử dụng câu lệnh sau đây thực hiện việc tạo các chức danh
Cú pháp:
CREATE ROLE role_name [NOT IDENTIFIED | IDENTIFIED
{BY password | EXTERNALLY }]
Với:
role_name                               tên của chức danh
NOT IDENTIFIED                chỉ định không cần kiểm tra chức danh khi enable chức danh
BY password                          mật khẩu người dùng cần cung cấp khi enable chức danh
EXTERNALLY                     chỉ định user phải được xác lập bởi dịch vụ bên ngoài (như hệ điều hành hay dịch vụ bên thứ ba) trước khi enable chức danh.
Ví dụ:
CREATE ROLE sales_clerk;

Hoặc:
CREATE ROLE hr_clerk
IDENTIFIED BY bonus;

Hoặc:
CREATE ROLE hr_manager
IDENTIFIED EXTERNALLY;

Chú ý:
Câu lệnh CREATE ROLE IDENTIFIED GLOBALLY chỉ định rằng việc kiểm tra xác lập chức danh thông qua Oracle Security Server.

20.2.2.  Các chức danh được định nghĩa sẵn

Các chức danh được liệt kê dưới đây được định nghĩa tự động trong  Oracle Database. Connect và Resource là chức danh cung cấp để phù hợp với các version trước đây của Oracle database.
Các chức danh EXP_FULL_DATABASE và IMP_FULL_DATABASE dùng cho các công cụ export và import.
Các chức danh có tên là DELETE_CATALOG_ROLE, EXCUTE_CATALOG_ROLE và SELECT_CATALOG_ROLE cho phép thực hiện truy xuất tới các views và các packages trong data dictionary. Các chức danh này có thể gán cho user không có quyền DBA nhưng muốn xem thông tin trong các bảng và view thuộc data dictionary.
Tên chức danh
Diễn giải
CONNECT
Chức danh cung cấp sẵn để tương thích với các phiên bản trước đó
RESOURCE
DBA
Tất cả các quyền  hệ thống, có tuỳ chọn: WITH ADMIN OPTION
EXP_FULL_DATABASE
Quyền export dữ liệu của database
IMP_FULL_DATABASE
Quyền import dữ liệu vào database
DELETE_CATALOG_ROLE
Quyền xoá dữ liệu
EXECUTE_CATALOG_ROLE
Quyền thực hiện một thủ tục
SELECT_CATALOG_ROLE
Quyền lấy dữ liệu

Một số chức danh đặc biệt khác:
Oracle còn có một số chức danh khác để xác lập người quản trị database, trên nhiều hệ điều hành khác nhau, các chức danh này được goi là OSOPER và OSDBA tên của chúng có thể khác biệt trên các hệ điều hành. Các chức danh khác được định nghĩa bởi SQL script được cung cấp cùng với database.


20.2.3.  Sửa chữa các chức danh

Sử dụng cú pháp sau đây đề sửa chữa một chức danh đã tồn tại.
Cú pháp:
ALTER ROLE role_name {NOT IDENTIFIED | IDENTIFIED
{BY password | EXTERNALLY }};
Với:
role_name                   tên của chức danh cần thay đổi.
NOT IDENTIFIED    chỉ định không cần xác nhận khi enable chức danh
IDENTIFIED             chỉ định cần xác nhận khi enable các chức danh
BY password              cung cấp mật khẩu xác nhận khi enable chức danh
EXTERNALLY         chỉ định user cần được xác nhận bởi dịch vụ bên ngoài (cơ chế xác nhận bởi hệ điều hành)
Ví dụ:
ALTER ROLE sales_clerk
IDENTIFIED BY commission;

Hoặc:
ALTER ROLE hr_clerk
IDENTIFIED EXTERNALLY;

Hoặc:
ALTER ROLE hr_manager
NOT IDENTIFIED;

20.2.4.  Gán các chức danh

Sử dụng cú pháp sau đây để gán một chức danh cho một user:
Cú pháp :
GRANT role_name [, role_name ]...
TO {user|role|PUBLIC}
[, {user|role|PUBLIC} ]...
[WITH ADMIN OPTION]
Với :
role_name                    tên của chức danh gán
user                              tên của user được gán chức danh
role                              tên của chức danh được gán
PUBLIC                      chỉ định gán chức danh cho tất cả các user
WITH ADMIN OPTION
cho phép user được gán chức danh có thể gán chức danh cho user khác.
Ví dụ:
GRANT sales_clerk TO scott;

Hoặc:
GRANT hr_clerk,
TO hr_manager;

Hoặc:
GRANT hr_manager TO scott
WITH ADMIN OPTION;

User tạo chức danh được mặc định gán tuỳ chọn WITH ADMIN OPTION.

20.2.5.  Thiết lập chức danh mặc định

Một user có thể có nhiều chức danh được gán. Chức danh mặc định là một tập con các chức danh được tự động enable khi user log on vào database. Giới hạn các chức danh mặc định bằng câu lệnh ALTER USER.
Cú pháp :
ALTER USER user DEFAULT ROLE
{role [,role]... | ALL [EXCEPT role [,role]... ] | NONE}
Với:
user                              tên của user được gán các chức danh
role                              tên của chức danh được thiết lập mặc định
ALL                            đặt tất cả các chức danh được gán cho user là mặc định ngoại trừ các chức danh nằm sau mệnh đề EXCEPT.
EXCEPT                     chỉ định các chức danh đi sau mệnh đề này không thuộc vào các chức danh mặc định.
NONE                         không chức danh nào trong số chức danh được gán cho user là chức danh mặc định.
Ví dụ:
ALTER USER scott
DEFAULT ROLE hr_clerk, sales_clerk;
Hoặc:
ALTER USER scott DEFAULT ROLE ALL;
Hoặc:
ALTER USER scott DEFAULT ROLE ALL
EXCEPT hr_clerk;
Hoặc:
ALTER USER scott DEFAULT ROLE NONE;

Vì các chức danh cần được gán trước khi chúng có thể được thiết lập mặc định nên không thể khởi tạo các chức danh mặc định ngay khi sử dụng câu lệnh CREATE USER.

20.2.6.  Enable và Disable các chức danh

Enable và Disable các chức danh sẽ tạm thời cho phép hoặc không cho phép các quyền kết hợp với các chức danh. Để enable các chức danh trước hết cần gán các chức danh cho user.
Khi một chức danh được enable, user có thể sử dụng các quyền được gán cho chức danh đó và ngược lại trừ khi các quyền đó được gán trực tiếp cho user hay được gán cho chức danh khác nhưng chức danh đó được enable cho user đó.

Chỉ định các chức danh được enable
Câu lệnh SET ROLE và thủ tục DBMS_SESSION.SET_ROLE cho phép enable tất cả các chức danh và disable các chức danh khác .
Cú pháp:
SET ROLE {role [ IDENTIFIED BY PASSWORD ]
[, role [ IDENTIFIED BY PASSWORD ]]...
| ALL [ EXCEPT role [, role ] ...]
| NONE }
Với:    
role                              là tên của chức danh
IDENTIFIED BY password  
chỉ định mật khẩu xác nhận khi enable chức danh    
ALL                            enable tất cả các chức danh được gán cho user hiện thời ngoại trừ các chức danh trong danh sách sau mệnh đề EXCEPT
EXCEPT                     danh sách các chức danh không được enable.
NONE                         disable tất cả các chức danh cho session hiện thời.
Ví dụ:
SET ROLE sales_clerk
IDENTIFIED BY commission;

Hoặc:
SET ROLE hr_clerk;

Hoặc:
SET ROLE ALL EXCEPT
sales_clerk;
Hoặc:
SET ROLE NONE;

20.2.7.  Thu hồi các chức danh từ các user

Sử dụng cú pháp sau đây để thu hồi các chức danh từ các user .
Cú pháp :
REVOKE role_name [, role_name ]...
FROM {user|role|PUBLIC}
[, {user|role|PUBLIC} ]...
Với:
role_name                    tên của các chức danh cần thu hồi.
user                              tên user bị thu hồi chức danh.
role                              tên của các chức danh bị thu hồi chức danh.
PUBLIC                      thu hồi các quyền hay chức danh từ tất cả các user.
Ví dụ:
REVOKE sales_clerk FROM scott;

Hoặc:
REVOKE hr_manager FROM PUBLIC;

20.2.8.  Xoá các chức danh

Để xoá các chức danh từ database sử dụng câu lệnh sau.
Cú pháp:
DROP ROLE role_name;
Với:
role_name                   là tên của chức danh bị xoá.
Ví dụ:
DROP ROLE hr_manager;


20.3.THÔNG TIN VỀ CÁC CHỨC DANH

Các bảng thông tin về chức danh
Thông tin về các chức danh được lấy trong data dictionary. Có rất nhiều tables và views chứa thông tin về các quyền được gán cho user.
Tên view
Diễn giải
DBA_ROLES
Tất cả các chức danh trong database
DBA_ROLE_PRIVS
Các chức danh đã được gán quyền cho user  hay chức danh khác
ROLE_PRIVS
Các chức danh đã được gán quyền cho chức danh khác
DBA_SYS_PRIVS
Quyền hệ thống gán cho user hay chức danh
ROLE_SYS_PRIVS
Quyền hệ thống gán cho chức danh
ROLE_TAB_PRIVS
Quyền trên table được gán cho chức danh
SESSION_ROLES
Các chức danh được phép của user hiện thời
Ví dụ: Thông tin về các quyền  cấp phát cho user
SVRMGRL> SELECT chức danh, password_required FROM dba_chức danhs;

ROLE                                                           PASSWORD
------------------------------ -----------
CONNECT                                                  NO
RESOURCE                                                NO
DBA                                                             NO
AQ_USER_ROLE                                      NO
SELECT_CATALOG_ROLE                    NO
EXECUTE_CATALOG_ROLE                 NO
DELETE_CATALOG_ROLE                    NO
AQ_ADMINISTRATOR_ROLE               NO
RECOVERY_CATALOG_OWNER         NO
IMP_FULL_DATABASE                          NO
EXP_FULL_DATABASE                          NO
SNMPAGENT                                             NO
SALES_CLERK                                         YES
HR_CLERK                                                EXTERNAL
14 rows selected.

*****
Hãy nhanh tay đăng ký khóa học "Quản trị cơ sở dữ liệu Oracle 12c cơ bản" trên Unica giành cho những bạn mới học cơ sở dữ liệu Oracle hoặc cần nâng cao kiến thức, kinh nghiệm thực tiễn trên Unica (giá gốc 900K, giá khi đăng ký HÔM NAY là 299K):

Bước 1: Truy cập Unica.vn, bấm ĐĂNG KÝ nếu chưa có tài khoản
Bước 2: Đăng nhập tài khoản học viên trên Unica.vn

Bước 4: Bấm KÍCH HOẠT NGAYđể thanh toán và bắt đầu vào học.
*****

@ Trần Văn Bình - Founder of Oracle DBA AZ
#học oracle #oracle database #khóa học oracle online #khóa học oca #học oca ở đâu #oca là gì #oca oracle #BossData #OraAz #OracleDBAAz #OracleTutorial #Quản_trị_cơ_sở_dữ_liệu_Oracle #OracleDBA #OracleDatabaseAdministration

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master