Oracle Database là một hệ quản trị cơ sở dữ liệu quan trọng và phổ biến được sử dụng trong nhiều doanh nghiệp và tổ chức trên toàn thế giới. Trong quá trình quản lý cơ sở dữ liệu, quản trị viên cần phải quản lý và điều khiển các quyền trong Oracle Database để đảm bảo an ninh và độ tin cậy của hệ thống.
Trong bài viết này, chúng ta sẽ tìm hiểu về các loại quyền trong Oracle Database, bao gồm cả quyền hệ thống và quyền đối tượng, và cách thực hiện việc cấp và thu hồi quyền đối với các người dùng trong hệ thống. Bài viết cũng sẽ đề cập đến các điều kiện và quy định quan trọng liên quan đến việc sử dụng quyền trong Oracle Database để đảm bảo an toàn và bảo mật cho hệ thống cơ sở dữ liệu
Quyền trong Oracle Database
Privilege là quyền được thực hiện một loại câu lệnh SQL cụ thể hoặc truy cập vào các đối tượng của người dùng khác. Quyền trong oracle database được chia thành hai loại:
- Quyền hệ thống (system privileges): Mỗi quyền hệ thống cho phép một người dùng thực hiện một hoạt động trên cơ sở dữ liệu cụ thể hoặc một lớp hoạt động cơ sở dữ liệu. Ví dụ, quyền tạo tablespaces là một quyền hệ thống. Quyền hệ thống có thể được cấp cho người quản trị hoặc cho ai đó đã được cho phép để quản trị các quyền cụ thể đó. Có hơn 170 quyền hệ thống khác nhau. Nhiều quyền hệ thống chứa mệnh đề ANY.
- Quyền đối tượng (object privileges): Quyền đối tượng cho phép người dùng thực hiện một hành động cụ thể trên một đối tượng nhất định, chẳng hạn như một table, View, sequence, procedure, function, hoặc package. Nếu không được cấp quyền cụ thể, người dùng chỉ có thể truy cập đối tượng của chính họ. Quyền đối tượng có thể được cấp cho chủ sở hữu đối tượng, bởi người quản trị hoặc bởi ai đó đã được cho phép cụ thể để cấp quyền trên đối tượng.
System Privileges - Oracle Database
Phân quyền hệ thống(System Privileges) cho User trong Oracle Database
Bạn có thể quản trị quyền hệ thống khi bạn tạo một người dùng hoặc sau khi tạo. Để cấp hoặc thu hồi(Revoke) quyền hệ thống, chọn User, sau đó chọn "Alter Privileges & Roles" trên trang User. Chọn quyền thích hợp từ danh sách quyền và di chuyển chúng bằng cách nhấp vào mũi tên thích hợp.
Việc cấp quyền với mệnh đề ANY có nghĩa là quyền vượt qua các schema. Ví dụ, nếu bạn có quyền CREATE TABLE, bạn có thể tạo một bảng - nhưng chỉ trong schema của riêng bạn. Quyền SELECT ANY TABLE cho phép bạn chọn từ các bảng được sở hữu bởi người dùng khác.
Người dùng SYS và người dùng với vai trò DBA được cấp tất cả các quyền ANY; do đó, họ có thể làm bất cứ điều gì với bất kỳ đối tượng dữ liệu nào.
Cú pháp SQL để cấp quyền hệ thống là:
GRANT <system_privilege> TO <grantee clause> [WITH ADMIN OPTION].
Hãy cân nhắc kỹ yêu cầu bảo mật trước khi cấp quyền hệ thống.
Một số quyền hệ thống thường chỉ được cấp cho các quản trị viên:
- RESTRICTED SESSION: Quyền này cho phép bạn đăng nhập ngay cả khi cơ sở dữ liệu đã được mở trong chế độ restricted (giới hạn).
- SYSDBA và SYSOPER: Những quyền này cho phép bạn tắt, bật và thực hiện các tác vụ phục hồi và quản trị khác trong cơ sở dữ liệu. SYSOPER cho phép một người dùng thực hiện các tác vụ và các hoạt động cơ bản, nhưng không có khả năng xem dữ liệu người dùng. Nó bao gồm các quyền hệ thống sau đây:
- STARTUP và SHUTDOWN.
- CREATE SPFILE
- ALTER DATABASE OPEN/MOUNT/BACKUP
- ALTER DATABASE ARCHIVELOG
- ALTER DATABASE RECOVER(Chỉ hoàn tất phục hồi. Bất kỳ hình thức phục hồi không hoàn chỉnh nào, chẳng hạn như UNTIL TIME|CHANGE|CANCEL|CONTROLFILE, đều yêu cầu kết nối với SYSDBA.)
- RESTRICTED SESSION. Quyền hệ thống SYSDBA cũng cho phép phục hồi không hoàn chỉnh và xóa cơ sở dữ liệu. Hiệu quả, quyền hệ thống SYSDBA cho phép một người dùng kết nối với người dùng SYS.
- SYSASM: Quyền này cho phép bạn bật, tắt và quản trị một phiên bản ASM
- DROP ANY object: Quyền DROP ANY cho phép bạn xóa các đối tượng mà các người dùng schema khác sở hữu.
- CREATE, MANAGE, DROP và ALTER TABLESPACE: Những quyền này cho phép quản lý tablespace, bao gồm tạo, xóa và thay đổi các thuộc tính của tablespace.
- CREATE LIBRARY: Cơ sở dữ liệu Oracle cho phép nhà phát triển tạo và gọi mã nguồn bên ngoài (ví dụ, thư viện C) từ PL/SQL. Thư viện phải được đặt tên bằng đối tượng LIBRARY trong cơ sở dữ liệu. Quyền CREATE LIBRARY cho phép một người dùng tạo một thư viện mã nguồn tùy ý có thể thực thi từ PL/SQL.
- CREATE ANY DIRECTORY: Là biện pháp bảo mật, thư mục của hệ thống điều khiển nơi mã nguồn được lưu trữ phải được liên kết với một đối tượng thư mục Oracle ảo. Với quyền CREATE ANY DIRECTORY, bạn có thể gọi các đối tượng mã không an toàn. Quyền CREATE ANY DIRECTORY cho phép một người dùng tạo một đối tượng thư mục (với quyền đọc và ghi) tới bất kỳ thư mục nào mà chủ sở hữu phần mềm Oracle có thể truy cập. Điều này có nghĩa là người dùng có thể truy cập các thủ tục bên ngoài trong các thư mục đó và cố gắng đọc và ghi trực tiếp bất kỳ tệp dữ liệu cơ sở dữ liệu nào, chẳng hạn như tệp dữ liệu, redo log và audit log. Hãy đảm bảo rằng tổ chức của bạn có chiến lược bảo mật để ngăn chặn việc sử dụng sai quyền hạn mạnh như quyền này.
- GRANT ANY OBJECT PRIVILEGE: Quyền này cho phép bạn cấp quyền đối tượng trên các đối tượng mà bạn không sở hữu.
- ALTER DATABASE và ALTER SYSTEM: Những quyền hạn rất mạnh này cho phép bạn sửa đổi cơ sở dữ liệu và thể hiện Oracle (ví dụ, đổi tên tệp dữ liệu hoặc xóa bộ nhớ đệm).
Thu hồi quyền hệ thống(System Privileges) từ User Oracle Database
Các quyền hệ thống đã được cấp trực tiếp bằng lệnh GRANT có thể bị thu hồi bằng cách sử dụng lệnh REVOKE trong SQL. Người dùng có ADMIN OPTION cho một quyền hệ thống có thể thu hồi quyền đó từ bất kỳ người dùng cơ sở dữ liệu nào.
Người thu hồi không phải là cùng một người đã cấp quyền ban đầu. Không có hiệu ứng tràn lan khi một quyền hệ thống bị thu hồi, bất kể nó được trang bị ADMIN OPTION hay không.
Cú pháp SQL để thu hồi quyền hệ thống là:
REVOKE <system_privilege> FROM <grantee clause>
Như hình trên trình bày tình huống sau đây:
- DBA cấp quyền CREATE TABLE hệ thống cho Joe với ADMIN OPTION
- Joe tạo một bảng
- Joe cấp quyền CREATE TABLE hệ thống cho Emily
- Emily tạo một bảng
- DBA thu hồi quyền CREATE TABLE hệ thống từ Joe
Kết quả: Bảng của Joe vẫn tồn tại, nhưng Joe không thể tạo bảng mới. Bảng của Emily vẫn tồn tại và cô ấy vẫn có quyền CREATE TABLE hệ thống.
Phân quyền đối tượng(Object Privileges) trong Oracle Database
Đây là phương thức xác thực bên ngoài cơ sở dữ liệu (hệ điều hành, Kerberos hoặc Radius). Tùy chọn Advanced Security (Bảo mật Nâng cao) được yêu cầu cho Kerberos hoặc Radius.
Để cấp quyền đối tượng bằng cách sử dụng Enterprise Manager Database Express, thực hiện các bước sau đây:
- Chỉ định tên schema cho đối tượng và chọn loại đối tượng mà bạn muốn cấp quyền. Nhấp vào mũi tên để tiếp tục.
- Chọn các đối tượng từ danh sách Object Name và chuyển chúng đến danh sách Selected Object. Khi bạn đã chọn tất cả các đối tượng, nhấp vào mũi tên để chuyển sang trang tiếp theo.
- Sau đó, chọn các quyền thích hợp từ danh sách Privileges. Chọn hộp kiểm "With Grant Option" nếu người dùng này được phép cấp cho người dùng khác quyền truy cập tương tự.
Hoặc bạn cũng có thể dùng cú pháp SQL để cấp quyền đối tượng như sau:
GRANT <object_privilege> ON <object> TO <grantee clause> [WITH GRANT OPTION]
Thu hồi quyền đối tượng(Object Privileges) trong Oracle Database
Các tác động lan truyền có thể được quan sát khi thu hồi một quyền hạn hệ thống liên quan đến một hoạt động thao tác dữ liệu (DML). Ví dụ, nếu quyền SELECT ANY TABLE được cấp cho một người dùng và người đó đã tạo các Proceduce sử dụng bảng đó, tất cả các thủ tục chứa trong schema của người dùng đó phải được biên dịch lại trước khi chúng có thể được sử dụng lại.
Thu hồi các quyền đối tượng cũng có tác động lan truyền khi được cấp với tùy chọn GRANT. Như một người dùng, bạn chỉ có thể thu hồi những quyền mà bạn đã cấp. Ví dụ, Bob không thể thu hồi quyền đối tượng mà Joe đã cấp cho Emily. Chỉ có người được cấp quyền hoặc người dùng có quyền được gọi là GRANT ANY OBJECT PRIVILEGE mới có thể thu hồi các quyền đối tượng.
Kịch bản:
- Joe được cấp quyền SELECT trên đối tượng EMPLOYEES với tùy chọn GRANT.
- Joe cấp quyền SELECT trên EMPLOYEES cho Emily.
- Quyền SELECT bị thu hồi từ Joe. Việc này cũng tác động đến Emily.
BÀI VIẾT LIÊN QUAN