Một số vấn đề về bảo mật cơ sở dữ liệu của doanh nghiệp
Mặc dù rất quan trọng nhưng bảo mật CSDL của các doanh nghiệp mới chỉ được quan tâm nhiều trong mấy năm gần đây, trong đó hai nguyên nhân khách quan là:
- Trước đây tin tặc thường tấn công vì danh tiếng, trong khi máy chủ web phổ biến hơn máy chủ cơ sở dữ liệu.
- CSDL thường nằm trong mạng nội bộ, phía sau các tường lửa, trong khi các phương pháp tấn công mới như SQL injection mới được phát hiện.
Khi các hoạt động của tin tặc hướng đến mục đích kiếm tiền thì CSDL - nơi tập trung thông tin của các doanh nghiệp trở thành mục tiêu hấp dẫn. Mặt khác sự kết nối liên mạng ngày càng phát triển, tác dụng của các hàng rào bảo mật vành ngoài (network perimeter) ngày càng giảm nên vai trò của bảo mật CSDL nhanh chóng tăng lên. Vai trò quan trọng của bảo mật CSDL được xác lập một phần còn là nhờ sự ra đời của các quy định mới như Sarbanes-Oxley, PCI DSS…
Bản thân các doanh nghiệp cũng chưa quan tâm đúng mức đến vấn đề bảo mật CSDL. Theo khảo sát năm 2008 của tạp chí Information Security (Mỹ): 33,7% trong số 597 ý kiến phản hồi đánh giá tầm quan trọng của việc bảo mật CSDL là không quan trọng hoặc trung bình, trong khi chỉ có 19,1% ý kiến xác định là rất quan trọng. Ngay cả khi đánh giá cao tầm quan trọng của bảo mật CSDL, thì các doanh nghiệp cũng chưa chắc có đủ khả năng để làm tốt công việc này vì 3 lý do chính sau:
- Bảo mật CSDL không giống như bảo mật mạng hay bảo mật ứng dụng phần mềm thông thường. Sự phát triển nhanh chóng của các ứng dụng web và kiến trúc hướng dịch vụ (SOA), xu hướng chia sẻ thông tin với các đối tác, khách hàng và làm việc từ xa khiến cho hệ thống ngày càng mở. Các ứng dụng phát triển nhanh và liên kết ngày càng lỏng lẻo không có đủ khả năng kiểm soát truy cập đã tác động xấu đến việc bảo mật CSDL.
- Cán bộ quản trị CSDL của các doanh nghiệp không có đủ hiểu biết cần thiết và dành cho công tác bảo mật. Mặt khác, bản chất công việc của cán bộ quản trị CSDL là đảm bảo hoạt động truy cập dữ liệu của các ứng dụng và nhân viên trong doanh nghiệp lại mâu thuẫn với tính hạn chế, kiểm soát của công việc bảo mật. Một số ý kiến đã cho rằng cần có bộ phận chuyên môn về bảo mật CSDL (DSA) tách biệt với công việc duy trì hoạt động của hệ thống CSDL (DBA thông thường) để đảm bảo tính khách quan và không xung đột trong các công việc của một bộ phận chức năng.
- Các nhà tư vấn hay cung cấp sản phẩm bảo mật CSDL chưa nhiều.
Các nguy cơ đe doạ cơ sở dữ liệu của doanh nghiệp
Số lỗ hổng bảo mật trong các hệ thống quản trị CSDL được phát hiện ngày càng nhiều hơn. Một số chuyên gia đã chứng tỏ rằng hacker hoàn toàn có thể tạo ra các loại virus chuyên lây lan qua hệ quản trị CSDL và thậm chí là các rootkit trong bản thân hệ quản trị CSDL. Những mối đe doạ đó hầu như không thể ngăn chặn bằng các biện pháp phòng vệ “cổ điển” do tường lửa và các hệ thống IDS/IPS cung cấp, vì lỗ hổng bảo mật CSDL thường liên quan đến từng phiên bản cụ thể của mỗi hệ quản trị CSDL và thay đổi liên tục. Nhưng điều đó không có nghĩa là CSDL chỉ có thể bị tấn công bằng những kỹ thuật cao cấp. Theo Top 20 - 2007 Security Risks của SANS Institute thì các lỗ hổng trên máy chủ CSDL thuộc nhóm 20 rủi ro bảo mật hàng đầu, trong đó những lỗ hổng thường gặp nhất là:
- Dùng cấu hình chuẩn với tên người dùng và mật khẩu mặc định.
- Tấn công SQL Injection qua công cụ của CSDL, ứng dụng thứ ba hay các ứng dụng web của người dùng.
- Dùng mật khẩu dễ dò tìm cho các tài khoản cao cấp.
- Các lỗi tràn bộ đệm trong các tiến trình “lắng nghe” các cổng phổ biến (ví dụ như listner của Oracle với cổng 1521).
Điều đó chứng tỏ một thực tế là CSDL có thể bị tấn công bằng những phương pháp rất đơn giản. Nếu xét kỹ hơn, chúng ta sẽ thấy có rất nhiều lỗ hổng trong hệ thống CSDL do con người tự tạo ra. Dữ liệu của doanh nghiệp có thể nằm rải rác ở những điểm khác nhau bên ngoài máy chủ chính, đó có thể là các đĩa/băng lưu trữ, các máy chủ dự phòng hay máy chủ phục vụ nhu cầu báo cáo hay thậm chí là máy chủ dành cho phát triển/kiểm thử ứng dụng. Trong khi các hệ thống lưu trữ, dự phòng có thể cũng được bảo vệ nghiêm ngặt gần như các hệ thống chính thì CSDL cho phát triển và kiểm thử ứng dụng thường không được quan tâm nhiều. Đó là một lỗ hổng lớn vì các CSDL đó thường chứa cả những thông tin nhạy cảm như số dư, giao dịch thực tế của khách hàng nhưng lại có thể bị những nhóm người dùng đông đảo và không có thẩm quyền truy cập.
Các nguyên tắc và biện pháp bảo mật CSDL
Cũng như công tác bảo mật nói chung, phòng ngự theo chiều sâu (defense-in-depth) và bảo vệ có trọng điểm là những nguyên tắc cơ bản của bảo mật CSDL. Để thực hiện được điều này, doanh nghiệp cần biết rõ họ đã triển khai những CSDL nào, chúng đang được sử dụng để lưu thông tin gì, chúng đang có những điểm yếu nào. Vì vậy, bảo mật CSDL phải bắt đầu bằng việc thu thập thông tin, phân loại và xác định mức độ ưu tiên.
Một biện pháp khá đơn giản và hiệu quả nhưng ít người chú ý thực hiện là gỡ bớt các mô-đun không cần thiết để giảm thiểu bình diện tấn công. Hầu hết các hệ quản trị CSDL hiện nay (đặc biệt là các phiên bản dành cho doanh nghiệp) đều chứa rất nhiều mô-đun hay tuỳ chọn với những công dụng mà bình thường ít dùng tới. Tất nhiên, càng có nhiều chức năng thì khả năng có lỗ hổng và bị lợi dụng để tấn công càng lớn. Vì vậy, hãy rà soát cấu hình CSDL theo định kỳ để loại bỏ những thành phần không cần thiết.
Với việc các lỗ hổng bảo mật của các hệ quản trị CSDL liên tiếp được phát hiện, công việc không thể bỏ qua đối với các doanh nghiệp là áp dụng các bản vá do các nhà cung cấp phân phối. Việc áp dụng các bản vá không đơn giản là tải xuống và cài đặt. Đối với các hệ quản trị CSDL, việc áp các bản vá còn phức tạp hơn nhiều so với các thiết bị mạng hay các ứng dụng phần mềm khác. Vì các CSDL là yếu tố sống còn của các hệ thống ứng dụng chính nên một sai sót nhỏ cũng có thể ảnh hưởng rất lớn. Trước khi cài đặt bất kỳ bản vá nào đều cần phải thử nghiệm thật cẩn thận và lên kế hoạch để đảm bảo hệ thống hoạt động ổn định sau khi triển khai cũng như giảm thiểu thời gian dừng (downtime).
Trong bảo mật CSDL, kiểm soát truy cập là yếu tố thiết yếu và điều đó phải được thực hiện dựa trên nguyên tắc quyền tối thiểu. Mỗi người dùng hay ứng dụng chỉ được phép có những quyền đủ để phục vụ cho công việc. Điều này không chỉ áp dụng cho quá trình phân quyền đầu tiên mà cần phải được kiểm tra định kỳ. Không ít doanh nghiệp cấp quyền truy cập sâu cho nhân viên tư vấn hay lập trình viên bên ngoài cho một dự án ngắn ngày nhưng lại quên không cắt hay thay đổi quyền khi công việc hoàn tất. Vì những quyền đọc có vẻ rất vô hại cũng có thể dùng làm bàn đạp cho những cuộc tấn công quy mô trong tương lai nên chúng ta cần xem xét việc phân quyền của cả những quyền nhỏ nhất. Bên cạnh đó, cần có biện pháp kiểm soát và theo dõi việc truy cập từ các phương tiện lưu trữ dữ liệu cũng như hạn chế những mối đe doạ đối với bảo mật CSDL từ quá trình phát triển và kiểm thử phần mềm. Phải đảm bảo dữ liệu thật không được dùng vào quá trình phát triển hay kiểm thử, CSDL dùng vào những công việc đó cũng không được nằm chung trên máy chủ chứa CSDL thật.
Mã hoá CSDL là biện pháp tiếp theo cần áp dụng để bảo mật CSDL, là lớp bảo vệ trong trường hợp các biện pháp kiểm soát truy cập đã bị vượt qua. Việc mã hoá này phải được thực hiện một cách đúng đắn để đảm bảo người dùng có toàn quyền trên hệ điều hành cũng không thể đọc được dữ liệu nếu không thông qua kiểm soát của ứng dụng.
Yếu tố quan trọng đầu tiên cần xét đến trong quy trình mã hoá dữ liệu là quản lý khoá, nếu hệ thống quản lý khoá không đảm bảo thì tác dụng của mã hoá cũng giảm rất nhiều. Vấn đề cần lưu ý là lựa chọn phương án mã hoá như thế nào để đảm bảo an toàn thông tin mà không ảnh hưởng đến hiệu năng của hệ thống? Chúng ta sẽ xem xét một số lựa chọn. Nếu nhấn mạnh vấn đề bảo mật, có thể lựa chọn mã hoá tất cả các trường trừ trường mã số (ví dụ như mã khách hàng). Cách làm này chỉ có thể áp dụng nếu mọi yêu cầu truy cập CSDL (dù là truy vấn, thêm mới, cập nhật hay xoá) đều dựa trên trường mã số. Nếu có yêu cầu truy cập dữ liệu dựa trên các trường khác, ảnh hưởng của việc mã hoá/giải mã dữ liệu sẽ rất lớn (ví dụ như việc tìm kiếm theo tên khách hàng sẽ yêu cầu giải mã tất cả các bản ghi). Điều đó dẫn đến một phương án khác là chỉ mã hoá những trường chứa dữ liệu nhạy cảm, cần bảo vệ như số thẻ tín dụng… Cách làm này chỉ ảnh hưởng đến những câu lệnh truy cập dựa trên số thẻ tín dụng. Nhưng rất có thể ứng dụng lại có chức năng tìm kiếm chỉ dựa trên số thẻ tín dụng. Vì vậy, trước khi quyết định mã hoá một trường dữ liệu nào đó, chúng ta cần xem xét các câu lệnh truy cập dữ liệu hay dùng để biết việc mã hoá ảnh hưởng thế nào đến hiệu năng của hệ thống.
Cần lưu ý rằng các hệ thống CSDL thường rất phức tạp vì chúng liên kết với nhiều ứng dụng khác nhau. Chỉ một lỗi trong một cấu phần cũng có thể làm lộ dữ liệu của hệ thống. Vì thế việc bảo mật riêng CSDL là không đủ, tất cả các ứng dụng và cấu phần liên quan phải được bảo mật. Việc áp dụng hệ thống mã hoá trong suốt với người dùng cho tất cả các thiết bị nhớ di động khá phức tạp và tốn kém nhưng vẫn có thể coi là đơn giản nếu so với nhiệm vụ ngăn chặn rò rỉ thông tin.
Gần đây trên thị trường đang nổi lên một mảng giải pháp và sản phẩm mới với tên gọi DLP (data loss prevention). Mặc dù còn nhiều tranh cãi nhưng các giải pháp đều có tâm điểm là hệ thống giám sát và lọc nội dung. Khả năng phân tích nội dung cho phép các công cụ rà soát mọi luồng thông tin trao đổi trên mạng cũng như dữ liệu nằm trên đĩa, gỡ bỏ các lớp vỏ (ví dụ như các bảng tính hay tệp PDF được nén) để xác định các thông tin nhạy cảm dựa trên chính sách bảo mật thông tin của doanh nghiệp. Bắt đầu với các công cụ giám sát nhằm phát hiện rò rỉ thông tin qua các kênh trao đổi phổ biến như thư điện thử, tin nhắn tức thời (IM), FTP và HTTP, các giải pháp DLP dần phát triển thêm những tính năng như rà soát các kho dữ liệu và các thư mục được chia sẻ trong mạng để phát hiện thông tin nhạy cảm chưa được bảo vệ, giám sát việc sử dụng dữ liệu trên máy tính của người dùng (ví dụ như chép tài liệu quan trọng ra thiết bị nhớ USB, cắt dán thông tin).