CHƯƠNG 1. TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU ORACLE 21C VÀ CÁC CƠ CHẾ AN TOÀN 1. Giới thiệu về Oracle 21c 1. Tổng quan về Oracle Hệ quản trị cơ sở dữ liệu Oracle, thường được gọi là Oracle Database hoặc Oracle RDBMS, là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) được phát triển bởi Oracle Corporation.
Đây là một trong những hệ quản trị cơ sở dữ liệu phổ biến và mạnh mẽ nhất trên thị trường. Oracle Database cung cấp một nền tảng để lưu trữ, quản lý và truy vấn dữ liệu. Hệ thống này sử dụng ngôn ngữ truy vấn SQL (Structured Query Language) để tương tác với cơ sở dữ liệu. Kiến trúc của Oracle Database Tương tự như nhiều hệ quản trị cơ sở dữ liệu quan hệ phổ biến khác, Oracle Database cũng được xây dựng dựa trên ngôn ngữ truy vấn SQL, tiêu chuẩn hóa cho việc quản lý và truy vấn dữ liệu trên máy chủ một cách hiệu quả.
Đặc biệt, Oracle đã áp dụng công nghệ PL/SQL, một phần mở rộng của SQL, để phát triển các tính năng độc quyền cho ngôn ngữ truy vấn này. Bên cạnh đó, Oracle Database còn hỗ trợ lập trình bằng Java và cho phép sử dụng các ngôn ngữ và chương trình khác. Không khác các nền tảng cơ sở dữ liệu khác, Oracle Database kết nối các phần tử dữ liệu thông qua cấu trúc bảng, tạo ra các lưu trữ khác nhau để hỗ trợ việc xử lý dữ liệu một cách dễ dàng. Các mô hình kiến trúc của công nghệ này bao gồm một tập hợp các ràng buộc ACID, nhằm đảm bảo độ chính xác và độ tin cậy của dữ liệu.
Nguyên tắc ACID bao gồm độ nguyên tử, tính thống nhất, tính độc lập và độ bền của dữ liệu. Kiến trúc của Oracle Database thể hiện qua các phần sau: 1 • Cấu trúc lưu trữ vật lý: Các tệp dữ liệu, tệp điều khiển chứa thông tin quản lý cơ sở dữ liệu, và các tệp nhật ký để ghi lại các thay đổi dữ liệu. Mỗi cơ sở dữ liệu và phiên bản của nó sẽ quản lý các tệp này. • Cấu trúc lưu trữ logic: Bao gồm khối dữ liệu, một tập hợp các khối liền kề, extents (nhóm khối liền kề), phân đoạn (nhóm extents) và không gian bảng (lưu trữ phân đoạn).
Mỗi phiên bản của Oracle Database được tạo dựng trên nền một bộ nhớ cache được gọi là System Global Area (SGA) chứa nhóm các bộ nhớ chia sẻ. Các phiên bản cũng bao gồm các tiến trình chạy ngầm để quản lý I/O và giám sát hoạt động cơ sở dữ liệu, với mục tiêu tối ưu hoá hiệu suất và độ tin cậy. Trong mô hình tương tác của Oracle, các tiến trình máy khách kết nối với phiên bản cơ sở dữ liệu thích hợp để thực thi mã ứng dụng. Các tiến trình máy chủ, được kết nối với vùng bộ nhớ riêng biệt gọi là khu vực chương trình chung (khác với SGA), quản lý tương tác giữa các tiến trình máy khách và cơ sở dữ liệu.
Oracle 21c Phiên bản mới nhất của cơ sở dữ liệu phổ biến nhất thế giới, Oracle Database 21c, được phát hành theo tiêu chí ưu tiên cho điện toán đám mây – “cloud first”. Phiên bản chạy trên nền tảng Cloud của Oracle được ra mắt vào Tháng Mười Hai 2020, và bản hoạt động trên máy chủ on-premise được phát hành muộn hơn, vào tháng 8 năm 2021. Oracle đã nhất quán áp dụng phương pháp lưu trữ và quản lý dữ liệu trong một CSDL hội tụ, thay vì chia nhỏ thành nhiều thành phần chức năng đơn dụng. Hay nói cách khác, CSDL hội tụ của Oracle là CSDL đa mô hình (multi-model), phục vụ nhiều đối tượng (multi-tenant) và nhiều loại công việc khác nhau (multi-workload).
Cơ sở dữ liệu Oracle hỗ trợ đầy đủ nhiều mô hình dữ liệu và phương pháp truy cập, đơn giản hóa việc hợp nhất trong khi đảm bảo tính cô lập và vượt trội trong các trường hợp sử dụng khối lượng công việc cơ sở dữ liệu điển hình – cả hoạt động và phân tích. Dưới đây là một số tính năng mới của CSDL Oracle phiên bản 21c 2 • Mảng Blockchain • Kiểu dữ liệu Native JSON: Thực thi JavaScript bên trong Oracle Database • SQL Macros • Cải tiến tính năng CSDL trên bộ nhớ (In-Memory) 1. Các cơ chế an toàn trong an toàn thông tin Các cơ chế an toàn trong an toàn thông tin là các phương pháp và kỹ thuật được sử dụng để bảo vệ thông tin khỏi các mối đe dọa bảo mật. Các cơ chế này bao gồm: • Mã hóa: Mã hóa là quá trình biến đổi thông tin ban đầu thành dạng mã hóa, đảm bảo tính bảo mật của thông tin khi truyền qua các kênh mạng.
Có nhiều phương pháp mã hóa như mã hóa đối xứng, mã hóa bất đối xứng và mã hóa mã nguồn mở. • Xác thực: Xác thực là quá trình xác định tính hợp lệ của một người dùng, một thiết bị hay một ứng dụng. Các kỹ thuật xác thực bao gồm xác thực bằng mật khẩu, xác thực bằng vân tay, xác thực bằng thẻ, xác thực bằng chứng chỉ, …… • Phân quyền: Phân quyền là quá trình xác định quyền truy cập cho các người dùng đến các tài nguyên khác nhau trên hệ thống. quyền truy cập được cấp phép dựa trên vai trò của người dùng hoặc các nhóm người dùng.
• Quản lý rủi ro: Quản lý rủi ro là quá trình đánh giá và quản lý các rủi ro bảo mật trong hệ thống thông tin. Các biện pháp quản lý rủi ro bao gồm đánh giá rủi ro, phân loại và ưu tiên các rủi ro, áp dụng các biện phòng ngừa và giảm thiểu rủi roi. • Kiểm soát truy cập: Kiểm soát truy cập là quá trình kiểm soát việc truy cập của vào các tài nguyên hệ thống thông tin, đảm bảo rằng chỉ có những người dùng được phép truy cập vào các tài nguyên đó. CÁC CƠ CHẾ AN TOÀN TRONG ORACLE 21C 2.
Cơ chế xác thực Xác thực là quá trình xác nhận định danh của các cá nhân hay ứng dụng có yêu cầu truy cập tới một môi trường an toàn. Việc xác nhận định danh này được hoàn thành bằng cách thẩm tra đăng nhập và các chứng nhận (credential) được tạo trong cùng một môi trường. Cơ chế xác thực bởi hệ điều hành Xác thực bởi hệ điều hành có nghĩa là nếu có thể đăng nhập vào máy chủ cơ sở dữ liệu thông qua một tài khoản hệ điều hành được ủy quyền, người dùng sẽ được phép kết nối vào cơ sở dữ liệu mà không cần yêu cầu mật khẩu bổ sung. Một ví dụ đơn giản minh họa khái niệm này.
Ví dụ về xác thực bởi hệ điều hành 1. Hiển thị các nhóm OS mà người dùng Oracle thuộc về. Sử dụng lệnh id để hiển thị các nhóm hệ điều hành mà người dùng oracle thuộc về. Kết nối vào cơ sở dữ liệu với quyền SYSDBA, sử dụng tên người dùng và mật khẩu không hợp lệ.
Lệnh dưới đây cố tình sử dụng tên người dùng và mật khẩu không hợp lệ. $ sqlplus bad/notgood as sysdba 3. Xác minh rằng kết nối đã được thiết lập với quyền SYS. Dùng lệnh show user để kiểm tra người dùng hiện tại.
SYS@orcl> show user USER is "SYS" Ví dụ trên cho thấy dù nhập tên người dùng và mật khẩu không hợp lệ thì người dùng vẫn có thể kết nối đến Oracle. Kết nối này hoạt động vì Oracle bỏ qua tên người dùng/mật khẩu được cung cấp, do người dùng đã được xác thực trước đó qua hệ điều hành. Trong ví dụ này, người dùng OS oracle thuộc nhóm OS dba, do 4 đó được phép kết nối cục bộ vào cơ sở dữ liệu với quyền SYSDBA mà không cần cung cấp tên người dùng và mật khẩu chính xác. Cơ chế xác thực bởi database Oracle có thể xác thực người dùng đang cố gắng kết nối với cơ sở dữ liệu bằng cách sử dụng thông tin được lưu trữ trong cơ sở dữ liệu đó.
Để thiết lập Oracle sử dụng xác thực cơ sở dữ liệu, mỗi người dùng mới được tạo một mật khẩu để sử dụng trong quá trình thiết lập kết nối đến database. Quá trình này ngăn chặn việc sử dụng cơ sở dữ liệu trái phép vì kết nối sẽ bị từ chối nếu người dùng cung cấp mật khẩu không chính xác. Oracle lưu trữ mật khẩu của người dùng trong từ điển dữ liệu (data dictionary) ở dạng được mã hóa để ngăn chặn sự thay đổi trái phép, nhưng người dùng có thể thay đổi mật khẩu của mình bất kỳ lúc nào. Để thiết lập giao thức xác thực khác được máy khách hoặc cơ sở dữ liệu cho phép, DBA có thể điều chỉnh tham số SQLNET.ALLOWED_LOGON_VERSION trong tệp sqlnet.ora của máy chủ.
Sau đó, mỗi lần thực hiện kết nối, nếu máy khách hoặc máy chủ không đáp ứng phiên bản tối thiểu do đối tác chỉ định thì quá trình xác thực sẽ không thành công với lỗi ORA-28040. Tham số này có thể lấy các giá trị là 10, 9 hoặc 8, đại diện cho các phiên bản máy chủ cơ sở dữ liệu. Oracle khuyến nghị giá trị 10. Cơ chế này tương ứng với các tài khoản được tạo bằng lệnh CREATE USER.
Mật khẩu của mỗi user sẽ được Oracle server lưu trữ ngay trong data dictionary và nó có thể kiểm tra rất dễ dàng mỗi khi User kết nối đến database. Cú pháp: CREAT USER user IDENTIFIED BY password [PASSWORD EXPIRE] [ACCOUNT {LOCK | UNLOCK}] 5 User Tên truy nhập của User Xác định cơ chế xác thực user bởi database với mật khẩu By password truy nhập là password. (password không phân biệt hoa thường) PASSWORD Bắt buộc user phải chỉ rõ mật khẩu mỗi khi user thực EXPIRE hiện kết nối tới database thông qua SQL*PLUS. ACCOUNT Sử dụng tùy chọn này để lock/ unlock đối với mỗi user LOCK/UNLOCK một cách tường minh ( mặc định là UNLOCK) Bảng 2.
Thông số khi tạo user với cơ chế xác nhận bởi database Lưu ý: Khi thiết lập tùy chọn PASSWORD EXPIRE trong lệnh tạo user, khi user sử dụng SQL*PLUS để kết nối tới database, mỗi lần kết nối user lại phải nạp mới mật khẩu. Việc truy cập thường sẽ nhận được thông báo: ERROR: ORA-28001: the password has expired Changing password for new_user Old password: New password: Retype new password: Password changed 2. Cơ chế xác thực bởi mạng hoặc bên thứ ba Oracle cung cấp các giao diện (được gọi là adapters) cho một loạt các dịch vụ bảo mật của bên thứ ba để xác thực người dùng. Có thể cấu hình các dịch vụ này để người dùng chỉ cần sử dụng một mật khẩu duy nhất để kết nối với bất kỳ cơ sở dữ liệu nào trong mạng của người dùng.