I. Oracle 21c Tổng quan về CSDL và Cơ Chế An Toàn
Oracle 21c là hệ quản trị cơ sở dữ liệu (DBMS) quan hệ mạnh mẽ, được phát triển bởi Oracle Corporation. Nó cung cấp nền tảng để lưu trữ, quản lý và truy vấn dữ liệu một cách hiệu quả, sử dụng ngôn ngữ truy vấn SQL và PL/SQL. Kiến trúc của Oracle Database dựa trên các phần tử dữ liệu kết nối thông qua cấu trúc bảng, tuân thủ các ràng buộc ACID để đảm bảo độ tin cậy và chính xác của dữ liệu. Phiên bản 21c tập trung vào điện toán đám mây và cung cấp các tính năng mới như Mảng Blockchain, kiểu dữ liệu Native JSON, SQL Macros và cải tiến tính năng CSDL trên bộ nhớ (In-Memory). Các cơ chế an toàn trong Oracle 21c bao gồm mã hóa, xác thực, phân quyền, quản lý rủi ro và kiểm soát truy cập. Việc nắm vững và áp dụng các cơ chế này là rất quan trọng để bảo vệ dữ liệu khỏi các mối đe dọa bảo mật. Theo [1], 'Database Security' của Alfred Basta và Melissa Zgola, việc hiểu rõ và triển khai các cơ chế an toàn cơ bản là nền tảng cho mọi chiến lược bảo mật dữ liệu thành công. Trong đó, mã hóa đóng vai trò then chốt trong việc bảo vệ dữ liệu khi lưu trữ và truyền tải. Xác thực đảm bảo chỉ những người dùng được phép mới có thể truy cập hệ thống. Phân quyền kiểm soát quyền truy cập của người dùng vào các tài nguyên cụ thể. Quản lý rủi ro giúp đánh giá và giảm thiểu các mối đe dọa tiềm ẩn. Cuối cùng, kiểm soát truy cập đảm bảo chỉ những người dùng được ủy quyền mới có thể truy cập dữ liệu nhạy cảm. Việc kết hợp các cơ chế này tạo ra một lớp bảo vệ toàn diện cho cơ sở dữ liệu Oracle.
1.1. Giới thiệu chi tiết về hệ quản trị CSDL Oracle 21c
Oracle 21c không chỉ là một hệ quản trị cơ sở dữ liệu, mà còn là một nền tảng toàn diện cho việc quản lý và bảo vệ dữ liệu. Nó hỗ trợ 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 dữ liệu và đảm bảo tính cô lập. Phiên bản 21c cung cấp các tính năng tiên tiến như mảng blockchain, cho phép lưu trữ dữ liệu một cách an toàn và minh bạch. Kiểu dữ liệu Native JSON giúp làm việc với dữ liệu JSON một cách dễ dàng và hiệu quả. SQL Macros cho phép tái sử dụng các đoạn mã SQL, giúp giảm thiểu lỗi và tăng tốc độ phát triển. Ngoài ra, các cải tiến về CSDL trên bộ nhớ (In-Memory) giúp tăng hiệu suất truy vấn và xử lý dữ liệu. Theo [2] 'Pro Oracle Database 18c Administration' của Michelle Malcher, việc tận dụng các tính năng mới trong Oracle 21c có thể cải thiện đáng kể hiệu suất và khả năng mở rộng của hệ thống. Điều quan trọng là phải hiểu rõ các yêu cầu bảo mật của tổ chức và lựa chọn các cơ chế an toàn phù hợp để đáp ứng các yêu cầu đó.
1.2. Tổng quan các cơ chế an toàn thông tin cốt lõi trong CSDL
Các cơ chế an toàn thông tin cốt lõi bao gồm mã hóa, xác thực, phân quyền, quản lý rủi ro và kiểm soát truy cập. Mã hóa chuyển đổi dữ liệu thành một định dạng không thể đọc được, ngăn chặn truy cập trái phép. Xác thực xác minh danh tính của người dùng hoặc thiết bị trước khi cấp quyền truy cập. Phân quyền kiểm soát quyền truy cập của người dùng vào các tài nguyên cụ thể. Quản lý rủi ro xác định, đánh giá và giảm thiểu các mối đe dọa bảo mật. Kiểm soát truy cập đảm bảo chỉ những người dùng được ủy quyền mới có thể truy cập dữ liệu nhạy cảm. Theo [3], Giáo trình An toàn cơ sở dữ liệu của Học viện Kỹ thuật Mật mã, việc triển khai các cơ chế an toàn này đòi hỏi sự hiểu biết sâu sắc về các nguyên tắc bảo mật và các công cụ có sẵn. Điều quan trọng là phải thường xuyên đánh giá và cập nhật các biện pháp bảo mật để đối phó với các mối đe dọa mới.
II. Xác Thực Oracle 21c Bí quyết An Toàn Cho Người Mới
Xác thực là quá trình xác nhận danh tính của người dùng hoặc ứng dụng trước khi cấp quyền truy cập vào cơ sở dữ liệu. Oracle 21c cung cấp nhiều cơ chế xác thực khác nhau, bao gồm xác thực bởi hệ điều hành, xác thực bởi cơ sở dữ liệu và xác thực bởi mạng hoặc bên thứ ba. Xác thực bởi hệ điều hành cho phép người dùng kết nối vào cơ sở dữ liệu mà không cần mật khẩu bổ sung, nếu họ đã đă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. Xác thực bởi cơ sở dữ liệu sử dụng thông tin được lưu trữ trong cơ sở dữ liệu để xác thực người dùng. Xác thực bởi mạng hoặc bên thứ ba sử dụng các dịch vụ bảo mật của bên thứ ba để xác thực người dùng. Oracle khuyến nghị sử dụng xác thực bởi cơ sở dữ liệu hoặc xác thực bởi mạng hoặc bên thứ ba để tăng cường bảo mật. Các phương pháp xác thực mạnh như xác thực đa yếu tố (MFA) cũng nên được xem xét để bảo vệ chống lại các cuộc tấn công dựa trên mật khẩu. Việc quản lý mật khẩu mạnh, bao gồm việc yêu cầu mật khẩu phức tạp và thay đổi mật khẩu định kỳ, là rất quan trọng. Ngoài ra, việc theo dõi và ghi nhật ký các sự kiện xác thực có thể giúp phát hiện và ngăn chặn các hoạt động đáng ngờ.
2.1. Cách xác thực bằng hệ điều hành trong Oracle 21c
Xác thực bởi hệ điều hành là một cơ chế tiện lợi, nhưng cần được cấu hình cẩn thận để tránh các lỗ hổng bảo mật. Để sử dụng xác thực bởi hệ điều hành, người dùng phải thuộc một nhóm hệ điều hành được ủy quyền. 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. Cần kiểm tra giá trị của tham số khởi tạo Oracle OS_AUTHENT_PREFIX. Tiền tố mặc định là “OPS$”. Cần tạo người dùng cơ sở dữ liệu để cho phép kết nối được xác thực hệ điều hành bằng cách tạo user Oracle theo cách thông thường, nhưng tên user phải là giá trị tiền tố được nối với tên user trong windows. Cần thêm dòng cấu hình SQLNET.AUTHENTICATION_SERVICES= (NTS) tại tệp %ORACLE_HOME%\network\admin\sqlnet.ora. Nó đảm bảo rằng Oracle sử dụng cơ chế bảo mật của Windows để xác thực người dùng. Tuy nhiên, cần đảm bảo rằng chỉ những người dùng được ủy quyền mới có quyền truy cập vào máy chủ cơ sở dữ liệu và tài khoản hệ điều hành của họ được bảo vệ bằng mật khẩu mạnh. Việc sử dụng xác thực hai yếu tố (2FA) cho các tài khoản hệ điều hành có thể tăng cường đáng kể bảo mật.
2.2. Hướng dẫn xác thực bằng Database trong Oracle 21c
Xác thực bằng cơ sở dữ liệu là một cơ chế an toàn hơn so với xác thực bởi hệ điều hành. Để sử dụng xác thực bằng cơ sở dữ liệu, mỗi người dùng phải được tạo một tài khoản với mật khẩu. 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. Để 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. Cú pháp tạo user là: CREAT USER user IDENTIFIED BY password [PASSWORD EXPIRE] [ACCOUNT {LOCK | UNLOCK}]. Cần lưu ý 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.
III. Mã Hóa Dữ Liệu Oracle 21c Hướng Dẫn Bảo Vệ Tối Ưu
Mã hóa dữ liệu là một cơ chế quan trọng để bảo vệ dữ liệu nhạy cảm. Oracle 21c cung cấp tính năng mã hóa dữ liệu trong suốt (TDE), cho phép mã hóa dữ liệu được lưu trữ trong bảng, tablespace hoặc toàn bộ database. TDE giúp bảo vệ dữ liệu được lưu trữ trên phương tiện (còn gọi là dữ liệu ở trạng thái nghỉ) trong trường hợp phương tiện lưu trữ hoặc tệp dữ liệu bị đánh cắp. Sau khi dữ liệu được mã hóa, dữ liệu này sẽ được giải mã một cách minh bạch cho người dùng hoặc ứng dụng được ủy quyền khi họ truy cập dữ liệu. Để ngăn chặn việc giải mã trái phép, TDE lưu trữ các khóa mã hóa trong mô-đun bảo mật bên ngoài cơ sở dữ liệu, được gọi là keystore (kho khóa). TDE chỉ mã hóa dữ liệu ở mức File, dữ liệu khi lưu trong File sẽ ở dạng mã hóa. Người dùng có quyền truy cập, ví dụ quyền SELECT đến dữ liệu thì mặc nhiên sẽ nhìn thấy dữ liệu ở dạng bản rõ. TDE sử dụng khóa mã hóa dữ liệu (Data Encryption Key – DEK) và khóa chính (Master Key). Có hai loại mã hóa chính là mã hóa theo cột và mã hóa theo tablespace. Mã hóa cột được sử dụng để bảo vệ dữ liệu nhạy cảm trong các cột của bảng. Mã hóa tablespace cho phép mã hóa toàn bộ vùng bảng.
3.1. Tìm hiểu về TDE Transparent Data Encryption trong Oracle
TDE là một tính năng mạnh mẽ giúp bảo vệ dữ liệu một cách minh bạch. Khi sử dụng TDE, người dùng hoặc ứng dụng CSDL không cần biết liệu dữ liệu trong một bảng cụ thể có được mã hóa trên đĩa hay không. Trong trường hợp các tệp dữ liệu trên đĩa hoặc phương tiện sao lưu bị đánh cắp, dữ liệu sẽ không bị xâm phạm. TDE mã hóa tất cả dữ liệu trong một vùng bảng, việc này có thể thay thế cho mã hóa cột nếu cần mã hóa nhiều cột trong một bảng. Theo [5] https://docs.com/en/database/oracle/oracle-database/21/dbseg/part_1.html, TDE sử dụng kiến trúc hai tầng, dựa trên khóa để mã hóa trong suốt và giải mã không gian bảng. Khóa chính TDE cũng có chức năng và cách thức lưu trữ như mã hóa cột TDE. Mã hóa tablespace TDE cũng cho phép phạm vi chỉ mục quét dữ liệu trong không gian bảng được mã hóa. Điều này là không thể với mã hóa cột TDE. Lưu ý, dữ liệu mã hóa được bảo vệ trong các hoạt động như JOIN và SORT.
3.2. Cách thức triển khai mã hóa Tablespace trong Oracle 21c
Để triển khai mã hóa tablespace trong Oracle 21c, cần thực hiện các bước sau: Tạo ví (wallet) trước khi tạo bảng với với cột mã hóa, phải tạo khóa bí mật lưu trong ví. Cần vào đường dẫn thư mục cài đặt Oracle và tạo thư mục wallet. Mở tập tin sqlnet.ora và thêm thông tin cấu hình cho thư mục wallet. Tiếp theo, đăng nhập bằng sysdba và khởi tạo Master Key bằng lệnh: ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "lmc". Sau đó, tạo tablespace mã hóa bằng mệnh đề ENCRYPTION với một tùy chọn USING để chỉ định thuật toán mã hóa. Nếu mệnh đề USING bị bỏ qua, thuật toán mã hóa mặc định là 'AES128'. Cuối cùng, cần tạo 1 user và 1 quota cho nó. Để kiểm tra việc mã hóa bằng cách tạo bảng và chèn các bản ghi vào bảng và kiểm tra file .dbf.
IV. Uỷ Quyền Oracle 21c Phương Pháp Kiểm Soát Truy Cập
Ủy quyền (Authorization) trong hệ quản trị cơ sở dữ liệu (DBMS) là quá trình xác định và quản lý quyền truy cập của người dùng đối với các tài nguyên dữ liệu trong cơ sở dữ liệu. Các quyền này thường dựa trên vai trò, thuộc tính của người dùng hoặc các tiêu chí khác do các chính sách bảo mật của tổ chức xác định. Điều này đảm bảo rằng chỉ những người dùng hoặc hệ thống được phép mới có thể thực hiện các hành động như truy vấn, thêm, sửa đổi, hoặc xóa dữ liệu. Nó đóng vai trò quan trọng trong việc bảo vệ dữ liệu nhạy cảm, duy trì tính toàn vẹn của hệ thống và đảm bảo trách nhiệm của người dùng. Cơ chế uỷ quyền trong Oracle 21c bao gồm tạo và quản lý tài khoản người dùng, đặc quyền người dùng và vai trò (Role). Mỗi tài khoản người dùng có một tên duy nhất, một phương thức xác thực, một tablespace mặc định, một tablespace chứa dữ liệu tạm thời (temp), một profile, một nhóm người dùng khởi tạo (được quản lý bởi Resource Manager), và trạng thái tài khoản. Đặc quyền người dùng cho phép quản trị viên xác định ai có thể truy cập dữ liệu nào, thực hiện hành động nào và truy cập dữ liệu đó như thế nào.
4.1. Quản lý tài khoản người dùng và đặc quyền trong Oracle
Để tạo tài khoản người dùng trong Oracle Database, sử dụng câu lệnh CREATE USER. Theo mặc định, một người dùng mới được tạo không có bất kỳ quyền nào trong cơ sở dữ liệu. Để loại bỏ tài khoản người dùng trong Oracle Database 21c, có thể sử dụng câu lệnh DROP USER + [username]. Tuy nhiên, cần lưu ý việc xóa tài khoản người dùng sẽ xóa tất cả các đối tượng được sở hữu bởi người dùng đó. Để cấp đặc quyền cho người dùng, có thể sử dụng câu lệnh GRANT. Cú pháp cơ bản như sau: GRANT privileges ON object TO [user | role];. Có hai loại đặc quyền chính trong Oracle Database: đặc quyền hệ thống và đặc quyền đối tượng. Ngoài ra, có thể sử dụng các tùy chọn bổ sung để tinh chỉnh cách thức gán quyền. Trong Oracle Database 21c, để thu hồi các đặc quyền đã được cấp trước đó cho người dùng hoặc nhóm người dùng, sử dụng câu lệnh REVOKE. Cấu trúc cơ bản của câu lệnh REVOKE: REVOKE privileges ON object FROM [user | role];
4.2. Sử dụng Roles để đơn giản hóa việc quản lý ủy quyền
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 vai trò (Roles). Các vai trò có thể được tạo ra bằng việc sử dụng câu lệnh theo cú pháp: CREATE ROLE role_name [NOT IDENTIFIED | IDENTIFIED {BY password | EXTERNALLY }]. Để sửa lại vai trò đã tồn tại, sử dụng cú pháp: ALTER ROLE role_name {NOT IDENTIFIED | IDENTIFIED {BY password | EXTERNALLY }};. Khi đã có sẵn vai trò, có thể gán quyền cho người dùng qua các vai trò đó qua cú pháp: GRANT role_name TO {user|role|PUBLIC} [WITH ADMIN OPTION]. 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 người dùng. Việc sử dụng Roles giúp đơn giản hóa việc quản lý ủy quyền bằng cách cho phép gán các quyền cho một nhóm người dùng thay vì phải gán quyền cho từng người dùng riêng lẻ.
V. Kiểm Toán Oracle 21c Cách Giám Sát An Ninh Hệ Thống
Kiểm toán (auditing) được hiểu là toàn bộ các hoạt động giám sát và ghi lại những gì xảy ra đối với hệ thống công nghệ thông tin. Các thông tin được ghi lại có thể là những thay đổi về trạng thái hoạt động của hệ thống hay các tương tác qua lại giữa hệ thống và người dùng. Dựa trên những bản ghi kiểm toán, quản trị viên cơ sở dữ liệu (DBA) sẽ phát hiện kịp thời những tấn công hay lỗ hổng ảnh hưởng đến cơ sở dữ liệu, từ đó ngăn chặn hành vi phá hoại hay xâm phạm của tin tặc, nhanh chóng sửa đổi những bất thường của hệ thống. Oracle cung cấp các cơ chế kiểm toán cơ bản trong CSDL bao gồm kiểm toán bắt buộc, kiểm toán chuẩn, kiểm toán dựa trên giá trị, kiểm toán mịn và kiểm toán DBA. Các bản ghi kiểm toán (Audit record) bao gồm các thông tin như hoạt động đã được kiểm toán, người dùng thực hiện hoạt động và ngày giờ của hoạt động. Các bản ghi kiểm toán có thể được lưu trữ trong một bảng từ điển dữ liệu, gọi là dấu vết kiểm toán cơ sở dữ liệu (Database audit trail), hoặc trong các tệp hệ điều hành, gọi là dấu vết kiểm toán hệ điều hành (Operating system audit trail). AUD$ trong Oracle là một bảng được sử dụng để lưu trữ các bản ghi kiểm toán (audit records) trong cơ sở dữ liệu.
5.1. Các loại kiểm toán chính trong Oracle Database 21c
Các loại kiểm toán chính bao gồm Statement Auditing (Kiểm toán câu lệnh), Privilege auditing (Kiểm toán quyền) và Schema Object Auditing (Kiểm toán đối tượng lược đồ). Statement Auditing là kiểm toán những lệnh hoặc nhóm câu lệnh trên từng đối tượng. Có thể kiểm toán trên mọi người dùng hoặc trên 1 nhóm người dùng cụ thể hoặc trên Role. Privilege auditing là việc kiểm toán các câu lệnh sử dụng quyền hệ thống. Schema Object Auditing có thể kiểm toán toàn bộ các câu lệnh SELECT và DML được cho phép bởi quyền đối tượng lược đồ (schema object privileges) như câu lệnh SELECT hoặc DELETE trên một bảng cụ thể. Các câu lệnh GRANT và REVOKE điều khiển các quyền này cũng được kiểm toán.
5.2. Các công cụ kiểm toán hiệu quả trong Oracle 21c
Oracle cung cấp các công cụ kiểm toán hiệu quả như Oracle Audit, kiểm toán bằng trigger, kiểm toán bằng application server log và kiểm toán mịn (Fine-grained auditing- FGA). Oracle Audit có thể kiểm toán tất cả các quyền gán cho người dùng hoặc role trong CSDL. Kiểm toán bằng trigger cho phép tự động thực thi khi có các sự kiện của hệ thống xảy ra. Kiểm toán bằng application server log là dạng kiểm toán cơ bản. Fine-Grained Auditing (FGA) do package DBMS_FGA quản lý, kiểm toán những truy cập dựa theo nội dung và có thể kiểm toán được cấp đến hàng và cột.
VI. VPD Oracle 21c Hướng Dẫn Xây Dựng Bảo Mật Tầng Dữ Liệu
VPD (Oracle Virtual Private Database) là một tính năng mạnh mẽ trong cơ sở dữ liệu Oracle giúp tăng cường bảo mật dữ liệu bằng cách kiểm soát truy cập dữ liệu ở mức hàng và cột. Về cơ bản, khi người dùng gửi một câu lệnh SQL để truy cập một bảng, khung nhìn (view) hoặc từ đồng nghĩa (synonym) được bảo vệ bởi VPD, cơ sở dữ liệu Oracle sẽ tự động sửa đổi câu lệnh đó để thêm vào một mệnh đề WHERE động. Mệnh đề này được tạo ra bởi một hàm thực hiện chính sách bảo mật, gọi là predicate, và nó giới hạn dữ liệu mà người dùng có thể truy cập. Việc này diễn ra một cách trong suốt với người dùng, nghĩa là họ không thấy được sự thay đổi của câu lệnh SQL. Các thành phần của VPD bao gồm một chính sách VPD sử dụng một hàm để tạo ra mệnh đề WHERE động và một chính sách để gắn hàm này vào các đối tượng cần bảo vệ.
6.1. Tìm hiểu các thành phần cơ bản của Oracle VPD
Một chính sách VPD sử dụng một hàm để tạo ra mệnh đề WHERE động và một chính sách để gắn hàm này vào các đối tượng cần bảo vệ. Để tạo ra mệnh đề WHERE động, người dùng phải tạo ra một hàm (không phải thủ tục) để xác định các ràng buộc này. Hàm này là một hàm với quyền của người định nghĩa (definer's rights). Oracle Database sẽ tạo ra một predicate (hàm được tạo bởi chính sách bảo mật) được ủy quyền bởi chủ sở hữu nhưng trong cùng phiên làm việc của người dùng hiện tại, sao cho các biến toàn cục PL/SQL được định nghĩa trong hàm sẽ được sử dụng. Chính sách Oracle Virtual Private Database (VPD) liên kết hàm VPD với bảng, view hoặc từ đồng nghĩa bằng cách sử dụng gói DBMS_RLS. Chính sách này được tạo bằng cách sử dụng gói DBMS_RLS.
6.2. Cách cấu hình chính sách VPD hiệu quả trong Oracle 21c
Để cấu hình chính sách VPD hiệu quả, người dùng cần liên kết hàm VPD với bảng, view hoặc từ đồng nghĩa trong cơ sở dữ liệu. Gói DBMS_RLS PL/SQL có thể gắn chính sách vào bảng, view, hoặc từ đồng nghĩa. Người dùng cần chỉ định bảng, view, hoặc synonym muốn thêm chính sách, và một tên cho chính sách. Người dùng cũng có thể chỉ định thông tin khác như loại câu lệnh mà chính sách kiểm soát (SELECT, INSERT, UPDATE, DELETE, CREATE INDEX, hoặc ALTER INDEX). Người dùng có thể kiểm soát hiển thị dữ liệu cột bằng chính sách bằng cách sử dụng chính sách cấp cột cho Oracle Virtual Private Database hoặc bằng cách sử dụng giấu cột để hiển thị các giá trị NULL cho các cột nhạy cảm (Column masking).