Một số cơ chế an toàn cơ bản trong các hệ quản trị cơ sở dữ liệu (phần một)
Có ba cơ chế an toàn cơ bản sử dụng trong các hệ thống nói chung và trong các hệ quản trị cơ sở dữ liệu (Database Management System – DBMS) nói riêng, bao gồm: Xác thực (Authentication), Ủy quyền (Authorization) và Kiểm toán (Auditing).
Xác thực
Có hai bước chính để kiểm soát truy cập dữ liệu bao gồm: xác thực và ủy quyền. 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.
Quá trình đăng nhập khác với tài khoản người dùng ở chỗ: đăng nhập yêu cầu xác thực đối với môi trường, còn tài khoản người dùng được dùng để kiểm soát các hành động thực hiện đối với môi trường. Sự phân biệt này là rất rõ ràng vì có những đăng nhập mặc định được tạo trong suốt quá trình cài đặt cơ sở dữ liệu. Do vậy, có một số tài khoản người dùng mặc định cần phải được quản lý chặt chẽ.
Thường thì một chứng nhận là một thông tin ngắn được dùng để kiểm tra định danh, chẳng hạn như: tên truy cập và mật khẩu của một người dùng, mã định danh bảo mật của một ứng dụng hoặc tên máy và địa chỉ mạng. Loại chứng nhận được sử dụng để kiểm tra định danh của một người hoặc một ứng dụng phụ thuộc vào các yêu cầu và quá trình xác thực của từng hệ thống hoặc môi trường. Với môi trường này, tên truy cập và mật khẩu có thể là đủ, nhưng với một môi trường khác có thể cần một số thông tin bổ sung như: địa chỉ máy và số định danh bảo mật.
Xác thực có thể được kiểm tra ở nhiều thời điểm và mức độ khác nhau trong suốt quá trình đăng nhập vào hệ thống trước khi hệ thống ủy quyền cho người dùng. Ví dụ, SQL Server kiểm tra xác thực của một người dùng ở mức máy chủ bằng cách yêu cầu thiết lập kết nối tới máy chủ và ở mức cơ sở dữ liệu bằng cách yêu cầu truy cập tới cơ sở dữ liệu. Các ứng dụng của bên thứ ba có thể được sử dụng trong môi trường cơ sở dữ liệu nhằm bổ sung thêm độ bảo mật trong việc xác thực người dùng. Ở đó, một số bước được bổ sung trong quá trình xác thực, chẳng hạn như việc mã hóa mật khẩu để giữ một môi trường mạng an toàn.
Có ba mức xác thực thường xuyên trong môi trường cơ sở dữ liệu, đó là: hệ điều hành, cơ sở dữ liệu và hỗ trợ của bên thứ ba. Khi được kết hợp với nhau, các mức này tạo nên một môi trường an toàn. Tuy nhiên nếu chỉ sử dụng đơn lẻ, nó có thể mang lại những thuận lợi hoặc bất lợi lớn đối với sự an toàn của môi trường.
Xác thực mức hệ điều hành
Các chứng nhận được xác thực thông qua hệ điều hành thì phải có tài khoản trên hệ điều hành đó, các tài khoản này được sử dụng để truy cập hệ thống. Trong một vài trường hợp, chỉ có một bước đăng nhập hệ điều hành được sử dụng để xác thực người dùng với cơ sở dữ liệu. Nếu người dùng có một tài khoản hệ điều hành trên hệ thống và các chứng nhận này được sử dụng thì người dùng không cần thiết phải có thêm các bước đăng nhập khác để truy cập vào cơ sở dữ liệu. Xác thực thông qua hệ điều hành cho phép người dùng thuận tiện kết nối đến cơ sở dữ liệu mà không cần chỉ định tên người dùng và mật khẩu cơ sở dữ liệu. Loại xác thực này cũng cung cấp cho các nhà quản trị cơ sở dữ liệu khả năng quản trị tài khoản tập trung, bởi vì mọi tài khoản được đặt cùng một chỗ và mỗi cá nhân chỉ cần thiết lập chứng nhận của mình do hệ điều hành quản lý.
Tuy nhiên, với xác thực mức hệ điều hành, các máy trạm và các tài khoản người dùng phải được quản lý và giám sát thường xuyên. Nếu một đối tượng bất hợp pháp lấy được các chứng nhận của người dùng để truy cập vào hệ điều hành hoặc máy trạm thì sẽ được thừa hưởng quyền truy cập cơ sở dữ liệu mà không cần phải có nhiều sự hiểu biết hoặc kỹ năng.
Xác thực mức cơ sở dữ liệu
Với xác thực mức cơ sở dữ liệu, các chứng nhận được cơ sở dữ liệu kiểm tra một lần nữa. Trong tình huống này, người dùng có thể được yêu cầu truy cập tới một vài hệ thống trước khi kết nối cơ sở dữ liệu. Điều này có nghĩa là người dùng phải lưu giữ các chứng nhận tài khoản cho những hệ thống khác. Như vậy, cùng lúc người dùng phải nhớ rất nhiều tài khoản, dẫn đến các vấn đề như mật khẩu yếu. Ngoài ra, việc quản trị môi trường này cũng khó khăn hơn bởi các quản trị viên không những phải lưu giữ nhiều hơn một tài khoản cho mỗi cá nhân mà các tài khoản này thường xuyên được đặt ở những khu vực riêng, cho nên sẽ mất nhiều công sức cho việc thực hiện vết kiểm toán.
Tuy nhiên, việc phân tách riêng tài khoản dành cho các hệ thống khác nhau có thể tạo ra môi trường phân đoạn và bảo mật hơn, ngăn chặn việc những người truy cập bất hợp pháp tới mật khẩu người dùng, bởi sẽ cần phải có thêm chứng nhận cơ sở dữ liệu mới có thể truy cập thành công CSDL.
Xác thực mạng hoặc bên thứ ba
Việc xác thực cơ sở dữ liệu có thể quản lý bằng cách sử dụng các ứng dụng bên thứ ba ở mức mạng của môi trường. Các ứng dụng bên thứ ba và các tài khoản xác thực mạng có thể được sử dụng cho truy cập từ xa và môi trường vật lý. Người dùng không cần tạo tài khoản trên trên hệ điều hành hoặc cơ sở dữ liệu. Tuy nhiên, họ phải có tài khoản mạng hoặc tài khoản được xác thực bởi ứng dụng bên thứ ba. Một loại xác thực liên kết điển hình đó là thẻ thông minh. Các thẻ thông minh yêu cầu người dùng thêm số PIN để xác thực; số PIN này không liên quan tới hệ điều hành và cơ sở dữ liệu.
Các giao thức an toàn như Kerberos được sử dụng phổ biến trong việc xác thực mạng và các bên thứ ba. Các giao thức này yêu cầu nhiều hiểu biết và kinh nghiệm kỹ thuật hơn, đồng thời cũng bổ sung thêm nhiều lớp bảo mật hơn cho một môi trường cơ sở dữ liệu bất kỳ. Kerberos là giao thức xác thực được xây dựng bởi Học viện kỹ thuật Massachuset (MIT), cung cấp xác thực an toàn bằng cách sử dụng mã hóa khóa đối xứng đồng thời để định danh thực thể từ máy trạm đến máy chủ và ngược lại.
Hình thức xác thực mạng cũng có thể sử dụng các giao thức an toàn khác để xác nhận định danh một người dùng, ví dụ như hạ tầng khóa công khai (Public key infrastructure - PKI). PKI sử dụng các khóa được mã hóa tương tự như cách Kerberos phát hành vé cấp vé (Ticket granting ticket - TGT), nó xác nhận định danh của người yêu cầu bằng cách gán một chứng thư số cho người dùng để xác thực tới môi trường bảo mật. Một chứng thư số là tệp tin chứa thông tin định danh đối tượng, được phát hành bởi một trung tâm chứng thực tin cậy.
Các cá nhân và công ty có thể nhận được chứng thư số bằng cách đăng ký qua một trung tâm chứng thực tin cậy như VeriSign. Điều quan trọng là xác thực mạng hoặc xác thực bên thứ ba phải được xem xét cẩn thận và được sử dụng các kỹ thuật đã được nghiên cứu trong một thời gian nhất định trước khi cài đặt. Bởi xác thực mạng sử dụng các kỹ thuật mật mã phức tạp để xác thực người dùng, nhưng trong đó còn rất nhiều vấn đề cần quan tâm mà nếu không có hiểu biết đầy đủ, có thể nảy sinh nhiều rủi ro cho hệ thống mạng.
Xác thực bên thứ ba hay xác thực liên kết có thể được kết hợp với hệ điều hành và máy chủ xác thực để tạo ra bối cảnh sử dụng an toàn cho bất cứ môi trường nào.
Các thành phần xác thực của nhà cung cấp cơ sở dữ liệu
Có vài sự khác biệt quan trọng trong cách xác thực giữa các nhà cung cấp cơ sở dữ liệu khác nhau như: SQL Server, MySQL, Oracle.
Xác thực trong SQL Server
SQL Server hỗ trợ hai chế độ xác thực: chế độ xác thực Windows (Windows Authentication mode) và chế độ xác thực hỗn hợp (Mixed Mode Authentication). Chế độ xác thực Windows là kiểu xác thực chỉ sử dụng hệ điều hành Windows để xác thực truy cập tới cơ sở dữ liệu. Xác thực Windows còn được gọi là xác thực tin cậy vì tính an toàn được thực thi qua hệ điều hành Windows. Đây là chế độ mặc định trong suốt quá trình cài đặt và được khuyến nghị cho SQL Server, bởi chế độ xác thực này bảo mật hơn các phương pháp thay thế, sử dụng giao thức Kerberos, yêu cầu mật khẩu mạnh và có thời hạn của mật khẩu.
Khi người dùng truy cập bằng tài khoản Windows của mình, việc kiểm tra người dùng được thực hiện bởi Windows và không cần thêm các chứng nhận để truy cập cơ sở dữ liệu. Xác thực máy chủ SQL Server bị vô hiệu hóa khi xác thực bằng Windows được lựa chọn.
Chế độ xác thực hỗn hợp là kiểu xác thực cho phép cả xác thực Windows và xác thực máy chủ SQL Server được sử dụng để truy cập tới cơ sở dữ liệu. Để truy cập tới cơ sở dữ liệu sử dụng chế độ hỗn hợp, người dùng phải đáp ứng hai chứng nhận độc lập. Tuy nhiên, việc có nhiều tài khoản cũng mang đến khó khăn cho quản trị và an toàn cơ sở dữ liệu người dung, bởi vì nó không an toàn như chế độ xác thực Windows và vì các giao thức như Kerberos lại không được sử dụng. Do đó, chế độ xác thực hỗn hợp chỉ thích hợp cho các môi trường với hệ điều hành cũ và môi trường hỗn hợp hệ điều hành.
Xác thực trong MySQL
MySQL sử dụng giao thức xác thực để truy cập đến máy chủ và định danh khác so với SQL Server và Oracle. Định danh của người dùng MySQL được kiểm tra bằng cách sử dụng ba thông tin: Tên máy chủ; Tên truy cập MySQL và Mật khẩu truy cập MySQL.
Để truy cập cơ sở dữ liệu, định danh phải trùng khớp với các chứng nhận được lưu trữ trong cơ sở dữ liệu, tên đăng nhập phân tách hoàn toàn với tài khoản đăng nhập hệ điều hành và cũng không có mối liên hệ nào giữa mật khẩu MySQL với mật khẩu hệ điều hành. Tên máy chủ có thể hiển thị dưới dạng địa chỉ IP và có thể không cần cung cấp nếu đó là máy chủ đang chạy MySQL. Có ba thành phần được lưu trữ trong bảng người dùng là host, user, password. Kết nối chỉ được cho phép khi ba giá trị đó trùng khớp.
Xác thực trong Oracle
Oracle hỗ trợ nhiều tùy chọn xác thực cho người dùng, ứng dụng và các máy, nó cung cấp tùy chọn cấu hình hỗ trợ hầu hết các môi trường. Các máy chủ cơ sở dữ liệu, liên kết cơ sở dữ liệu và các mật khẩu môi trường đều có thể được sử dụng như một chứng nhận để xác thực trong Oracle 11g. Ngoài ra, trong Oracle một vài ứng dụng được thêm vào để tăng thêm bảo mật cho hạ tầng cơ sở dữ liệu.
Một trong những dịch vụ đáng chú ý nhất được thêm vào Oracle để tăng cường thêm tính bảo mật đó là "Advanced Security". Đây là một dịch vụ bảo mật toàn diện, mã hóa toàn bộ thông tin chuyển qua mạng và lưu trữ trong cơ sở dữ liệu để cung cấp các xác thực mạnh và xác thực proxy quan trọng, hỗ trợ và tích hợp cùng với các phương pháp xác thực chuẩn công nghiệp (Kerberos, PKI, SSL).
Chính sách mật khẩu
Mật khẩu là chìa khóa để truy cập vào tài khoản người dùng. Hầu hết các vụ tấn công vào hệ thống đều xuất phát từ việc bẻ khóa hoặc lấy cắp mật khẩu của người dùng. Phải tốn rất nhiều vật lực và thời gian để có thể khắc phục các tổn hại mà việc mất mật khẩu đem lại. Do đó, chính sách mật khẩu là cần thiết để giảm thiểu rủi ro mất an toàn cho mật khẩu. Máy chủ dữ liệu được cấu hình với cơ sở dữ liệu trong suốt với người quản trị hệ thống.
Cơ sở dữ liệu Thực thi chính sách mật khẩu
Để thực hiện cài đặt mật khẩu chung trong một môi trường quản lý dữ liệu, nhà quản trị cơ sở dữ liệu và chuyên gia bảo mật cần thiết lập các quy tắc cho người dùng trong việc sử dụng thiết bị và công nghệ trong tổ chức. Có bốn thuộc tính của mật khẩu có thể thực thi trong hầu hết các máy chủ dữ liệu bao gồm:
- Độ phức tạp: Tạo một định nghĩa yêu cầu về độ dài, kiểu chữ (số, ký tự, chữ cái…) của mật khẩu.
- Số lần đăng nhập thất bại: Một mật khẩu thử quá số lần quy định có thể là dấu hiệu của việc xâm nhập bất hợp pháp. Do đó, cần giới hạn số lần đăng nhập thất bại và đồng thời sử dụng chính sách khóa tạm thời với tài khoản bị nhập quá số lần quy định.
- Mật khẩu quá hạn: cần một chính sách quy định thời gian sử dụng mật khẩu đối với người dung để giúp giảm thiệt hại nếu mật khẩu bị lấy cắp.
- Tái sử dụng mật khẩu: quy định một mật khẩu có được sử dụng lại hay không.
Thiết lập chính sách mật khẩu
Việc thiết lập chính sách mật khẩu bao gồm các phần sử dụng phù hợp giữa người dùng và công ty. Thiết lập chính sách mật khẩu cần linh hoạt để thực thi một cách nhất quán với mỗi mức của công ty, nhưng cũng cần nghiêm ngặt để đảm bảo người dùng tuân thủ chính sách.
Phần tiếp theo của bài báo sẽ tập trung trình bày về cơ chế an toàn ủy quyền và kiểm toán. Kính mời quý độc giả đón đọc.
TS. Trần Thị Lượng
(Theo Alfred Basta, Melissa Zgola, Database Security, Cengage Learning US, 2011)