Kiểm toán – hàng rào kỹ thuật cuối cùng bảo vệ cơ sở dữ liệu

10:46 | 09/04/2020
TS. Trần Thị Lượng (Theo Implementing Database Security and Auditing)

Trong công cuộc chuyển đổi số, thành công của một tổ chức/ doanh nghiệp (TC/DN) phụ thuộc vào tính sẵn sàng của thông tin. Do đó, TC/DN phải duy trì hoạt động, bảo mật các hệ thống lưu trữ và quản lý dữ liệu. Một trong những phương pháp giúp quản trị viên theo dõi, đảm bảo an toàn cho cơ sở dữ liệu hiệu quả là kiểm toán.

Cơ sở dữ liệu (CSDL) là nơi chứa toàn bộ thông tin bao gồm cả những thông tin nhạy cảm, bí mật của các TC/DN, chính vì vậy, đây cũng là mục tiêu mà tin tặc thường xuyên nhắm tới. Bất kỳ hoạt động nào liên quan đến CSDL phải được ghi lại, đặc biệt là các câu truy vấn có liên quan đến dữ liệu nhạy cảm, các giao dịch bất thường. Trong trường hợp các giải pháp kỹ thuật như tường lửa, hệ thống phát hiện và ngăn chặn xâm nhập,... bị vô hiệu hóa, thì các cơ chế kiểm toán (Auditing) là tuyến hàng rào cuối cùng để bảo vệ CSDL.

Hoạt động kiểm toán đượ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 đối với một hệ thống công nghệ thông tin. Dựa trên những bản ghi kiểm toán, quản trị cơ sở dữ liệu (Database Administrator - DBA) sẽ phát hiện kịp thời những tấn công hay lỗ hổng và ngăn chặn hành vi phá hoại của tin tặc; hoặc nhanh chóng sửa chữa những bất thường của hệ thống. 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ưới góc độ của các chuyên gia an toàn thông tin, dạng thông tin thứ hai được chú trọng hơn cả. Ai, từ đâu đến, làm gì, vào lúc nào, trên những đối tượng gì…? là những thông tin rất hữu ích đối với một kiểm toán viên.

Một số định nghĩa chung

Kiểm toán CSDL (Database Auditing) là việc theo dõi và ghi lại các hành động được lựa chọn trên CSDL. Nó có thể dựa trên hành động cá nhân, chẳng hạn như các loại câu lệnh SQL hoặc kết hợp các yếu tố bao gồm tên, ứng dụng, thời gian,.…

Nhật ký kiểm toán (Audit Log) là tài liệu chứa tất cả các hoạt động đang được kiểm toán và được sắp xếp theo thứ tự thời gian.

Kiểm toán viên (Auditor) là người được phép thực hiện công việc kiểm toán.

Thủ tục kiểm toán (Audit Procedure) là tập hợp các câu lệnh của tiến trình kiểm toán.

Báo cáo kiểm toán (Audit Report) là tài liệu chứa quá trình tìm kiếm kiểm toán (The Audit Finding) ghi lại các kết quả kiểm toán đạt được.

Các bản ghi kiểm toán (Audit Records) bao gồm thông tin về các hoạt động đã được kiểm toán, người sử dụng thực hiện các hoạt động, ngày giờ - thời gian hoạt động.

Vết kiểm toán (Audit Trail) là bản ghi lưu lại sự thay đổi tài liệu, thay đổi dữ liệu, những hoạt động hệ thống hoặc những sự kiện thao tác.

Dữ liệu kiểm toán (Audit Data) là bản ghi theo thời gian của dữ liệu thay đổi được lưu trữ trong tập tin log hoặc đối tượng bảng CSDL.

Kiểm toán nội bộ (Internal Auditing) là kiểm toán thực hiện kiểm tra những hoạt động được quản lý bởi thành viên có quyền của tổ chức kiểm toán.

Kiểm toán mở rộng (External Auditing) là kiểm toán thực hiện kiểm tra, xác minh, xác nhận tính hợp lệ của tài liệu, tiến trình, thủ tục, hoặc các hoạt động được quản lý bởi thành viên có quyền bên ngoài tổ chức đang được kiểm toán.

Kiểm toán giúp cho DBA kiểm soát hoạt động của hệ thống tốt hơn, tuy nhiên, nó lại làm tăng số lượng công việc của hệ thống phải thực hiện. Do đó, cần thực hiện kiểm toán đúng mức để có tác động phù hợp lên hiệu suất hệ thống.

Vai trò của kiểm toán trong bảo vệ CSDL

Mục đích của kiểm toán là xem xét, đánh giá tính sẵn sàng, an toàn và chính xác thông qua việc trả lời những câu hỏi như: Hệ thống máy tính có sẵn sàng cho hoạt động tại mọi thời điểm hay không? Việc truy cập CSDL chỉ dành cho người có thẩm quyền? CSDL có cung cấp thông tin chính xác, trung thực và kịp thời hay chưa?....

Vai trò của kiểm toán được xem là một phần của chính sách an toàn, cụ thể:

- Theo dõi các hành động hiện tại trong một lược đồ, bảng, hàng, cột hoặc một nội dụng dữ liệu cụ thể.

- Giám sát hoạt động CSDL như phát hiện người sử dụng bất hợp pháp đang thao tác với CSDL.

- Điều tra hoạt động đáng ngờ: Chẳng hạn, nếu một người dùng trái phép thực hiện hành động xóa dữ liệu từ một bảng nào đó, thì các DBA có thể kiểm toán tất cả các kết nối CSDL, việc xóa bỏ thành công và không thành công của các bảng trong CSDL để có thể phát hiện ra hành vi trên.

- Theo dõi và thu thập dữ liệu về các hoạt động CSDL cụ thể. Chẳng hạn, DBA có thể thu thập số liệu thống kê về những bảng đang được cập nhật, bao nhiêu I/O được thực hiện, hoặc làm thế nào nhiều người dùng đồng thời kết nối trong thời gian cao điểm.

Kết quả của quá trình kiểm toán là sự bắt buộc người dùng phải có trách nhiệm về hành động mà họ thực hiện, bằng cách theo dõi hành vi của họ.

Các cơ chế kiểm toán trong CSDL

Có 5 cơ chế kiểm toán cơ bản trong CSDL bao gồm:

- Kiểm toán bắt buộc (Mandatory Auditing): Là các hoạt động kiểm toán mặc định. Dù CSDL kiểm toán có được kích hoạt hay không, thì hệ thống vẫn kiểm tra một số hoạt động liên quan đến CSDL và ghi chúng vào tập tin vận hành hệ thống kiểm toán.

- Kiểm toán chuẩn (Standard Database Auditing): Đây là thiết lập kiểm toán ở cấp độ hệ thống bằng cách sử dụng những tham số AUDIT_TRAIL. Sau khi kích hoạt tính năng này, cần lựa chọn các đối tượng và đặc quyền muốn kiểm toán.

- Kiểm toán dựa trên giá trị (Value-based Auditing): Là cơ chế kiểm toán dựa trên kiểm toán chuẩn, tuy nhiên nó còn kiểm toán dựa trên giá trị thực tế đã được đưa vào, cập nhật, hoặc bị xóa.

- Kiểm toán mịn (Fine-grained auditing- FGA): cơ chế này được mở rộng từ kiểm toán chuẩn, ghi lại các câu lệnh SQL đã được thực hiện thay vì chỉ những sự kiện đã xảy ra.

- Kiểm toán DBA: là cơ chế thực hiện kiểm toán riêng cho các DBA.

Các loại kiểm toán

Dưới đây là một số dạng kiểm toán cơ bản nhất được trình bày để bạn đọc hình dung dễ dàng hơn về các loại kiểm toán này.

Kiểm toán đăng nhập/đăng xuất CSDL

Đây là loại kiểm toán đầu tiên được yêu cầu trong hầu hết các môi trường nhằm tạo vết kiểm toán đầy đủ xem bất kỳ ai đã đăng nhập/đăng xuất vào CSDL. Công tác này ghi lại hai sự kiện: một sự kiện cho việc đăng nhập và một sự kiện cho việc đăng xuất. Đối với mỗi sự kiện, cần phải lưu ít nhất hai tham số là tên đăng nhập và thời gian đăng nhập.

Ngoài hai sự kiện trên, DBA cũng cần ghi lại tất cả các lần đăng nhập thất bại. Trong thực tế, sự kiện đăng nhập thất bại còn quan trọng hơn sự kiện đăng nhập thành công từ quan điểm an toàn. Việc đăng nhập không thành công thường được sử dụng làm cơ sở cho các cảnh báo và thậm chí là việc khóa tài khoản sau này.

Khi sử dụng một hệ thống an toàn bên ngoài, DBA có thể sử dụng tường lửa để chặn bất kỳ kết nối nào sau khi phát hiện có một số lần cố gắng đăng nhập thất bại. Trong trường hợp này, CSDL không được kết nối vì đã bị từ chối ở mức tường lửa. Một tùy chọn khác là sử dụng các thủ tụcCSDL được mô tả trong Hình 1. Hệ thống kiểm toán sẽ tạo ra một cảnh báo khi số đăng nhập thất bại vượt quá ngưỡng nhất định. Cảnh báo được gửi đến một hệ thống có trách nhiệm kết nối với CSDL và gọi đến một thủ tục khóa tài khoản. Hệ thống này thường thông báo cho DBA rằng, hành động trên đã được thực hiện để tiến hành một cuộc điều tra và tài khoản có thể bị trả lại nếu cần.

Hình 1: Khóa tài khoản bằng cách sử dụng một cảnh báo và thủ tục CSDL

Kiểm toán khóa nguồn sử dụng CSDL

Liên quan đến kiểm toán hoạt động đăng nhập là kiểm toán thông tin nguồn của máy khách, bao gồm: Kiểm toán nút mạng được kết nối tới CSDL và kiểm toán ứng dụng đang được sử dụng để truy cập vào CSDL. Thông tin này là một trong những giá trị thường nhận được khi kiểm toán các kết nối CSDL.

Kiểm toán việc sử dụng CSDL ngoài giờ làm việc

Một loại kiểm toán khác liên quan đến kiểm toán đăng nhập CSDL là hoạt động kiểm toán được thực hiện ngoài giờ làm việc bình thường. Đây là một yêu cầu đáng quan tâm và thường được yêu cầu từ TC/DN. Bởi các hoạt động thực hiện ngoài giờ thường đáng ngờ và có thể là kết quả của việc một người sử dụng đang cố gắng truy cập trái phép hoặc sửa đổi dữ liệu.

Nói chung, DBA luôn mong muốn nhận được những hoạt động người dùng đã thực hiện, thường ở mức câu lệnh SQL. Nếu hoạt động đăng nhập như vậy là đáng ngờ, thì việc nắm bắt những gì họ đã sử dụng trong CSDL là điều quan trọng. Do đó vết kiểm toán ngoài giờ rất có ý nghĩa.

Một cách tiếp cận để lọc ra các hoạt động bình thường xảy ra ở bên ngoài giờ làm việc là sử dụng một dòng cơ sở.

    user1         192.168.1.168        SQLLoader            2am-4am

    user2         192.168.1.168         ETL                      12am-6am

Hình 2: Một dòng cơ sở truy cập CSDL

Khi thực hiện kiểm toán ngoài giờ, DBA nên loại trừ bất kỳ hoạt động do các ứng dụng thực hiện, bằng cách sử dụng các tên đăng nhập và đến từ các địa chỉ IP trên.

Kiểm toán chỉ thực hiện khi có sự khác biệt từ dòng cơ sở giúp làm giảm kích thước của vết kiểm toán khi kiểm tra, bởi kiểm toán sẽ chỉ ghi nhận những hoạt động đang xảy ra bên ngoài các chuẩn (đã được định nghĩa trong dòng cơ sở).

Kiểm toán hoạt động câu lệnh DDL

Ngôn ngữ định nghĩa dữ liệu (Data Definition Language – DDL) là một ngôn ngữ của SQL giúp định nghĩa cấu trúc của CSDL, bao gồm: định nghĩa các hàng, các cột, các bảng dữ liệu, các chỉ số và một số thuộc tính khác liên quan đến cơ sở dữ liệu. DDL thực thi các câu lệnh như: CREATE, ALTER, DROP, RENAME.

Kiểm toán thay đổi lược đồ hay kiểm toán hoạt động câu lệnh DDL là một trong những vết kiểm toán được thực thi nhiều nhất. Do xuất phát từ ba quan điểm: an toàn; tuân thủ; quản lý cấu hình và quy trình.

Từ quan điểm an toàn, các lệnh DDL là những lệnh có khả năng gây tổn hại và chắc chắn được sử dụng bởi kẻ tấn công để xâm nhập bất kỳ hệ thống nào. Thậm chí, việc lấy cắp thông tin thường liên quan đến các câu lệnh DDL (chẳng hạn thông qua việc tạo thêm một bảng thì dữ liệu có thể được sao chép trước khi khai thác).

Từ quan điểm tuân thủ, nhiều quy định yêu cầu phải kiểm toán bất kỳ sửa đổi nào của cấu trúc dữ liệu như các bảng biểu và khung nhìn. Việc tuân thủ yêu cầu của kiểm toán DDL thường tương tự như các yêu cầu được định nghĩa trong việc quản lý cấu hình và quản trị IP.

Mọi thao tác thay đổi trên lược đồ cần phải được kiểm toán và lưu trữ để DBA có thể xem xét tham khảo trong tương lai. Đây là một cách để có thể nhanh chóng xác định và giải quyết các lỗi có thể làm tổn hại dữ liệu hoặc có thể gây ra các dữ liệu sai lệch.

Mặt khác, kiểm toán hoạt động câu lệnh DDL được thực hiện để loại bỏ các lỗi mà nhà phát triển và DBA đưa ra. Việc kiểm soát chặt chẽ trong quá trình quản lý cấu hình là rất quan trọng.

Có ba phương pháp chính để kiểm toán hoạt động câu lệnh bao gồm: Sử dụng tính năng kiểm toán CSDL; Sử dụng hệ thống kiểm toán bên ngoài và so sánh nhanh các lược đồ.

Hầu hết các môi trường CSDL sẽ cho phép kiểm toán hoạt động DDL bằng cách sử dụng cơ chế kiểm toán, giám sát sự kiện, ghi vết. Đây là một loại kiểm toán rất quan trọng cần được thực hiện trong các hệ thống CSDL.

Kiểm toán lỗi CSDL

Các kiểm toán lỗi do CSDL trả lại là một trong những vết kiểm toán đầu tiên nên được thực hiện. Điều này đặc biệt đúng theo quan điểm an toàn. Chẳng hạn, khi tìm hiểu về tấn công SQL injection, trong nhiều trường hợp kẻ tấn công sẽ nỗ lực thực hiện nhiều lần dựa trên thông báo lỗi của hệ thống cho đến khi họ nhận được kết quả mong đợi.

Bên cạnh đó, các lỗi do CSDL hiển thị có thể giúp DBA tìm ra các vấn đề  ảnh hưởng đến thời gian phản hồi và tính sẵn sàng. Kiểm toán lỗi chi tiết được hỗ trợ bởi một số các nhà cung cấp CSDL và DBA có thể tham khảo các tài liệu hướng dẫn về môi trường để thực hiện.

Kiểm toán hoạt động câu lệnh DML

Ngôn ngữ thao tác dữ liệu (Data Manipulation Language - DML) là một ngôn ngữ khác của SQL giúp thao tác chi tiết hơn trên các đối tượng CSDL cụ thể, bao gồm các lệnh như: SELECT, INSERT, UPDATE, DELETE.

Kiểm toán hoạt động câu lệnh DML là một yêu cầu phổ biến. Tuy nhiên, cần phải cẩn thận với loại kiểm toán này và thực hiện có chọn lọc. Bởi đây là một kỹ thuật mà số lượng dữ liệu có thể được tạo ra rất lớn, nên cần chắc chắn rằng cơ sở hạ tầng kiểm toán có thể quản lý được, đặc biệt là khi nó gồm cả giá trị mới và cũ.

Giả định có 1.000.000 giao dịch DML mỗi ngày, mỗi giao dịch cập nhật một giá trị giao dịch duy nhất. CSDL có 100 bảng với mỗi bảng có 10 giá trị được cập nhật. Việc kiểm toán sẽ có kết quả là có một CSDL kiểm toán với 10.000 bản ghi trong mỗi tháng.

Mặc dù tính toán này là đơn giản và độ chính xác không cao, nhưng sẽ không ngạc nhiên nếu kiểm toán ghi lại những giá trị cũ và mới, thì sau một năm CSDL kiểm toán sẽ có dung lượng lớn hơn 35 lần so với các CSDL ban đầu.

Vì vậy, khi xem vết kiểm toán DML, DBA nên chọn lọc các đối tượng và lệnh để kiểm toán. Ví dụ, có thể quyết định tạo ra những vết kiểm toán cho một tập hợp con các bảng CSDL. Thậm chí, DBA nên chọn lọc các bảng và cột để duy trì các giá trị cũ và mới, thay vì kiểm toán cho toàn bộ CSDL hay toàn bộ một bảng nào đó.

Ngoài những loại kiểm toán cơ bản trên, còn có các dạng kiểm toán CSDL khác như: Kiểm toán các thay đổi đối với các nguồn của thủ tục lưu trữ và trigger; kiểm toán các thay đổi đối với các đặc quyền, định nghĩa User/Login và các thuộc tính an toàn khác; kiểm toán việc tạo, thay đổi và sử dụng các liên kết CSDL và sao lưu; kiểm toán những thay đổi đối với dữ liệu nhạy cảm.

Kết luận

Việc nghiên cứu nghiên cứu, phát hiện các truy cập dữ liệu trái phép bằng cách sử dụng cơ chế kiểm toán trong các hệ quản trị CSDL trở nên vô cùng quan trọng và cần thiết hơn bao giờ hết. Đặc biệt khi quá trình phát triển của công nghệ thông tin ngày càng biến đổi mạnh mẽ và nhanh chóng. Các hệ quản trị CSDL hiện đại hiện nay hầu hết đều hỗ trợ các cơ chế kiểm toán CSDL mạnh, chẳng hạn: Sybase, DB2, Oracle, SQL Server, MySQL,... Những vết kiểm toán thu được sẽ là tài liệu hữu ích giúp các DBA phát hiện, theo dõi, cảnh báo và đưa ra những hành động cần thiết giúp bảo vệ CSDL khỏi những tấn công của tin tặc.