Bài giảng Công nghệ Oracle - Bài 10: Quản lý quyền (Privilege) - Nguyễn Việt Hưng
Khái niệm
Quyền của một user trong CSDL Oracle là một sự cho phép thực hiện 1 câu lệnh SQL 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 đăng nhập vào cơ sở dữ liệu CREATE SESSION, quyền SELECT trên một bảng cụ thể nào đó, ).
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Công nghệ Oracle - Bài 10: Quản lý quyền (Privilege) - Nguyễn Việt Hưng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Bài giảng Công nghệ Oracle - Bài 10: Quản lý quyền (Privilege) - Nguyễn Việt Hưng
QUẢN LÝ QUYỀN (PRIVILEGE) Biên soạn: Nguyễn Việt Hưng Bộ môn: Khoa Học Máy Tính - Khoa Công Nghệ Thông Tin Trường Đại Học Giao Thông Vân Tải Website: https://sites.google.com/site/viethung92gtvt/oracle-dba Email : viethung92gtvt@gmail.com Khái niệm Q uyền của một user trong CSDL Oracle là một sự cho phép thực hiện 1 câu lệnh SQL 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 đăng nhập vào cơ sở dữ liệu CREATE SESSION, quyền SELECT trên một bảng cụ thể nào đó,). Phân loại quyền Oracle có 2 loại quyền cho user: Quyền hệ thống ( System Privilege): Cho phép user thực hiện các thao tác cụ thể trong CSDL. Quyền đối tượng ( Object Privilege): Cho phép user truy xuất và thao tác trên một đối tượng cụ thể. Các quyền hệ thống Các quyền hệ thống có thể chia ra như sau: Các quyền cho phép thực hiện các thao tác mức độ rộng trên hệ thống ví dụ như: CREATE SESSION, CREATE TABLESPACE, CREATE USER. Các quyền cho phép quản lý các đối tượng thuộc về một user ví dụ: CREATE TABLE Các quyền cho phép quản lý các đối tượng trong bất cứ một schema nào ví dụ câu lệnh: CREATE ANY TABLE. Các quyền hệ thống Hơn 100 quyền hệ thống khác nhau. Từ khóa ANY trong câu lệnh gán quyền hệ thống chỉ ra rằng user có quyền thao tác trong bất kỳ schema nào. Câu lệnh GRANT gán quyền cho một user hoặc một nhóm các user. Câu lệnh REVOKE xóa các quyền. Các quyền hệ thống – Ví dụ Category Examples INDEX CREATE ANY INDEX ALTER ANY INDEX DROP ANY INDEX TABLE CREATE TABLE CREATE ANY TABLE ALTER ANY TABLE DROP ANY TABLE SELECT ANY TABLE UPDATE ANY TABLE DELETE ANY TABLE SESSION CREATE SESSION ALTER SESSION RESTRICTED SESSION TABLESPACE CREATE TABLESPACE ALTER TABLESPACE DROP TABLESPACE UNLIMITED TABLESPACE Gán các quyền hệ thống cho user GRANT CREATE SESSION TO emi; GRANT CREATE SESSION TO emi WITH ADMIN OPTION; Sử dụng câu lệnh GRANT để gán các quyền hệ thống cho user. Người được gán quyền có thể gán quyền hệ thống cho user khác nếu có thêm tùy chọn WITH ADMIN OPTION. GRANT system_privilege[,system_privilege]... TO { user |Public } [, user ]...[WITH ADMIN OPTION ] VD: Thu hồi quyền hệ thống REVOKE CREATE TABLE FROM emi; Sử dụng câu lệnh REVOKE để thu hồi một quyền hệ thống khỏi user. Các user được gán quyền hệ thống với tùy chọn ADMIN OPTION có thể thu hồi quyền hệ thống đó của bất kỳ user. Chỉ các quyền được gán qua câu lệnh GRANT mới có thể bị thu hồi. VD: REVOKE {system_privilege|role }[,{ system_privilege|role} ]...FROM {u ser|role |PUBLIC } [, { user|role |PUBLIC} ]... Thu hồi quyền hệ thống với tùy chọn ADMIN OPTION Quyền đối tượng Là quyền thực hiện một hành động cụ thể trên một đối tượng trong schema cụ thể. Vd: quyền xóa các hàng dữ liệu khỏi bảng Department trong schema SCOTT. Có nhiều quyền đối tượng khác nhau dành cho các loại đối tượng khác nhau . Các quyền đối tượng Object priv. Table View Sequence Procedure ALTER Ö Ö Ö DELETE Ö Ö EXECUTE Ö INDEX Ö Ö INSERT Ö Ö REFERENCES Ö SELECT Ö Ö Ö UPDATE Ö Ö Gán các quyền đối tượng cho user GRANT SELECT ON emi.customers TO jeff; GRANT UPDATE ON emi.customers TO jeff WITH GRANT OPTION; Sử dụng lệnh GRANT để gán các quyền đối tượng cho user. Gán quyền đối tượng phải nằm trong schema của người gán hoặc người gán phải có tùy chọn WITH G RANT OPTION với quyền đó hoặc người gán có quyền hệ thống GRANT ANY OBJECT PRIVILEGE. VD: GRANT {object_privilege [( column_list )] [,object_privilege[( column_list )]] |ALL} ON [schema.] object TO { user|role |PUBLIC} [,{ user|role |PUBLIC }]... [ WITH GRANT OPTION] Thu hồi quyền đối tượng từ user REVOKE {object_privilege[, object_privilege ]... |ALL} ON [schema.] object FROM user|role |PUBLIC} [,{ user|role |PUBLIC }]... Sử dụng lệnh REVOKE để thu hồi các quyền đối tượng từ user. Để 1 user REVOKE một quyền đối tượng từ 1 user khác, nó cần thỏa mãn 1 trong 2 điều kiện sau: Phải là user trực tiếp gán quyền đó Có quyền hệ thống : GRANT ANY OBJECT PRIVILEGE Thu hồi quyền đối tượng với tùy chọn GRANT OPTION Lấy thông tin về quyền Có thể lấy thông tin về quyền bằng cách truy vấn các views sau: DBA_SYS_PRIVS : Hiển thị thông tin về tất cả các quyền hệ thống được gán cho user và rol e USER_SYS_PRIVS : Hiển thị thông tin về tất cả các quyền hệ thống được gán cho user hiện tại. DBA_TAB_PRIVS : Hiển thị tất cả các quyền đối tượng Thực hành 1. Quyền hệ thống Tạo các user A,B,C chỉ rõ default tablespace là USERS và hạn mưc trên tablespace USERS = 1M. Admin gán cho A có thể đăng nhập và tạo bảng, ngoài ra cho A có thể gán quyền tạo bảng cho các user khác. Admin gán cho B có thể đăng nhập và tạo bảng, ngoài ra cho B có thể gán quyền đăng nhập cho các user khác. C được gán quyền đăng nhập và tạo bảng bởi A và B. C bị thu hồi quyền tạo bảng, hãy thu hồi quyền tạo bảng của C bằng 2 cách. Thực hành 2. Quyền đối tượng Tạo user A sao cho A có thể đăng nhập và tạo bảng. (Hạn mưc trên tablespace USERS = 1M) A Tạo bảng tblA(id number). (Chèn dữ liệu demo, chú ý commit) Tạo user B và C cũng có các quyền như A. A gán quyền select trên tblA cho B và cho B có thể gán quyền đó cho C. B tiến hành gán quyền select trên A.tblA cho C. C muốn có thể insert dữ liệu trên A.tblA, hãy thực giúp C đạt được ý muốn bằng 2 cách. QUẢN LÝ CHỨC DANH (ROLE) Biên soạn: Nguyễn Việt Hưng Bộ môn: Khoa Học Máy Tính - Khoa Công Nghệ Thông Tin Trường Đại Học Giao Thông Vân Tải Website: https://sites.google.com/site/viethung92gtvt/oracle-dba Email : viethung92gtvt@gmail.com Các chức danh Users Privileges Roles UPDATE ON JOBS INSERT ON JOBS SELECT ON JOBS CREATE TABLE CREATE SESSION HR_CLERK HR_MGR A B C 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. Một số Role định sẵn ROLE NAME DESCRIPTION CONNECT Từ phiên bản Oracle 1 0 g Release 2, chức danh Connect chỉ còn 1 quyền là CREATE SESSION RESOURCE Bao gồm các quyền: CREATE CLUSTER, CREATE INDEXTYPE, CREATE OPERATOR, CREATE PROCEDURE, CREATE SEQUENCE, CREATE TABLE, CREATE TRIGGER,CREATE TYPE, UNLIMITED TABLESPACE (quyền này không hiện ra khi truy vấn trong data dictionary) DBA All system privileges WITH ADMIN OPTION Đ ặc điểm Role có thể gán cho user hoặc role và thu hồi từ user hoặc role giống như gán và thu hồi quyền. Role có thể gán cho bất kỳ user và role. Tuy nhiên, 1 role 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. 1 user có thể enable, disable các role gán cho nó. Khi 1 role có đặt mật khẩu, cần phải nhập mật khẩu khi enable role. Tên của role phải duy nhất, không trùng tên với bất kỳ user hoặc role khác đã tồn tại trong CSDL. Role không thuộc sở hữu của bất kỳ user và không được lưu trữ trong bất kỳ schema nào. Role được lưu trữ trong data dictionary . Tạo chức danh Chú ý: để tạo được role, user phải có quyền hệ thống CREATE ROLE. Không xác định: Bằng mật khẩu: CREATE ROLE r01 [NOT IDENTIFIED] ; CREATE ROLE r02 IDENTIFIED BY abc123; Gán các chức danh GRANT role [, role ]... TO { user|role| PUBLIC} [, { user|role| PUBLIC} ]...[ WITH ADMIN OPTION] Để gán chức danh cho 1 user hoặc role khác, user phải có chức danh đó với tùy chọn WITH ADMIN OPTION hoặc có quyền hệ thống: GRANT ANY ROLE Chú ý: User tạo ra chức danh thì mặc định có tùy chọn WITH ADMIN OPTION đối với chức danh đó. VD: GRANT hr_clerk TO hr_manager; GRANT oe_clerk TO scott; GRANT hr_manager TO scott WITH ADMIN OPTION; Gán quyền hệ thống cho chức danh GRANT system_privilege [, system_privilege ]... TO role [WITH ADMIN OPTION] Để gán 1 quyền hệ thống cho chức danh, user phải có tùy chọn WITH ADMIN OPTION với quyền hệ thống đó hoặc user phải có quyền GRANT ANY PRIVILEGE . VD: grant create table to R01; Đặc điểm tùy chọn ADMIN OPTION Ví dụ khi gán role new_dba cho user bob với tùy chọn WITH ADMIN OPTION, thì bob không chỉ được sử dụng các quyền có trong role new_dba mà có thể grant, revoke hoặc drop role này. 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. 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 đó . Gán quyền đối tượng cho chức danh GRANT object_privilege [, object_privilege ]... TO role [,role] ; Để gán 1 quyền đối tượng cho chức danh, user phải thỏa mãn 1 trong các yêu cầu sau: User sở hữu đối tượng đó. Tùy chọn WITH GRANT OPTION phải đi kèm khi gán quyền đối tượng đó cho user đó. User đó phải có quyền hệ thống GRANT ANY OBJECT PRIVILEGE. Không có tùy chọn GRANT OPTION khi gán 1 quyền đối tượng cho chức danh. Enable và Disable các chức danh Trong 1 session , user có thể enable và disable các role mà được gán cho nó qua mệnh đề SET ROLE. Role có đặt mật khẩu cần phải chỉ rõ mật khẩu để enable role đó. Ví dụ: SET ROLE hr_clerk; SET ROLE oe_clerk IDENTIFIED BY order; SET ROLE ALL EXCEPT oe_clerk; Thiết lập hoặc hủy bỏ mật khẩu của chức danh User phải thõa mãn 1 trong các yêu cầu sau: User phải có tùy chọn WITH ADMIN OPTION của chức danh đó. User phải có quyền ALTER ANY ROLE VD: Thiết lập mật khẩu: ALTER ROLE r01 IDENTIFIED BY abc123; Hủy bỏ mật khẩu: ALTER ROLE r02 NOT IDENTIFIED; Thiết lập chức danh mặc định ALTER USER scott DEFAULT ROLE hr_clerk, oe_clerk; ALTER USER scott DEFAULT ROLE ALL; ALTER USER scott DEFAULT ROLE ALL EXCEPT hr_clerk; ALTER USER scott DEFAULT ROLE NONE; Một user có thể được gán nhiều chức danh. Mặc định khi chưa thiết lập chức danh mặc định, tất cả các chức danh được enable khi user đăng nhập. Khi thiết lập chức danh mặc định, thì chỉ các chức danh mặc định được enable khi user đăng nhập mà không phải nhập mật khẩu đối với các role có mật khẩu. Thu hồi các chức danh khỏi User Thu hồi các chức danh khỏi user đòi hỏi tùy chọn ADMIN OPTION hoặc quyền GRANT ANY ROLE . Để thu hồi một chức danh: REVOKE oe_clerk FROM scott; REVOKE role [, role ] FROM {user|role| PUBLIC } [, {user|role| PUBLIC }]; VD: Hủy bỏ các chức danh DROP ROLE role; Xóa một chức danh: Hủy bỏ chức danh đó với tất cả user và các chức danh mà nó được gán. Hủy bó nó khỏi CSDL. Đòi hỏi tùy chọn ADMIN OPTION hoặc quyền DROP ANY ROLE Để xóa một chức danh: Lấy thông tin chức danh Thông tin về chức danh có thể lấy bằng cách truy vấn các views sau: 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 Practice : Managing Roles 1 Examine the data dictionary view and list the system privileges of the RESOURCE role. 2 Create a role called DEV , which will enable a user assigned the role to create a table, create a view, and select from Emi’s CUSTOMERS1 table. 3 a Assign the RESOURCE and DEV roles to Bob , but make only the RESOURCE role automatically enabled when he logs on. b Give Bob the ability to read all the data dictionary information. 4 Bob needs to check the undo segments that are currently used by the instance. Connect as Bob and list the undo segments used. Hint: Use SET ROLE SELECT_CATALOG_ROLE 5 As SYSTEM , try to create a CUST_VIEW view on Emi’s CUSTOMERS1 table. What happens? 6 As user Emi , grant SELECT on CUSTOMERS1 to SYSTEM . As SYSTEM , create a CUST_VIEW view on Emi ’s CUSTOMERS1 table.
File đính kèm:
- bai_giang_cong_nghe_oracle_bai_10_quan_ly_quyen_privilege_ng.pptx