Bối cảnh và vấn đề nghiên cứu
Trong xu thế phát triển của công nghệ thông tin, nhu cầu lưu trữ và xử lý dữ liệu có cấu trúc trên các hệ quản trị cơ sở dữ liệu (HQTCSDL) ngày càng đóng vai trò cốt lõi trong hoạt động vận hành của các tổ chức. Đối với các cơ quan nhà nước, doanh nghiệp viễn thông và hệ thống ngân hàng, việc bảo vệ tính bảo mật của dữ liệu là yêu cầu cấp thiết, do thông tin lưu trữ thường bao gồm dữ liệu cá nhân, thông tin tài chính và kế hoạch kinh doanh. PostgreSQL là một HQTCSDL quan hệ đối tượng mã nguồn mở tiên tiến với hơn 15 năm phát triển, sở hữu độ tin cậy cao, tính toàn vẹn dữ liệu và hỗ trợ nhiều tính năng chuyên sâu như kiểm soát đồng thời đa phiên bản (MVCC), truy vấn song song và sao chép dữ liệu dạng luồng.
Tuy nhiên, việc triển khai HQTCSDL luôn đối mặt với nhiều mối đe dọa an toàn thông tin cả từ bên trong lẫn bên ngoài. Nhằm bảo vệ an toàn cho hệ thống dữ liệu trong môi trường sản xuất với chi phí tối ưu, sinh viên Nguyễn Quốc Anh đã thực hiện đồ án tốt nghiệp với đề tài "Tìm hiểu, triển khai một số cơ chế mã hoá dữ liệu trong HQTCSDL PostgreSQL".
Mục tiêu và nhiệm vụ nghiên cứu của đồ án được xác định cụ thể như sau:
- Nghiên cứu tổng quan về HQTCSDL PostgreSQL: lịch sử hình thành, kiến trúc các thành phần bộ nhớ, các tiến trình nền và cấu trúc cơ sở dữ liệu.
- Phân tích các nguy cơ mất an toàn thông tin trong triển khai cơ sở dữ liệu PostgreSQL (tấn công nội bộ, tấn công từ bên ngoài, leo thang đặc quyền, điểm yếu nền tảng, xác thực yếu và tấn công từ chối dịch vụ SYN Flood).
- Khảo sát các cơ chế an toàn thông tin tích hợp trong PostgreSQL bao gồm quản lý phân quyền (Role/User), kiểm toán an ninh (pgAudit) và chính sách kiểm soát bảo mật mức hàng (Row Level Security - RLS).
- Phân tích nguyên lý của hai cơ chế mã hóa trọng tâm: cơ chế mã hóa dữ liệu lưu trữ trong suốt (Transparent Data Encryption - TDE) và cơ chế mã hóa kênh truyền mạng bằng giao thức TLS 1.3.
- Xây dựng mô hình thực nghiệm, tiến hành cài đặt PostgreSQL phiên bản 12 trên nền tảng Linux, cấu hình chứng thư số và triển khai bảo vệ dữ liệu thông qua TLS 1.3 và mã hóa dữ liệu mức cột, sau đó dùng công cụ bắt gói tin để kiểm chứng kết quả.
Đối tượng nghiên cứu của đồ án là các giải pháp mã hóa dữ liệu và các cơ chế bảo đảm an toàn thông tin trong HQTCSDL PostgreSQL. Phạm vi nghiên cứu về mặt không gian và kỹ thuật tập trung vào phiên bản PostgreSQL 12 thiết lập theo mô hình Client - Server trên hệ điều hành Linux, giao thức mật mã TLS 1.3 và tiện ích mở rộng phục vụ mã hóa cột. Phạm vi thời gian nghiên cứu được thực hiện và hoàn thành vào tháng 6 năm 2023 tại Trường Đại học Quản lý và Công nghệ Hải Phòng.
Cơ sở lý thuyết và phương pháp
Cơ sở lý thuyết của đồ án dựa trên các mô hình an toàn thông tin kinh điển và tài liệu kỹ thuật chuẩn của hệ quản trị cơ sở dữ liệu PostgreSQL:
- Khung an toàn thông tin cơ sở dữ liệu (CIA Triad): Đánh giá hệ thống dựa trên ba thuộc tính nền tảng gồm tính bí mật (Confidentiality), tính toàn vẹn (Integrity) và tính sẵn sàng (Availability).
- Mô hình kiến trúc bộ nhớ và tiến trình của PostgreSQL: Phân tích các vùng nhớ dùng chung (Shared Buffer, WAL Buffer, CLOG Buffer, Work Memory, Maintenance Work Memory) cùng hệ thống tiến trình Postmaster, Background processes và Backend processes.
- Mô hình kiểm soát truy cập và kiểm toán an ninh: Cơ chế phân quyền dựa trên vai trò (Role-Based Access Control) thông qua các lệnh
CREATE ROLE, GRANT; cơ chế kiểm toán hoạt động truy vấn qua tiện ích mở rộng pgAudit; mô hình chính sách bảo mật mức hàng (Row Level Security) sử dụng các biểu thức điều kiện USING và WITH CHECK.
- Lý thuyết mật mã học ứng dụng:
- Cơ chế mã hóa dữ liệu trong suốt (TDE): Kiến trúc quản lý khóa hai tầng (Two-tier key) bao gồm khóa mã hóa chính (Master Encryption Key - MEK) và khóa mã hóa dữ liệu (Data Encryption Key - DEK) hoặc khóa bảng (Table Key), sử dụng các thuật toán mã hóa đối xứng như AES, 3DES, Blowfish.
- Cơ chế bảo mật kênh truyền Transport Layer Security phiên bản 1.3 (TLS 1.3 theo chuẩn IETF ban hành tháng 8/2018): Cấu trúc 3 giao thức thành phần (Handshake Protocol, Record Protocol, Alert Protocol) và hạ tầng khóa công khai quản lý chứng thư số X.509 thông qua OpenSSL.
Về phương pháp nghiên cứu thực tế, tác giả kết hợp hai phương pháp chính:
- Phương pháp phân tích - tổng hợp tài liệu học thuật và kỹ thuật: Thu thập, đối chiếu tài liệu chính thức từ cộng đồng PostgreSQL, các báo cáo nghiên cứu gốc của Michael Stonebraker (dự án Postgres tại Đại học California ở Berkeley từ năm 1986), các bản nháp tiêu chuẩn TLS của IETF và tài liệu hướng dẫn an ninh cơ sở dữ liệu.
- Phương pháp thực nghiệm kỹ thuật và kiểm thử hệ thống: Xây dựng môi trường thử nghiệm bao gồm máy chủ cơ sở dữ liệu PostgreSQL 12 và máy trạm khách (Client); thực hiện sinh chứng thư số tự ký bằng OpenSSL; cấu hình tham số bảo mật trên các tệp cấu hình hệ thống
postgresql.conf và pg_hba.conf; sử dụng phần mềm phân tích lưu lượng mạng Wireshark để bắt và đối chiếu các gói tin trước và sau khi kích hoạt TLS 1.3; thực hiện kiểm tra mã hóa và giải mã dữ liệu mức cột bằng hàm chuyên dụng pgp_sym_decrypt().
Nguồn dữ liệu sử dụng trong nghiên cứu bao gồm bộ cài đặt phần mềm nguồn mở PostgreSQL 12, công cụ OpenSSL, tiện ích pgAudit, phần mềm Wireshark và tập dữ liệu thử nghiệm giả lập (dummy_table) được khởi tạo nội bộ phục vụ việc kiểm thử các câu lệnh thao tác dữ liệu (DML).
Thiết kế và triển khai
Hệ thống bảo mật cơ sở dữ liệu trong đồ án được thiết kế theo mô hình mạng mạng Client - Server, tập trung giải quyết bài toán chống nghe lén dữ liệu trên đường truyền và chống lộ lọt thông tin nhạy cảm trong không gian lưu trữ.
+-------------------+ Kênh truyền mạng +-------------------------------+
| Máy Client | <==================================> | Máy chủ PostgreSQL |
| (Ứng dụng / psql) | Mã hóa TLS 1.3 | (Dịch vụ PostgreSQL 12) |
+-------------------+ (Kiểm thử: Wireshark) +-------------------------------+
|
v
+-------------------------------+
| Lưu trữ dữ liệu |
| - Kiểm soát truy cập: RLS |
| - Ghi log: pgAudit |
| - Mã hóa cột: pgcrypto/TDE |
+-------------------------------+
Quy trình triển khai kỹ thuật được thực hiện qua các bước tuần tự:
-
Khởi tạo và thiết lập hạ tầng chứng thư số (OpenSSL):
- Tạo khóa riêng và chứng thư số gốc CA:
openssl req -new -nodes -text -out root.csr -keyout root.key -subj "/CN=root.com"
chmod og-rwx root.key
openssl x509 -req -in root.csr -text -days 3650 -extfile /etc/ssl/openssl.cnf -extensions v3_ca -signkey root.key -out root.crt
- Tạo yêu cầu ký chứng thư và phát hành chứng thư số cho máy chủ:
openssl req -new -nodes -text -out server.csr -keyout server.key -subj "/CN=dbhost.com"
chmod og-rwx server.key
openssl x509 -req -in server.csr -text -days 365 -CA root.crt -CAkey root.key -CAcreateserial -out server.crt
-
Cấu hình mã hóa kênh truyền TLS 1.3:
- Trong tệp
postgresql.conf, kích hoạt tham số ssl = on, khai báo đường dẫn tới tệp chứng thư ssl_cert_file = 'server.crt' và khóa bí mật ssl_key_file = 'server.key', chỉ định phiên bản giao thức tối thiểu là TLS 1.3.
- Trong tệp
pg_hba.conf, thiết lập chính sách kết nối máy trạm bắt buộc sử dụng kênh truyền bảo mật thông qua bản ghi hostssl.
- Tiến hành kiểm thử kết nối bằng
psql và sử dụng phần mềm Wireshark bắt gói tin truyền nhận giữa Client và Server để kiểm tra dữ liệu tầng vận tải.
-
Cấu hình kiểm toán và kiểm soát truy cập:
- Cài đặt gói
pgaudit14_12.x86_64 trên Linux thông qua trình quản lý gói yum.
- Thêm tiện ích vào tệp cấu hình:
shared_preload_libraries = 'pgaudit, pg_stat_statements'.
- Thiết lập các tham số ghi nhật ký kiểm toán trong PostgreSQL (
pgaudit.log, pgaudit.log_catalog, pgaudit.log_level).
- Thiết lập chính sách bảo mật mức hàng RLS trên bảng dữ liệu bằng lệnh
ALTER TABLE ... ENABLE ROW LEVEL SECURITY và khai báo biểu thức chính sách thông qua CREATE POLICY.
-
Triển khai mã hóa dữ liệu lưu trữ mức cột (TDE):
- Thiết lập cơ chế mã hóa mức cột bảo vệ các trường dữ liệu nhạy cảm.
- Thực thi các câu lệnh mã hóa dữ liệu đầu vào và kiểm tra truy vấn dữ liệu đầu ra với hàm giải mã đối xứng
pgp_sym_decrypt().
Nội dung chính theo từng chương
Chương 1. Tổng quan về HQTCSDL PostgreSQL
Chương 1 khái quát quá trình phát triển của PostgreSQL từ dự án nghiên cứu Postgres năm 1986 do Giáo sư Michael Stonebraker khởi xướng tại Berkeley dưới sự tài trợ của DARPA, ARO và NSF. Sau các phiên bản thử nghiệm, dự án Postgres95 (năm 1994 do Andrew Yu và Jolly Chen phát triển) đã chuyển đổi ngôn ngữ truy vấn PostQUEL sang chuẩn SQL, tối ưu mã nguồn viết bằng ANSI C giảm 25% dung lượng và cải thiện hiệu năng 30-50% theo chuẩn Wisconsin. Đến năm 1996, hệ thống chính thức mang tên PostgreSQL với phiên bản khởi đầu 6.0.
Văn bản cung cấp các số liệu kỹ thuật chính xác về giới hạn khả năng xử lý của PostgreSQL:
| Tiêu chí kỹ thuật |
Giá trị giới hạn |
| Dung lượng tối đa của cơ sở dữ liệu |
Không giới hạn |
| Dung lượng bảng tối đa |
32 TB |
| Dung lượng tối đa của một cột |
1,6 TB |
| Dung lượng tối đa của một trường |
1 GB |
| Số hàng tối đa trong mỗi bảng |
Không giới hạn |
| Số cột tối đa của mỗi bảng |
250 - 1600 (tùy thuộc loại cột) |
| Số chỉ số (index) tối đa trong mỗi bảng |
Không giới hạn |
Về kiến trúc hệ thống, văn bản bóc tách chi tiết ba thành phần:
- Bộ nhớ chung (Shared Memory): Bao gồm Shared Buffer (giảm thiểu I/O đĩa, lưu trữ dirty pages), WAL Buffer (mặc định chiếm 1/16 dung lượng Shared Buffer để ghi nhận nhật ký giao dịch trước khi đẩy xuống các WAL segments), CLOG Buffer (lưu trạng thái commit của các giao dịch), Memory for Lock (quản lý khóa thông qua
max_locks_per_transaction), Vacuum Buffer (autovacuum_work_mem), Work Memory (work_mem, mặc định 4 MB dùng cho sắp xếp và băm), Maintenance Work Memory (maintenance_work_mem, mặc định 64 MB dùng cho VACUUM, CREATE INDEX) và Temp Buffer (temp_buffers, mặc định 8 MB).
- Các tiến trình nền (Processes): Gồm Postmaster Daemon (tiến trình khởi tạo đầu tiên), các Background processes (Background writer, Checkpointer, Autovacuum launcher, WAL writer, Statistics collector, Logging collector, Archiver), Backend processes (quản lý kết nối người dùng, giới hạn qua
max_connections với mặc định 100 kết nối) và Client process.
- Cấu trúc dữ liệu: Khởi tạo qua lệnh
initdb() gồm Database Cluster, ba cơ sở dữ liệu mặc định (template0, template1, postgres), cấu trúc Tablespace, Schema logic (mặc định là public) và ba phân loại bảng (unlogged table, temporary table, table thông thường).
Chương 1 cũng hệ thống hóa cú pháp các câu lệnh SQL căn bản (CREATE TABLE, INSERT, SELECT, UPDATE, DELETE, DROP TABLE) kèm các tham số điều kiện WHERE, mệnh đề RETURNING và tổng kết các ưu điểm (hỗ trợ ACID, kiểu dữ liệu phong phú, cộng đồng lớn) cùng nhược điểm (tiêu tốn bộ nhớ, cấu hình phức tạp cho người mới).
Chương 2. Cơ chế mã hoá trong HQTCSDL PostgreSQL
Chương 2 đi sâu vào lý thuyết an toàn thông tin và các giải pháp phòng hộ trong PostgreSQL. Trước hết, tác giả phân loại các nguy cơ an ninh điển hình:
- Tấn công bên trong và bên ngoài: Do nhân viên quản trị lạm quyền truy cập vật lý hoặc kẻ tấn công bên ngoài dùng kỹ nghệ xã hội (social engineering) chiếm tài khoản.
- Tấn công leo thang đặc quyền: Khai thác quyền mặc định của các tài khoản được tạo tự động gồm
Admin (toàn quyền), Reader (chỉ đọc) và Writer (tạo, cập nhật, xóa) khi quản trị viên không thay đổi mật khẩu mặc định.
- Lỗ hổng nền tảng hệ điều hành (Windows, Linux, Unix, macOS) và xác thực yếu (đặt mật khẩu đơn giản, không giới hạn số lần đăng nhập sai).
- Tấn công từ chối dịch vụ (DoS/DDoS) qua kỹ thuật SYN Flood: Khai thác quy trình bắt tay 3 bước của giao thức TCP trên các cổng dịch vụ mở (từ 2424 đến 2440), gửi ồ ạt gói tin SYN giả mạo nhằm chiếm dụng toàn bộ hàng đợi kết nối của máy chủ.
Để bảo vệ hệ thống, tác giả phân tích ba cơ chế an toàn nội tại:
- Phân quyền Role và Group: Sử dụng
CREATE ROLE, CREATE USER, gán quyền với các mệnh đề GRANT (CONNECT, USAGE, SELECT, INSERT, UPDATE, DELETE, TRUNCATE, EXECUTE, ALL PRIVILEGES) và quản lý quyền mặc định với ALTER DEFAULT PRIVILEGES.
- Kiểm toán an ninh với pgAudit: Ghi vết chi tiết các thao tác truy vấn trên bảng và danh mục hệ thống thông qua các tham số cấu hình:
pgaudit.log, pgaudit.log_catalog, pgaudit.log_client, pgaudit.log_level, pgaudit.log_parameter, pgaudit.log_relation, pgaudit.log_statement_once và pgaudit.role.
- Chính sách bảo mật cấp hàng (Row Level Security): Áp dụng lệnh
CREATE POLICY theo chế độ cho phép (PERMISSIVE kết hợp toán tử OR) hoặc hạn chế (RESTRICTIVE kết hợp toán tử AND).
Quy tắc áp dụng biểu thức kiểm tra của chính sách RLS cho các lệnh SQL được tác giả tổng hợp cụ thể:
| Lệnh thao tác |
Phạm vi áp dụng biểu thức USING |
Phạm vi áp dụng biểu thức WITH CHECK |
| SELECT |
Áp dụng cho các hàng có sẵn |
Không hỗ trợ |
| SELECT FOR UPDATE/SHARE |
Áp dụng cho các hàng có sẵn |
Không hỗ trợ |
| INSERT |
Không hỗ trợ |
Áp dụng cho các hàng mới được thêm vào |
| INSERT ... RETURNING |
Áp dụng cho các hàng mới được thêm vào |
Áp dụng cho các hàng mới được thêm vào |
| UPDATE |
Áp dụng cho các hàng có sẵn và hàng mới |
Áp dụng cho các hàng có sẵn và hàng mới |
| DELETE |
Áp dụng cho các hàng có sẵn |
Không hỗ trợ |
| ON CONFLICT DO UPDATE |
Áp dụng cho các hàng có sẵn và hàng mới |
Áp dụng cho các hàng có sẵn và hàng mới |
Về cơ chế mã hóa, chương 2 tập trung vào hai giải pháp chính:
- Cơ chế mã hóa dữ liệu trong suốt (TDE): Hoạt động theo kiến trúc khóa hai tầng. Khóa mã hóa chính (Master Encryption Key) lưu trữ tại mô-đun an toàn bên ngoài cơ sở dữ liệu để bảo vệ khóa bảng hoặc khóa mã hóa dữ liệu (DEK). TDE được chia làm hai loại: mã hóa cột TDE (bảo vệ các trường nhạy cảm như thẻ tín dụng, số an sinh xã hội) và mã hóa không gian bảng TDE (mã hóa toàn bộ các tệp vật lý trên đĩa). Thuật toán hỗ trợ gồm AES, 3DES và Blowfish.
- Cơ chế mã hóa kênh truyền TLS 1.3: Hoạt động tại tầng vận tải trong mô hình mạng Client - Server, bao gồm ba giai đoạn bắt tay:
- Client Hello: Gửi số ngẫu nhiên (Nonce), phiên bản hỗ trợ, danh sách
Supported Cipher Suites và tham số trao đổi khóa công khai Key_share.
- Server Hello: Phản hồi với thuật toán được chọn (
Selected Cipher Suite), tham số Key_share, chứng thư số máy chủ (Certificate) và thông điệp mã hóa kết thúc phần bắt tay.
- Finished: Hoàn tất bắt tay và bắt đầu truyền dữ liệu ứng dụng được mã hóa đối xứng thông qua giao thức bản ghi (Record Protocol).
Chương 3. Triển khai cài đặt một số cơ chế mã hóa dữ liệu trong PostgreSQL
Chương 3 trình bày các bước thiết lập thực nghiệm và đánh giá kết quả triển khai bảo mật trên máy chủ PostgreSQL 12.
Nội dung thực nghiệm bao gồm:
- Cài đặt hệ thống: Thiết lập kho lưu trữ PostgreSQL 12 repository, cài đặt dịch vụ PostgreSQL 12 trên Linux, khởi động dịch vụ, tạo database cluster, tạo cơ sở dữ liệu, khởi tạo tài khoản người dùng và thiết lập mật khẩu bảo mật.
- Kiểm thử mã hóa kênh truyền với TLS 1.3:
- Trạng thái chưa bật TLS 1.3: Kết nối từ Client đến Server ở chế độ văn bản rõ (plaintext). Sử dụng phần mềm Wireshark bắt gói tin trên giao diện mạng, kết quả cho thấy toàn bộ nội dung câu lệnh truy vấn SQL và dữ liệu nhạy cảm gửi về hiển thị rõ ràng, tạo nguy cơ lộ dữ liệu khi bị bắt gói tin trên đường truyền.
- Trạng thái đã kích hoạt TLS 1.3: Sau khi cấu hình tệp
postgresql.conf và pg_hba.conf, máy trạm thiết lập kết nối an toàn. Dữ liệu bắt được qua Wireshark ghi nhận các gói tin trao đổi đều ở dạng bản mã thuộc giao thức TLSv1.3 Record Layer: Application Data Protocol: Hypertext Transfer Protocol (hoặc PostgreSQL protocol), hoàn toàn không thể đọc được nội dung gốc.
- Kiểm thử mã hóa lưu trữ TDE mức cột:
- Khởi tạo bảng dữ liệu mẫu, thiết lập cơ chế mã hóa mức cột cho các trường cần bảo mật.
- Thực hiện các câu lệnh thao tác dữ liệu và kiểm chứng tính năng giải mã thời gian thực thông qua hàm
pgp_sym_decrypt(), đảm bảo người dùng hợp lệ có khóa mới có thể giải mã và xem được nội dung gốc.
Kết quả và đóng góp
Đồ án ghi nhận các kết quả cụ thể thông qua hệ thống dữ liệu thực nghiệm:
- Xây dựng thành công môi trường máy chủ PostgreSQL 12 trên nền tảng Linux, quản lý phân quyền chặt chẽ giữa các nhóm người dùng và thiết lập cấu hình an toàn hệ thống.
- Triển khai hoàn chỉnh quy trình phát hành chứng thư số nội bộ bằng OpenSSL bao gồm Root CA (thời hạn 3650 ngày) và Server Certificate (thời hạn 365 ngày), cấu hình thành công kênh truyền bảo mật TLS 1.3.
- Kiểm chứng thực nghiệm bằng Wireshark chứng minh sự khác biệt rõ rệt: ngăn chặn hoàn toàn nguy cơ đọc trộm dữ liệu trên đường truyền mạng so với giao tiếp không mã hóa ban đầu.
- Triển khai thành công kỹ thuật mã hóa mức cột, cho phép lưu trữ an toàn các thông tin nhạy cảm trên đĩa cứng và truy vấn thông qua hàm giải mã
pgp_sym_decrypt().
Tác giả đề xuất các giải pháp kỹ thuật nhằm tăng cường an ninh cơ sở dữ liệu:
- Thay đổi toàn bộ mật khẩu mặc định của các tài khoản hệ thống ngay sau khi khởi tạo (
Admin, Reader, Writer).
- Áp dụng chính sách mật khẩu mạnh (độ dài tối thiểu từ 8 ký tự, kết hợp chữ hoa, chữ thường và ký tự đặc biệt).
- Thiết lập quy tắc kiểm soát số lần đăng nhập sai (khóa đăng nhập sau 5 lần thất bại trong khoảng 3 đến 5 giờ) nhằm chống tấn công dò quét vét cạn (brute-force).
- Phân chia phân vùng mạng logic giữa máy chủ cơ sở dữ liệu và mạng người dùng nội bộ, kết hợp triển khai tường lửa và hệ thống phát hiện/ngăn chặn xâm nhập mạng (IDS/IPS).
- Kích hoạt cơ chế kiểm toán pgAudit và bảo mật mức hàng RLS để giám sát và cô lập dữ liệu theo từng nhóm người dùng.
Đóng góp chính của đồ án là đã hệ thống hóa cơ sở lý thuyết về an toàn cơ sở dữ liệu trong PostgreSQL, đồng thời cung cấp tài liệu hướng dẫn thực hành chi tiết từng bước (từ tạo chứng thư OpenSSL, hiệu chỉnh tham số cấu hình, đến kiểm thử bằng Wireshark) có giá trị ứng dụng trực tiếp cho công tác quản trị mạng và bảo mật cơ sở dữ liệu.
Hạn chế và hướng nghiên cứu tiếp
Từ phạm vi và nội dung thực nghiệm của văn bản, đồ án tồn tại một số điểm hạn chế:
- Phạm vi thử nghiệm mã hóa lưu trữ mới tập trung triển khai ở mức cột bằng hàm mật mã, chưa triển khai thực nghiệm toàn diện giải pháp mã hóa không gian bảng TDE (tablespace encryption) ở mức toàn bộ phân vùng vật lý.
- Môi trường thử nghiệm triển khai trên mô hình mạng cục bộ với tập dữ liệu mẫu quy mô nhỏ, chưa đo lường định lượng mức độ suy giảm hiệu năng (overhead về CPU, RAM và độ trễ đọc/ghi I/O) khi hệ thống hoạt động dưới tải lớn kết hợp đồng thời TLS 1.3 và pgAudit.
Các hướng mở rộng nghiên cứu tiếp theo được đề cập:
- Mở rộng triển khai mã hóa trong suốt toàn bộ không gian bảng TDE đối với các cơ sở dữ liệu quy mô lớn vượt mức terabyte.
- Đo kiểm, đánh giá định lượng hiệu năng truy vấn và tối ưu hóa các tham số bộ nhớ (
shared_buffers, work_mem) khi kích hoạt đầy đủ các lớp bảo vệ an ninh.
- Nghiên cứu tích hợp các mô-đun an toàn phần cứng (HSM) hoặc dịch vụ quản lý khóa chuyên biệt (KMS) bên ngoài để quản lý khóa mã hóa chính (Master Encryption Key).
Giá trị tham khảo
Đồ án là tài liệu kỹ thuật có giá trị tham khảo thiết thực cho các đối tượng:
- Sinh viên ngành Công nghệ thông tin, An toàn thông tin, Quản trị mạng: Tham khảo cấu trúc một đồ án tốt nghiệp kỹ thuật; học hỏi phương pháp thiết lập mô hình Client - Server an toàn và cách thức dùng Wireshark để phân tích giao thức mạng.
- Kỹ sư quản trị cơ sở dữ liệu (DBA) và quản trị hệ thống: Sử dụng trực tiếp các chỉ dẫn cấu hình thực tế cho PostgreSQL:
- Bảng tra cứu các giới hạn dung lượng và bảng quy tắc ánh xạ chính sách bảo mật mức hàng RLS (
USING và WITH CHECK).
- Quy trình sinh chứng thư số đa cấp bằng OpenSSL tương thích với dịch vụ cơ sở dữ liệu.
- Bộ tham số cấu hình kiểm toán pgAudit trên tệp cấu hình
postgresql.conf.
Câu hỏi thường gặp
1. HQTCSDL PostgreSQL quy định các giới hạn dung lượng tối đa đối với bảng, cột và trường dữ liệu như thế nào?
Theo bảng số liệu kỹ thuật tại Chương 1 của đồ án, dung lượng tối đa của một bảng trong PostgreSQL là 32 TB; dung lượng tối đa của một cột là 1,6 TB; dung lượng tối đa của một trường là 1 GB; số cột tối đa trong một bảng dao động từ 250 đến 1600 cột tùy loại; trong khi dung lượng tổng của cơ sở dữ liệu, số hàng và số chỉ số trong mỗi bảng là không giới hạn.
2. Giao thức TLS 1.3 thực hiện quy trình bắt tay (handshake) với máy chủ PostgreSQL qua các bước nào?
Quá trình bắt tay TLS 1.3 gồm 3 bước: Bước 1, Client gửi gói tin Client Hello chứa số ngẫu nhiên (Nonce), phiên bản giao thức, danh sách bộ thuật toán hỗ trợ (Supported Cipher Suites) và giá trị khóa công khai (Key_share). Bước 2, Server phản hồi gói tin Server Hello xác định bộ thuật toán lựa chọn (Selected Cipher Suite), khóa công khai (Key_share) và chứng thư số (Certificate). Bước 3, hai bên trao đổi thông điệp Finished để hoàn tất và bắt đầu truyền dữ liệu ứng dụng mã hóa qua Record Protocol.
3. Trong cơ chế bảo mật mức hàng (RLS), mệnh đề USING và WITH CHECK khác nhau như thế nào?
Biểu thức USING dùng để kiểm tra các hàng dữ liệu hiện có trong bảng nhằm quyết định hàng nào được phép hiển thị cho người dùng (áp dụng cho lệnh SELECT, UPDATE, DELETE). Biểu thức WITH CHECK dùng để kiểm tra tính hợp lệ của các hàng mới được thêm vào hoặc cập nhật nhằm quyết định thao tác có được thực thi hay không (áp dụng cho lệnh INSERT và UPDATE). Lệnh SELECT và DELETE không hỗ trợ biểu thức WITH CHECK.
4. Kiến trúc hai tầng trong cơ chế mã hóa dữ liệu trong suốt (TDE) vận hành ra sao?
TDE sử dụng kiến trúc khóa hai tầng gồm Khóa mã hóa chính (Master Encryption Key - MEK) và Khóa mã hóa dữ liệu (Data Encryption Key - DEK) hoặc khóa bảng (Table Key). Khóa chính MEK được lưu trữ an toàn trong mô-đun bên ngoài cơ sở dữ liệu để mã hóa và bảo vệ khóa DEK. Khóa DEK được dùng để trực tiếp mã hóa và giải mã dữ liệu trên các khối lưu trữ hoặc cột dữ liệu theo thời gian thực bằng các thuật toán như AES, 3DES hoặc Blowfish.
5. Tác giả đã dùng công cụ gì để kiểm chứng hiệu quả của việc bật TLS 1.3 và kết quả ghi nhận như thế nào?
Tác giả sử dụng phần mềm phân tích lưu lượng mạng Wireshark. Khi chưa thiết lập TLS 1.3, gói tin bắt được hiển thị rõ ràng nội dung câu lệnh truy vấn SQL và cấu trúc dữ liệu. Sau khi kích hoạt TLS 1.3, toàn bộ gói tin truyền thông giữa Client và PostgreSQL Server đều bị mã hóa thành dạng dữ liệu ngẫu nhiên của giao thức Application Data Protocol, không thể đọc được nội dung gốc nếu không có khóa phiên.
Kết luận
Đồ án tốt nghiệp của sinh viên Nguyễn Quốc Anh đã hệ thống hóa đầy đủ cơ sở lý thuyết về kiến trúc bộ nhớ, các tiến trình vận hành và các mối đe dọa an toàn thông tin điển hình trong HQTCSDL PostgreSQL. Trên cơ sở đó, tác giả đã triển khai thực nghiệm thành công giải pháp bảo vệ dữ liệu đa lớp, kết hợp giữa cơ chế mã hóa kênh truyền TLS 1.3 và mã hóa dữ liệu lưu trữ mức cột trên phiên bản PostgreSQL 12. Kết quả kiểm chứng thực tế bằng công cụ Wireshark đã chứng minh tính khả thi và hiệu quả của các giải pháp kỹ thuật, cung cấp tài liệu tham khảo có giá trị ứng dụng cao cho công tác quản trị và bảo mật cơ sở dữ liệu doanh nghiệp.