TRIỂN KHAI THỬ NGHIỆM CÁC KỸ THUẬT BẢO MẬT THÔNG TIN TRÊN HỆ CSDL NOSQL MONGODB (Luận Văn Thạc Sĩ) Cơ sở dữ liệu quan hệ đã thống trị ngành công nghiệp phần mềm trong một thời gian dài khi đã cung cấp cơ chế để lưu trữ dữ liệu liên tục, đồng thời kiểm soát, giao dịch, giao diện được chuẩn hóa và được tích hợp vào các hệ thống dữ liệu ứng dụng, báo cáo. Tuy nhiên, trong vài năm qua chúng ta đã thấy sự gia tăng của một loại cơ sở dữ liệu mới, đó là cơ sở dữ liệu NoSQL, các cơ sở dữ liệu dạng này cho phép lưu trữ các dữ liệu phức tạp, phân tán lớn. NoSQL có nghĩa là không chỉ SQL, ngụ ý rằng khi thiết kế một giải pháp phần mềm hoặc sản phẩm, có nhiều hơn một cơ chế lưu trữ có thể được sử dụng dựa trên các nhu cầu. NoSQL không có một định nghĩa rõ ràng mà chúng ta có thể hiểu là mô hình cơ sở dữ liệu mới có các đặc điểm như: Không sử dụng các mô hình quan hệ, chạy tốt trên các cụm(server), chủ yếu là mã nguồn mở, xây dựng cho web thế kỷ 21, tối thiểu hóa lượcđồ. Tuy nhiên, hiện nay có rất nhiều hiểm họa tấn công vào các CSDL NoSQL. Vì vậy việc đảm bảo ATTT cho các CSDL này là một vấn đề hết sức quan trọng. Xuất phát từ thực tiễn trên, đồ án này thực hiện đề tài “ Tìm hiểu và triển khai thử nghiệm các kỹ thuật mã hóa trên CSDL NoSQL”. CHƯƠNG 1. TỔNG QUAN VỀ CSDL NOSQL VÀ HỆ QUẢN TRỊ CSDL MONGODB 2 1.1. Giới thiệu CSDL NOSQL 2 1.1.1. Đặc điểm NoSQL 2 1.1.2. Các mô hình của NoSQL 3 a) Mô hình dữ liệu tổng hợp 3 b) Mô hình dữ liệu phân tán 3 1.1.3. Ưu và nhược điểm của hệ quản trị cơ sở dữ liệu NoSQL 4 a) Ưu điểm 4 b) Nhược điểm 5 1.1.4. Phân loại NoSQL 5 a) Key-value stores 5 b) Document Databases 6 d) Graph Databases 8 1.1.5. So sánh hệ quản trị cơ sở dữ liệu NoSQL và SQL 9 1.1.6. Ứng dụng của NoSQL hiện nay 10 1.2. Giới thiệu về hệ quản trị CSDL MongoDB 11 1.2.1. Khái niệm 11 1.2.2. So sánh MongoDB với cơ sở dữ liệu quan hệ 13 1.2.3. Quản lý cơ sở dữ liệu MongoDB 14 CHƯƠNG 2. AN TOÀN VÀ BẢO MẬT THÔNG TIN ĐỐI VỚI CSDL NOSQL VÀ HỆ QUẢN TRỊ CSDL MONGODB 27 2.1. Các hiểm họa mất an toàn thông tin trong cơ sở dữ liệu NoSQL .. 27 2.1.1. Lạm dụng các đặc quyền vượt mức và các đặc quyền không còn được dùng 27 2.1.2. Lạm dụng đặc quyền 28 2.1.3. Tấn công SQL Injection 28 2.1.4. Mã độc 29 2.1.5. Lợi dụng vết kiểm toán yếu 29 2.1.6. Lợi dụng sự sơ hở để khai thác phương tiện lưu trữ 30 2.1.7. Khai thác các CSDL có điểm yếu và bị lỗi cấu hình 30 2.1.8. Rò rỉ các dữ liệu nhạy cảm không được quản lý 30 2.1.9. Tấn công từ chối dịch vụ 31 2.1.10. Vấn đề đào tạo và chuyên gia an ninh mạng còn hạn chế 31 2.2. Các giải pháp an toàn và bảo mật thông tin trong MongoDB 31 2.2.1. Các giải pháp mã hóa CSDL 31 2.2.2. Giải pháp mã hóa đường truyền 35 2.2.3. Giải pháp xác thực 38 2.2.3. Ủy quyền và kiểm soát truy cập 44 CHƯƠNG 3. TRIỂN KHAI THỬ NGHIỆM VÀ ỨNG DỤNG 48 3.1. Mô tả thực nghiệm 48 3.1.1. Mô tả cơ sở dữ liệu 48 3.1.2. Mô tả hoạt động của cơ sở dữ liệu 49 3.2. Mô hình hệ thống cơ sở dữ liệu và giải pháp an toàn cho cơ sở dữ liệu 50 3.2.1. Các thành phần của hệ thống CSDL 50 3.1. Mô hình an toàn cho CSDL 50 3.2.2. Các giải pháp an toàn và bảo mật cho hệ thống cơ sở dữ liệu 50 3.3. Triển khai thử nghiệm 52 3.3.1. Tạo cơ sở dữ liệu 52 3.3.2. Cấu hình xác thực người dùng 55 3.3.3. Cấu hình kiểm soát truy cập 57 3.3.4. Cấu hình mã hóa mật khẩu 59 3.3.5. Cấu hình bảo mật đường truyền 60 3.3.6. Triển khai tường lửa 66
Trang 2MỤC LỤC
LỜI CẢM ƠN i
LỜI CAM ĐOAN ii
KÝ HIỆU, CHỮ VIẾT TẮT vi
LỜI NÓI ĐẦU 1
CHƯƠNG 1 TỔNG QUAN VỀ CSDL NOSQL VÀ HỆ QUẢN TRỊ CSDL MONGODB 2
1.1 Giới thiệu CSDL NOSQL 2
1.1.1 Đặc điểm NoSQL 2
1.1.2 Các mô hình của NoSQL 3
a) Mô hình dữ liệu tổng hợp 3
b) Mô hình dữ liệu phân tán 3
1.1.3 Ưu và nhược điểm của hệ quản trị cơ sở dữ liệu NoSQL 4
a) Ưu điểm 4
b) Nhược điểm 5
1.1.4 Phân loại NoSQL 5
a) Key-value stores 5
b) Document Databases 6
d) Graph Databases 8
1.1.5 So sánh hệ quản trị cơ sở dữ liệu NoSQL và SQL 9
1.1.6 Ứng dụng của NoSQL hiện nay 10
1.2 Giới thiệu về hệ quản trị CSDL MongoDB 11
1.2.1 Khái niệm 11
1.2.2 So sánh MongoDB với cơ sở dữ liệu quan hệ 13
1.2.3 Quản lý cơ sở dữ liệu MongoDB 14
CHƯƠNG 2 AN TOÀN VÀ BẢO MẬT THÔNG TIN ĐỐI VỚI CSDL NOSQL VÀ HỆ QUẢN TRỊ CSDL MONGODB 27
Trang 32.1 Các hiểm họa mất an toàn thông tin trong cơ sở dữ liệu NoSQL 27
2.1.1 Lạm dụng các đặc quyền vượt mức và các đặc quyền không còn được dùng 27 2.1.2 Lạm dụng đặc quyền 28
2.1.3 Tấn công SQL Injection 28
2.1.4 Mã độc 29
2.1.5 Lợi dụng vết kiểm toán yếu 29
2.1.6 Lợi dụng sự sơ hở để khai thác phương tiện lưu trữ 30
2.1.7 Khai thác các CSDL có điểm yếu và bị lỗi cấu hình 30
2.1.8 Rò rỉ các dữ liệu nhạy cảm không được quản lý 30
2.1.9 Tấn công từ chối dịch vụ 31
2.1.10 Vấn đề đào tạo và chuyên gia an ninh mạng còn hạn chế 31
2.2 Các giải pháp an toàn và bảo mật thông tin trong MongoDB 31
2.2.1 Các giải pháp mã hóa CSDL 31
2.2.2 Giải pháp mã hóa đường truyền 35
2.2.3 Giải pháp xác thực 38
2.2.3 Ủy quyền và kiểm soát truy cập 44
CHƯƠNG 3 TRIỂN KHAI THỬ NGHIỆM VÀ ỨNG DỤNG 48
3.1 Mô tả thực nghiệm 48
3.1.1 Mô tả cơ sở dữ liệu 48
3.1.2 Mô tả hoạt động của cơ sở dữ liệu 49
3.2 Mô hình hệ thống cơ sở dữ liệu và giải pháp an toàn cho cơ sở dữ liệu 50 3.2.1 Các thành phần của hệ thống CSDL 50
3.1 Mô hình an toàn cho CSDL 50
3.2.2 Các giải pháp an toàn và bảo mật cho hệ thống cơ sở dữ liệu 50
3.3 Triển khai thử nghiệm 52
3.3.1 Tạo cơ sở dữ liệu 52
Trang 43.3.2 Cấu hình xác thực người dùng 55
3.3.3 Cấu hình kiểm soát truy cập 57
3.3.4 Cấu hình mã hóa mật khẩu 59
3.3.5 Cấu hình bảo mật đường truyền 60
3.3.6 Triển khai tường lửa 66
KẾT LUẬN 78
TÀI LIỆU THAM KHẢO 79
Trang 5KÝ HIỆU, CHỮ VIẾT TẮT
AES Advanced Encryption Standard Tiêu chuẩn mã hóa tiên
CMS Content Management System Hệ thống quản trị nội
dung CPU Central Processing Unit Bộ xử lý trung tâm FGAC Fine Grained Access Control Cơ chế kiểm soát min
HTTP HyperText Transfer Protocol Giao thức truyền tải
siêu văn bản
quan hệ
SQL Structured Query Language Ngôn ngữ truy vấn
giao vận
Trang 6LỜI NÓI ĐẦU
Cơ sở dữ liệu quan hệ đã thống trị ngành công nghiệp phần mềm trong một thời gian dài khi đã cung cấp cơ chế để lưu trữ dữ liệu liên tục, đồng thời kiểm soát, giao dịch, giao diện được chuẩn hóa và được tích hợp vào các hệ thống dữ liệu ứng dụng, báo cáo Tuy nhiên, trong vài năm qua chúng ta đã thấy sự gia tăng của một loại cơ sở dữ liệu mới, đó là cơ sở dữ liệu NoSQL, các cơ sở dữ liệu dạng này cho phép lưu trữ các dữ liệu phức tạp, phân tán lớn NoSQL có nghĩa là không chỉ SQL, ngụ ý rằng khi thiết kế một giải pháp phần mềm hoặc sản phẩm, có nhiều hơn một cơ chế lưu trữ có thể được
sử dụng dựa trên các nhu cầu NoSQL không có một định nghĩa rõ ràng mà chúng ta có thể hiểu là mô hình cơ sở dữ liệu mới có các đặc điểm như: Không
sử dụng các mô hình quan hệ, chạy tốt trên các cụm(server), chủ yếu là mã nguồn mở, xây dựng cho web thế kỷ 21, tối thiểu hóa lược đồ
Tuy nhiên, hiện nay có rất nhiều hiểm họa tấn công vào các CSDL NoSQL Vì vậy việc đảm bảo ATTT cho các CSDL này là một vấn đề hết sức quan trọng Xuất phát từ thực tiễn trên, đồ án này thực hiện đề tài “ Tìm hiểu
và triển khai thử nghiệm các kỹ thuật mã hóa trên CSDL NoSQL”
Trang 7CHƯƠNG 1 TỔNG QUAN VỀ CSDL NOSQL VÀ HỆ QUẢN TRỊ
CSDL MONGODB 1.1 Giới thiệu CSDL NOSQL
NoSQL là Non – Relational: tạm dịch là phi quan hệ NoSQL là cơ sở
dữ liệu không quan hệ, ràng buộc giữa các Collection (hay còn gọi là các table trong cơ sở dữ liệu bình thường) Tức là giữa các Collection sẽ không có khóa chính hay khóa ngoại như trong cơ sở dữ liệu bình thường Việc này sẽ giảm bớt rối khi cơ sở dữ liệu chúng ta có nhiều bảng NoSQL đặc biệt nhấn mạnh đến mô hình lưu trữ cặp giá trị - khóa và hệ thống lưu trữ phân tán
1.1.1 Đặc điểm NoSQL
Tính nhất quán lỏng lẻo (Looser consistency) : NoSQL tổ chức lưu trữ
và truy xuất dữ liệu theo cơ chế “thoáng hơn trong đảm bảo tính nhất quán của dữ liệu” so với mô hình dữ liệu quan hệ truyền thống nhằm cải thiện hiệu suất, đảm bảo dữ liệu luôn được đáp ứng tốt hơn
Tính nhất quán ngầu nhiên (Eventual consistency): NoSQL không yêu cầu phải đảm bảo tính nhất quán của dữ dữ liệu ngay tức thì mà sẽ hiện thực tính nhất quán của dữ liệu theo cơ chế lan truyền Ví dụ: Khi bạn đổi đổi avartar trên Facebook thì hình ảnh trên trang cá nhân của bạn được đổi tức thì, còn trong danh sách bạn bè và trên trang chủ chưa được cập nhật ngay
Lưu trữ phân phối (Distributed storage): hay còn gọi là lưu trữ phân tán là thay vì dữ liệu được lưu trữ trên một máy chủ duy nhất thì hệ thống sẽ lưu dữ liệu trên nhiều máy khác nhau
Khả năng mở rộng theo chiều ngang (Horizontal scalable): với các hệ quản trị cơ sở dữ liệu quan hệ , khi mà dữ liệu quá lớn phương pháp tăng khả năng lưu trữ là sẽ phải mở rộng (nâng cấp máy chủ), còn đối với NoSQL thì chỉ cần bổ sung thêm máy chủ khác vì hệ thống hỗ trợ lưu trữ phân tán trên nhiều máy
Trang 81.1.2 Các mô hình của NoSQL
a) Mô hình dữ liệu tổng hợp
Mô hình cơ sở dữ liệu quan hệ là rất khác nhau so với các loại cấu trúc
dữ liệu mà các nhà phát triển ứng dụng sử dụng Sử dụng các cấu trúc dữ liệu
đã được mô hình hóa bởi các nhà phát triển để giải quyết vấn đề, lĩnh vực khác nhau đã làm tăng chuyển động đi từ mô hình quan hệ và hướng tới mô hình tổng hợp (hầu hết trong số này được đề cập đến trong cuốn sách Domain Driven Design của Eric Evans) Một số mô hình là tổng hợp của các đơn vị dữ liệu mà có sự tương tác với từng phần trong đó với nhau Các đơn vị dữ liệu với cơ sở dữ liệu như là “key-value”, “document”và “column-family”
Tổng hợp để dễ dàng hơn trong việc quản lý dữ liệu lưu trữ trên các cụm Và các đơn vị dữ liệu bây giờ có thể lưu trữ trên bất kỳ máy tính nào và khi lấy ra từ cơ sở dữ liệu chúng ta sẽ được tất cả các dữ liệu có liên quan cùng với nó Cơ sở dữ liệu tổng hợp làm việc tốt nhất khi hầu hết các dữ liệu được thực hiện trên cùng một tổng hợp, ví dụ như khi cần có được một đơn đặt hàng
và tất cả các chi tiết của nó, nó sẽ tốt hơn khi lưu trữ thông tin theo một đối tượng tổng hợp
b) Mô hình dữ liệu phân tán
Cơ sở dữ liệu theo định hướng tổng hợp thực hiện phân phối các dữ liệu
dễ dàng hơn, vì các cơ chế phân phối có để di chuyển tổng hợp và không phải
lo lắng về dữ liệu có liên quan, như tất cả các dữ liệu liên quan được chứa trong tổng hợp Có hai kiểu phân phối dữ liệu:
- Sharding: sharding phân phối dữ liệu khác nhau trên nhiều máy chủ, do
đó mỗi máy chủ đóng vai trò như là nguồn duy nhất cho một tập hợp con của dữ liệu
- Replication: replication sao chép dữ liệu trên nhiều máy chủ, vì vậy mỗi
bit dữ liệu có thể được tìm thấy ở nhiều nơi Replication có hai hình thức:
Trang 9- Master-slave: làm cho một nút có quyền hạn như là bản sao để xử lý ghi
trong khi slave đồng bộ với master và có thể xử lý đọc
- Peer-to-peer: cho phép ghi vào bất kỳ nút nào mà các nút phối hợp đồng
bộ các bản sao của dữ liệu
Master-slave làm giảm sự xung đột khi có thực hiện cập nhật còn peer-to- peer tránh tải tất cả viết lên một máy chủ duy nhất nên khi có lỗi chỉ xảy ra tại một điểm duy nhất Một hệ thống có thể sử dụng một trong hai hoặc cả hai kỹ thuật trên
1.1.3 Ưu và nhược điểm của hệ quản trị cơ sở dữ liệu NoSQL
a) Ưu điểm
NoSQL Là mã nguồn mở: không phải mất chi phí và có xu hướng tin cậy, an ninh và nhanh hơn để triển khai so với các hệ quản trị cơ sở dữ liệu độc quyền
Linh hoạt trong việc mở rộng và phát triển: Về phía công ty quản lý thì giúp dễ dàng mở rộng máy chủ khi dữ liệu càng ngày càng lớn hoặc lượng truy cập, tải dữ liệu quá lớn, thay vì thuê một máy chủ lớn hơn để thế máy chủ trước thì công ty chỉ cần thuê thêm một máy chủ khác Về phía người lập trình thì giúp dễ dàng thêm Collection (Bảng) hoặc cặp dữ liệu (Cột) Dễ dàng trong việc thống kê, truy vấn nhanh
Áp dụng được công nghệ điện toán đám mây: dễ dàng mở rộng phạm vi được theo yêu cầu có sử dụng một dịch vụ như là Amazon EC2 Giống như tất cả công nghệ đám mây, EC2 dựa vào ảo hóa Liên kết yếu của ảo hóa là sự thực thi của I/O, với bộ nhớ và CPU các các kết nối mạnh NoSQL lưu trữ dữ liệu thường được mở rộng phạm vi theo chiều ngang tận dụng được sự cung cấp mềm dẻo của đám mây Giúp mở rộng dữ liệu dễ dàng hơn
Được các hãng lớn sử dụng như Amazon, BBC, Facebook và Google Làm nền tảng, cơ sở cho các công ty lớn áp dụng cũng như có sự tin cậy cao
về hệ quản trị NoSQL
Trang 10b) Nhược điểm
Hỗ trợ không đồng đều cho các doanh nghiệp Các doanh nghiệp vừa được sự hỗ trợ tốt nhất từ nhà cung cấp RMBMS (vì được phát triển trước NoSQL một thời gian khá dài) còn các doanh nghiệp nhỏ thì thường sử dụng các mã nguồn mở thì không được sự hỗ trợ tốt nhất
Chưa được sử dụng rộng rãi vì NoSQL vẫn chưa nhận được sự tin cậy với nhiều doanh nghiệp, một phần dữ liệu đã được xây dựng từ lâu, nên việc chuyển đổi cũng là vấn đề khó với nhiều doanh nghiệp và chưa được hỗ trợ tốt
về chức năng cũng như sự ổn định như RMBMS
Còn mới lạ với một số lập trình viên Chưa được sử dụng để đào tạo rộng rãi Chưa có tool hỗ trợ giao diện tương tác cũng như các phương thức tốt nhất Dẫn đến hạn chế về tri thức nghiệp vụ
Chia sẻ dữ liệu chưa theo một tiêu chuẩn chung Mỗi cơ sở dữ liệu NoSQL có các giao diện lập trình ứng dụng API riêng của mình Sự thiếu hụt các tiêu chuẩn có nghĩa là nó không có khả năng để chuyển một cách đơn giản từ một nhà cung cấp này sang một nhà cung cấp khác
1.1.4 Phân loại NoSQL
Hiện tại có nhiều loại cơ sở dữ liệu NoSQL Các loại cơ sở dữ liệu này không giống nhau về các lưu trữ và chúng được chia thành những nhóm sau: a) Key-value stores
Ý tưởng chính của kiểu NoSQL là sử dụng bảng băm (hash-table), nơi
có một khóa duy nhất và một con trỏ chỉ đến mục dữ liệu cụ thể Các mô hình key/value thì đơn giản và dễ thực hiện nhất Nhưng nó sẽ không hiệu quả khi bạn chỉ truy vấn hay update đến một phần dữ liệu trong phần giá trị
Các cơ sở dữ liệu tiêu biểu cho Key-value stores là: Riak, Redis, MemCache, Project Voldemort, CouchBase
Trang 11Ứng dụng: Do tốc độ truy xuất nhanh, key-value stores thường được dùng
để làm cache cho ứng dụng (Tiêu biểu là Redis và MemCache) Ngoài ra, nó còn được sử dụng để lưu thông tin trong sessions, profiles/preferencer của user
b) Document Databases
Cơ sở dữ liệu Document được lấy cảm hứng từ Lotus Noted và tương tự như key-value stores Mô hình này về cơ bản là phiên bản cơ sử dữ liệu document bao gồm tập hợp document Nhưng chứa bên trong document là tập hợp key-value Những document này được lưu ở định dạng JSON Trong document có nhiều cặp key-value và các cặp key-value này được phép lồng vào nhau Mỗi document sẽ có 1 key Kiểu cơ sở dữ liệu document này hỗ trợ truy vấn hiệu quả hơn
Hình 1.1 Ví dụ về Document Database
Trang 12Các cơ sở dữ liệu tiêu biểu cho cơ sở dữ liệu Document: CouchDB (JSON), MongoDB (BSON, RavenDB, TerraStone, OrientDB,
Ứng dụng: Do nhanh và linh động, document database thường đóng vài trò làm database cho các ứng dụng prototype, big data, e-commerce, CMS Ngoài ra, ta còn dùng nó để lưu log hoặc history
c) Column Family Stores
Cơ sở dữ liệu được tạo ra để lưu và xử lý một lượng dữ liệu lớn trên nhiều server Cơ sở dữ liệu column-family lưu trữ dữ liệu trong nhiều cột trong mỗi dòng cho từng dòng Column families là một nhóm các dữ liệu liên quan được truy cập với nhau
Hình 1 2 Ví dụ với Column Family Các cơ sở dữ liệu tiêu biểu cho Column Family Stores là: Cassandra (Phát triển bởi Facebook), HyperTable, Apache Hbase, BigTable (của Google), v.v
Ứng dụng: Column-Family Stores được sử dụng khi ta cần ghi một số lượng lớn dữ liệu, big data Nó còn được ứng dụng trong một số CMS và ứng dụng e-commerce
Trang 13d) Graph Databases
Graph Databases là database sử dụng cấu trúc graph để lưu trữ dữ liệu,
nó khác so với cơ sở dữ liệu quan hệ lưu dữ liệu dưới dạng table, hay NoSQL lưu dữ liệu dưới dạng document key value
Hình 1.3 Ví dụ với Graph Databases Các bản ghi dữ liệu trong graph database được gọi là Nodes, các node được kết nối với nhau bằng các quan hệ Relationships Nodes và Relationships đều có thể có các thuộc tính Các Nodes có thể phân thành các group để dễ quản lý nhờ vào Label
Các cơ sở dữ liệu tiêu biểu cho Graph Databases là: Neo4J, Sones, AllegroGraph, Core Data, DEX, FlockDB, InfoGrid, OpenLink Virtuoso, v.v Ứng dụng: Khi cần truy vấn các mối quan hệ, graph database truy vấn nhanh và dễ hơn nhiều so với database Nó được dùng trong các hệ thống: mạng nơ ron, chuyển tiền bạc, mạng xã hội (tìm bạn bè), giới thiệu sản phẩm (dựa theo sở thích/lịch sử mua sắm của người dùng), v.v
Trang 141.1.5 So sánh hệ quản trị cơ sở dữ liệu NoSQL và SQL
Có nhiều điểm yếu kém Thực hiện khá tốt
Mô hình dữ liệu Table
Key/Value, Column- based – Tabular, Document-based, Graph- based data-stores
Hiệu suất
Kém hơn SQL
Relational giữa các bảng
Cực tốt
Bỏ qua SQL
Bỏ qua các ràng buộc dữ liệu
Khả năng mở rộng Hạn chế về lượng Hỗ trợ lượng lớn cho các
node
Trang 15Phù hợp với công nghệ
Hiệu suất đọc ghi
Kém do thiết kế để đảm bảo sự vào/ra liên tục của dữ liệu
Tốt với mô hình xử lý lô
và những tối ưu về đọc- ghi dữ liệu
Thay đổi số node
trong hệ thống
Phải shutdown cả hệ thống Việc thay đổi số node phức tạp
Không cần phải shutdown cả hệ thống Việc thay đổi số node đơn giản, không ảnh hưởng đến hệ thống
Hỗ trợ lập trình hướng
Bảng 1 1 So sánh SQL và NoSQL
1.1.6 Ứng dụng của NoSQL hiện nay
Ngày nay, với sự phát triển của các ứng dụng Big Data mạng xã hội, yêu cầu đòi hỏi xử lý một lượng dữ liệu vô cùng lớn, tăng lên nhanh chóng hàng ngày Vì vậy mà NoSQL trở thành một cơ sở dữ liệu không thể thiếu để giải quyết những bài toán như vậy
Hình 1.4: Ứng dụng của NoSQL
Ví dụ như Facebook sử dụng NoSQL kết hợp với RDBMS để lưu trữ hàng tỷ bài viết và bình luận đáp ứng hơn 1 tỷ thành viên sử dụng dịch vụ mà vẫn luôn hoạt động ổn định, tính sẵn sàng cao và khả năng phân tán dữ liệu vô
Trang 16tận Điều đó cho thấy rằng NoSQL là một tư tưởng lưu trữ mới đáng để thời gian và công sức nghiên cứu
1.2 Giới thiệu về hệ quản trị CSDL MongoDB
1.2.1 Khái niệm
MongoDB là một hệ quản trị cơ sở dữ liệu mã nguồn mở, dùng để thiết
kế cơ sở dữ liệu, giúp dễ dàng phát triển và mở rộng, cung cấp hiệu suất cao, tính sẵn sàng cao
Cấu trúc của Mongodb bao gồm các cặp “thuộc tính” – “giá trị”, MongoDB document tương tự như đối tượng JSON Giá trị của thuộc tính bao gồm các thuộc tính giá trị cụ thể (số, chữ, ), document, mảng, mảng các đối tượng
- Cơ sở dữ liệu (Database):
Database là một ô chứa dữ liệu ở mức vật lý(physical), mỗi database sẽ
có nhiều collection và được thiết lập lưu trữ ở một mơi trong máy chủ máy tính Một máy chủ MongoDB thường có thể tạo nhiều cơ sở dữ liệu
- Tập hợp (Collection):
Collection trong MongoDB là nhóm các tài liệu(document), nó tương đương với một bảng(table) trong CSDL, nên thông thường mỗi collection sẽ thuộc về một database duy nhất Tuy nhiên nó có một sự khác biệt đó là nó không có ràng buộc Relationship như các CSDL khác nên việc truy xuất dữ liệu rất nhanh, chính vì thế mỗi colletion có thể chứa nhiều thể loại khác nhau không giống như table trong hệ quản trị myspl là các field cố định
- Tài liệu (Document):
Document trong MongoDB có cấu trúc tương tự như kiểu dữ liệu
JSON,nghĩa là sẽ có các cặp (key => giá trị) nên nó có tính năng động rất lớn Document ta có thể hiểu nó giống như các record dữ liệu trong MYSQL, tuy
Trang 17nhiên nó có sự khác biệt là các cặp(key=> value) có thể không giống nhau ở mỗi document
Để rõ hơn chúng ta sẽ so sánh MongoDB và một hệ quản trị CSDL
Bảng 1.2 So sánh MongoDB và một hệ quản trị CSDL
Ví dụ dưới đây là một cấu trúc CSDL của học viên lớp H24 trong
MongoDB:
Hình 1.5: Cấu trúc một CSDL MongoDB MongoDB chạy trên hầu hết các nền tảng và hỗ trợ kiến trúc 64-bit để
Trang 18sử dụng sản xuất và cả hai 64-bit và 32-bit kiến trúc để thử nghiệm
1.2.2 So sánh MongoDB với cơ sở dữ liệu quan hệ
- So sánh các lệnh sử dụng trong MongoDB khác và MySQL
Trang 19• MongoDB sinh ra để tăng tốc độ truy xuất dữ liệu, phù hợp cho các ứng dụng cần tốc độ phản hồi nhanh(realtime như facebook chẳng hạn) Còn các tác nghiệp cần tính toàn vẹn dữ liệu (trong banking) thì Nosql không đáp ứng được yêu cầu thay vì đó cần sử dụng MySQL
• MongoDB không có tính ràng buộc, vì vậy cần sự cẩn thận khi thao tác trên các collection có quan hệ dữ liệu với nhau
• MongoDB đẩy trách nghiệm thao tác Database cho tầng ứng dụng nên sẽ tốn tài nguyên (tài nguyên bây giờ không còn là vấn đề quá lớn nữa)
• MongoDb có thể mở trộng theo chiều ngang (scale out) phương pháp tăng cường khả năng lưu trữ và xử lý là dùng nhiều máy tính phân tán MongoDb mở rộng theo chiều dọc (scale up) tăng cấu hình server
• MongoDb dùng nhiều máy tính phân tán để lưu trữ dữ liệu nên chi phí sẽ rẻ hơn Mysql Mysql sử dụng những máy chủ có cấu hình cao, độc quyền nên sẽ đắt đỏ hơn
1.2.3 Quản lý cơ sở dữ liệu MongoDB
- Tạo Database:
Lệnh use trong MongoDB: Lệnh use DATABASE _ NAME trong MongoDB được sử dụng để tạo cơ sở dữ liệu Lệnh này sẽ tạo một cơ sở dữ liệu mới, nếu nó chưa tồn tại, nếu không thì lệnh này sẽ trả về cơ sở dữ liệu đang tồn tại Cú pháp như sau:
Trang 20Ví dụ: Nếu muốn tạo một cơ sở dữ liệu là mydb, sử dụng lệnh như sau:
Để kiểm tra cơ sở dữ liệu đã chọn hiện tại, bạn sử dụng lệnh “show dbs”:
Cơ sở dữ liệu đã được tạo ra không có trong danh sách này Để hiển thị
nó, cần chèn ít nhất một Collection vào trong đó
Sau đó kiểm tra lại cơ sở dữ liệu bằng lệnh “show dbs”
- Xóa Database trong MongoDB:
Lệnh db.dropDatabase( ) trong MongoDB được sử dụng để xóa một cơ
sở dữ liệu đang tồn tại Cú pháp cơ bản của lệnh dropDatabase( ) là như sau:
Lệnh này sẽ xóa cơ sở dữ liệu đã chọn Nếu bạn không chọn bất kỳ cơ sở
dữ liệu nào thì nó sẽ xóa cơ sở dữ liệu mặc định test Ví dụ : Đầu tiên bạn kiểm tra danh sách các cơ sở dữ liệu có sẵn bởi sử dụng lệnh “show dbs”
>show dbs
db.dropDatabase()
Trang 21Bây giờ, thử kiểm tra danh sách các cơ sở dữ liệu
- Tạo Collection trong MongoDB:
Phương thức db.createCollection(name,options) trong MongoDB được sử dụng để tạo Collection Cú pháp:
Trong lệnh trên name là tên của Collection, Options là một Document và được sử dụng để xác định cấu hình cho Collection:
Name Document (Tùy ý) Xác định các tùy chọn về
Trang 22Tham số options tùy ý, vì thế chỉ cần đặt tên của Collection Dưới đây là danh sách các tùy chọn bạn có thể sử dụng :
Capped Boolean (Tùy ý) Nếu true, kích hoạt một
Capped Collection Đây là một Collection có kích cỡ cố định mà tự động ghi đè các entry cũ nhất khi nó tiếp cận kích cỡ tối đa Nếu bạn xác định là true, thì bạn cũng cần xác định tham số size
autoindexID Boolean (Tùy ý) Nếu true, tự động tạo chỉ mục
trên trường_id Giá trị mặc định là false
trị byte) cho một Capped Collection Nếu tham số capped là true, thì bạn cũng cần xác định trường này
đa được phép trong một Capped Collection
Bảng 1.6 Bảng trường, kiểu và miêu tả
Trong khi thực hiện việc chèn dữ liệu vào Document, đầu tiên MongoDB kiểm tra trường size của Capped Collection, sau đó mới kiểm tra trường max
Ví dụ: Cú pháp cơ bản của phương thức createCollection( ) mà không có các options như sau:
>use test
switched to db test
>db.createCollection("mycollection")
Trang 23Bạn có thể kiểm tra Collections bằng câu lệnh:
- Xóa Collection trong MongoDB:
Phương thức db.collection.drop( ) trong MongoDB được sử dụng để xóa một collection cơ sở dữ liệu Cú pháp:
Ví dụ: đầu tiên kiểm tra các collections bên trong:
Bây giờ xóa 1 collection:
Sau đó kiểm tra các cơ sở dữ liệu Collections bên trong:
>
Trang 24title: 'MongoDB Overview',
description: 'MongoDB is no sql database',
- Chèn Document trong MongoDB:
Để chèn dữ liệu vào Collection trong MongoDB, bạn cần sử dụng phương thức insert( ) hoặc save( ) Cú pháp:
Ví dụ:
Ở đây, mycol là tên Collection, đã được tạo trong phần trên Nếu
collection này chưa tồn tại trong cơ sở dữ liệu, thì MongoDB sẽ tạo Collection này và chèn Document nào trong đó Trong document được chèn, nếu chúng
ta không xác định tham số_id, thì MongoDB gán một ObjectID duy nhất cho document này _ID là một số thập lục phân duy nhất, dài 12 byte cho mỗi Document trong một Collection 12 byte được phân chia như sau (đã được mô
Trang 25{
title: 'MongoDB Overview',
description: 'MongoDB is no sql database',
title: 'NoSQL Database',
description: 'NoSQL database doesn't have tables',
message: 'My first comment',
dateCreated: new Date(2013,11,10,2,35),
like: 0
Để chèn nhiều document trong một truy vấn đơn, bạn có thể truyền một
mảng các document trong lệnh insert( ) Ví dụ:
bytes incrementer)
Trang 26>db.mycol.find().pretty()
{
- Truy vấn trong Document trong MongDB
Để truy vấn dữ liệu từ Collection trong MongoDB, bạn cần sử dụng
phương thức find( ) trong MongoDB Cú pháp:
Phương thức find( ) sẽ hiển thị tất cả các Document ở dạng không có cấu trúc( hiển thị không theo cấu trúc nào) cú pháp:
Trang 27Trong phương thức find( ), nếu bạn truyền nhiều key bằng cách phân biệt chúng bởi dấu phẩy, thì MongoDB xem nó như là điều kiện AND Cú pháp cơ bản của AND trong MongoDB như sau:
>db.mycol.find({key1:value1, key2:value2}).pretty()
Trang 28>db.mycol.find({"by":"tutorials point","title": "MongoDB
{
Để truy vấn document dựa trên điều kiện OR, bạn cần sử dụng khóa $or
Cú pháp cơ bản của OR trong MongoDB như sau:
Ví dụ:
Trang 29{ "_id" : ObjectId(5983548781331adf45ec5), "title":"MongoDB Overview"}
>db.mycol.update({'title':'MongoDB Overview'},{$set:{'title':'New
- Cập nhật Document trong MongoDB
Phương thức update( ) hoặc save( ) trong MongoDB được sử dụng để cập nhật document vào trong một collection Phương thức update( ) cập nhật các giá trị trong document( ) đang tồn tai trong phương thức save( ) thay thế document đang tồn tại với document đã truyền trong phương thức save( ) đó
Cú pháp:
Ví dụ:
Ví dụ sau sẽ thiết lập tiêu đề mới „New MongoDB Tutorial‟ của Document
có tiêu đề là „Mongo Overview‟:
Trang 30{ "_id" : ObjectId(5983548781331adf45ec5), "title":"MongoDB Overview"}
>db.mycol.remove({'title':'MongoDB Overview'})
>db.mycol.find()
>
- Xóa Document trong MongoDB:
Phương thức remove( ) trong MongoDB được sử dụng để xóa Document từ Collection Phương thức remove( ) nhận hai tham số Tham số đầu tiên là deletion criteria xác định document để xóa, và tham số thức hai là just one dùng để xóa 1 hay nhiều document Cú pháp:
Ví dụ:
Remove document có title là „MongoDB Overview‟:
>db.mycol.find()
>
Trang 31{ "_id" : ObjectId(5983548781331adf45ec5), "title":"MongoDB Overview"}
>db.mycol.find({},{"title":1,_id:0})
>
Phương thức find( ) trong MongDB, đã được giải thích trong truy vấn document chấp nhận tham số tùy ý thứ hai mà là danh sách các trường bạn muốn lấy Trong MongDB, khi bạn thực thi phương thức find( ), thì nó hiển thị các trường của một Document Để giới hạn điều này, bạn cần thiết lập danh sách các trường với giá trị 1 hoặc 0 Giá trị 1 được sử dụng để hiển thị trường, trong khi 0 được dùng để ẩn trường Cú pháp:
Ví dụ:
Ví dụ sau sẽ hiển thị tiêu đề của Document trong khi truy vấn nó:
>db.COLLECTION_NAME.find({},{KEY:1})
Trang 32CHƯƠNG 2 AN TOÀN VÀ BẢO MẬT THÔNG TIN ĐỐI VỚI CSDL
NOSQL VÀ HỆ QUẢN TRỊ CSDL MONGODB 2.1 Các hiểm họa mất an toàn thông tin trong cơ sở dữ liệu NoSQL
Cơ sở dữ liệu (CSDL) của các tổ chức, doanh nghiệp luôn là mục tiêu của nhiều cuộc tấn công Bởi đây là nơi lưu trữ các thông tin về khách hàng và nhiều dữ liệu bí mật khác.Một trong những nguyên nhân khiến cho các CSDL
dễ bị tổn thương bởi các cuộc tấn công là do các tổ chức, doanh nghiệp chưa
có biện pháp bảo vệ đầy đủ cho tài nguyên này Khi kẻ xấu truy cập vào dữ liệu nhạy cảm, có thể thực hiện tất cả các công việc để gây mất mát về tài chính hoặc phá hoại danh tiếng của tổ chức, doanh nghiệp Sau đây là liệt kê
10 hiểm họa hàng đầu với an toàn thông tin cơ sở dữ liệu:
2.1.1 Lạm dụng các đặc quyền vượt mức và các đặc quyền không còn được dùng
Khi người dùng (hay ứng dụng) được gán các đặc quyền truy cập CSDL vượt qua các yêu cầu trong chức năng công việc của họ, thì những đặc quyền này có thể bị lạm dụng cho các mục đích xấu Ví dụ, một người phụ trách cho CSDL của trường đại học với công việc là thay đổi các thông tin liên lạc của sinh viên, người này có thể lạm dụng quyền hạn của mình với quyền cập nhật CSDL để sửa đổi trái phép điểm của sinh viên Hoặc, một nhân viên ngân hàng với công việc là chỉ được thay đổi thông tin liên lạc của những người nắm giữ tài khoản Tuy nhiên, người này có thể lạm dụng quyền vượt mức để tăng số dư tài khoản tiết kiệm của một đồng nghiệp…
Bên cạnh đó, khi một người thôi không làm việc tại một tổ chức, thường các quyền truy cập dữ liệu nhạy cảm của họ vẫn không được thay đổi Và nếu những người này có mục đích xấu, họ có thể sử dụng những đặc quyền cũ của mình để lấy cắp dữ liệu có giá trị cao, hoặc gây thiệt hại cho hệ thống
Trang 33Một lý do đơn giản là những quản trị viên CSDL vì bận rộn với công việc quản trị của mình, nên không có thời gian để định nghĩa và cập nhật cơ chế kiểm soát quyền truy cập cho mỗi người dùng Kết quả là một số lượng lớn người dùng được gắn quyền truy nhập mặc định vượt xa so với yêu cầu công việc của họ
2.1.2 Lạm dụng đặc quyền
Người dùng có thể lạm dụng các quyền hợp pháp của mình để thực hiện những mục đích không hợp pháp Ví dụ, một nhân viên chăm sóc sức khỏe có quyền xem các bản ghi liên quan đến một bệnh nhân trong CSDL một ứng dụng web Tuy nhiên, thường cấu trúc của ứng dụng web sẽ hạn chế không cho phép người dùng được xem nhiều bản ghi, về lịch sử khám bệnh liên quan đến nhiều bệnh nhân một cách đồng thời Khi đó,nếu có mục đích xấu, nhân viên này có thể bỏ qua hạn chế của ứng dụng web đó bằng cách kết nối tới CSDL bằng mộtchương trình khách khác, chẳng hạn MS-Exel Trong đó, anh
ta sử dụng MS-Exel với quyền ủy nhiệm đăng nhập hợp lệ của mình nên có thể lấy ra và lưu lại tất cả các bản ghi về bệnh nhân trong CSDL
Ở đây, cần xem xét hai rủi ro Thứ nhất, nhân viên có mục đích xấu, sẵn sàng bán các bản ghi thông tin bệnh nhân để lấy tiền Thứ 2 (phổ biến hơn) do nhân viên cẩu thả, truy xuất và lưu trữ một lượng lớn thông tin bệnh nhân vào máy khách của họ với mục đích công việc hợp pháp Tuy nhiên, nhân viên này có thể lộ dữ liệu bệnh nhân ở một máy tính đầu cuối, vì nó trở thành điểm yếu cho Trojan, hay những kẻ lấy cắp máy tính
2.1.3 Tấn công SQL Injection
Trong một tấn công SQL Ịnection, kẻ tấn công thường chèn (hay “ tiêm”) các mệnh đề CSDL bất hợp pháp vào nguồn dữ liệu SQL dễ bị tổn thương Thường nguồn dữ liệu đích bao gồm các thủ tục được lưu và các tham số đầu vào của ứng dụng web Các nguồn này bị chèn những mệnh đề
Trang 34hợp pháp,sau đó chúng truyền tới cơ sở dữ liệu và được xử lý tại đây Với SQL Injection, kẻ tấn công có thể đạt được truy nhập không giới hạn tới toàn
bộ CSDL
2.1.4 Mã độc
Tội phạp mạng thường sử dụng các cuộc tấn công tiên tiến, pha trộn nhiều chiến thuật, chẳng hạn như: lừa đảo qua email và sử dụng phầm mền độc hại để xâm nhập vào các tổ chức và lấy cắp dữ liệu nhạy cảm Những người dùng hợp pháp không biết phần mềm độc hại đã lây nhiễm thiết bị của mình, vì vậy vô hình chung họ trở thành một đường dẫn cho các nhóm tin tặc này truy cập vào mạng dữ liệu nhạy cảm
2.1.5 Lợi dụng vết kiểm toán yếu
Đối với bất kỳ hoạt động nào liên quan đến CSDL, cần ghi lại một cách
tự động tất cả các giao dịch CSDL nhạy cảm và/ hoặc các giao dịch bất thường Chính sách kiểm toán CSDL yếu sẽ dẫn đến những rủi ro nghiêm trọng cho tổ chức với nhiều mức độ khác nhau
Các cơ chế kiểm toán là hàng rào bảo vệ CSDL cuối cùng Nếu kẻ tấn công có thể phá vỡ các hàng rào khác thì cơ chế kiểm toán dữ liệu vẫn có thể xác định sự tồn tại của một xâm nhập sau những hành động của kẻ tấn công trước đó Những vết kiểm toán thu được tiếp tục có thể dùng để xác định người dùng nào vừa thực hiện được hành động này, đồng thời qua vết kiểm toán có thể khôi phục lại hệ thống
Cơ chế kiểm toán yếu đồng nghĩa với việc hệ thống không thể ghi lại đầy
đủ những hành động của người dùng dẫn đến việc không thể phát hiện và ngăn chặn kịp thời những hành động tấn công của người dùng hoặc một nhóm người dùng Do vậy, kiểm toán là cơ chế quan trọng mà mọi hệ thống cần phải
có để đảm bảo an toàn thông tin
Trang 352.1.6 Lợi dụng sự sơ hở để khai thác phương tiện lưu trữ
Các phương tiện lưu trữ sao lưu thường xuyên không được bảo vệ khỏi các tấn công Kết quả là đã có rất nhiều lỗ hổng bảo mật liên quan đến các hành vi trộm cắp các đĩa và băng sao lưu CSDL Hơn nữa, sự thất bại trong việc kiểm toán và giám sát các hoạt động của quản trị viên – người lẽ ra chỉ có thể truy cập ở mức độ thấp vào thông tin nhạy cảm, có thể đặt dữ liệu của tổ chức vào những rủi ro và nguy cơ khó lường Để hạn chế điều này, cần có những biện pháp thích hợp để bảo vệ bản sao lưu của những dữ liệu nhạy cảm và theo dõi những người dùng có đặc quyền cao nhất trong hệ thống nhằm đảm bảo an toàn cho dữ liệu của tổ chức
2.1.7 Khai thác các CSDL có điểm yếu và bị lỗi cấu hình
Thường các CSDL đều có chứa các điểm yếu dễ bị tổn thương và chưa được vá lỗi hoặc chứa các tài khoản và các tham số cấu hình mặc định Kẻ tấn công có thể khai thác những lỗ hổng đó để khởi động các cuộc tấn công Các
tổ chức thường cố gắng duy trì cấu hình CSDL của mình Tuy nhiên, việc vá lỗi cho CSDL mất rất nhiều thời gian ( có thể hàng tháng) mới hoàn thành, ngay cả khi các bản vá đã có sẵn Kết quả là trong thời gian vá lỗi, các CSDL chưa được vá lỗ hỏng vẫn còn rất nhiều điểm yếu dễ bị tổn thương
Theo một thống kê nhóm người dùng của Oracle năm 2012 có khoảng 28% người dùng chưa bao giờ áp dụng một bản vá quan trọng nào cho phiên bản Oracle mà họ đang sử dụng Ngoài ra, 10% người dùng của Oracle mất khoảng hơn một năm để hoàn thành xong quá trình vá lỗi cho sản phẩm họ sử dụng
2.1.8 Rò rỉ các dữ liệu nhạy cảm không được quản lý
Nhiều công ty đã thực hiện duy trì việc kiểm kê chính xác các CSDL
và các đối tượng dữ liệu quan trọng chứa trong các CSDL của họ Các CSDL thường có chứa một số thông tin nhạy cảm, có thể chúng được lưu trữ rải rác trong CSDL Do đó, nếu không có những biện pháp điều khiển
Trang 36và kiểm soát quyền phù hợp thì những thông tin nhạy cảm này rất dễ bị truy xuất bất hợp pháp
2.1.9 Tấn công từ chối dịch vụ
Từ chối dịch vụ (DOS) là một loại tấn công trong đó các truy cập của người dùng hợp pháp vào các ứng dụng mạng hay vào dữ liệu sẽ bị từ chối Các điều kiện từ chối dịch vụ có thể được tạo ra qua nhiều kỹ thuật( nhiều trong đó liên quan đến các điểm yếu nền tảng) Ví dụ, tấn công DOS có thể dựa trên điểm yếu nền tảng CSDL để phá hủy một máy chủ Ngoài ra, còn có một số kỹ thuật DOS phổ biến khác như: sửa đổi dữ liệu, làm nghẽn mạng (network flooding) và làm quá tải tài nguyên máy chủ
2.1.10 Vấn đề đào tạo và chuyên gia an ninh mạng còn hạn chế
Những cơ chế kiểm soát an toàn bên trong tổ chức hiện nay chưa đáp ứng kịp so với sự tăng nhanh của dữ liệu được lưu trữ và nhiều tổ chức không được trang bị đầy đủ những giải pháp an toàn để đối phó với những sự cố và vi phạm an ninh thường xuyên xảy ra Đó là do thiếu năng lực chuyên môn cần thiết để thực hiện các kiểm soát an toàn, các chính sách bảo mật và vấn đề đào tạo
Chiến lược phòng thủ CSDL nhiều lớp:
Mười hiểm họa an toàn CSDL hàng đầu có thể được ngăn chặn bằng cách thực hiện các bước theo quy luật và có sự kiểm tra bên trong Có nhiều loại tấn công khác nhau vào CSDL và chúng ta có thể được sử dụng kết hợp với nhau để tăng sức mạnh, vì thế một chiến lược phòng thủ nhiều lớp là cần thiết để bảo vệ CSDL một cách tốt nhất
2.2 Các giải pháp an toàn và bảo mật thông tin trong MongoDB
2.2.1 Các giải pháp mã hóa CSDL
Trong bối cảnh bảo mật dữ liệu, quá trình mã hóa được sử dụng để chuyển đổi hoặc mã hóa dữ liệu gốc thành dữ liệu không thể đọc được gọi là
Trang 37văn bản mã sau đó giải mã nó trở thành một định dạng có thể đọc được gọi là văn bản rõ Dưới đây là một số khái niệm về mã hóa trong MongoDB
- Mô hình phân cấp khóa mã hóa trong MongoDB:
Hình 2.1 Bảng hệ thống phân cấp khóa
Hệ thống phân cấp này cung cấp một cơ sở bảo mật cao cho dữ liệu nhạy cảm Tại phía trên cùng của hệ thống phân cấp này là khóa chủ dịch vụ SMK, khóa này thực hiện bảo vệ khóa chủ CSDL DMK tại mỗi ứng dụng CSDL trong MongoDB Khóa chủ CSDL DMK được sử dụng để mã hóa các khóa riêng như khóa bất đối xứng và chứng nhận trong CSDL Các khóa đối
Trang 38xứng trong CSDL được sử dụng để bảo vệ các khóa đối xứng khác cũng như
dữ liệu trong CSDL
- Bảo vệ khóa
Khóa mã hóa và mật khẩu bảo vệ khóa đảm bảo tính năng bảo mật dữ liệu nhạy cảm Thường xuyên bảo vệ các khóa và mật khẩu làm giảm sự xuất hiện của việc phá hủy dữ liệu mã hóa thông qua sự theo dõi các giá trị mã hóa của tin tặc Sự bảo vệ này được điều khiển thông qua một vòng đời của mỗi khóa, minh họa trong hình sau
Hình 2.2 Vòng đời của khóa b) Các thuật toán mã hóa dữ liệu được sử dụng trong CSDL MongoDB
- Thuật toán đối xứng
• Thuật toán DES
• Thuật toán AES
- Thuật toán bất đối xứng RSA
- Thuật toán băm
• MD5
• SHA
c) Mã hóa cột
- Cơ bản mã hóa cột
Trang 39Ở cấp độ ô, mức độ tốt nhất của mã hóa, mỗi ô chứa dữ liệu mã hóa được bảo vệ bởi một khóa cụ thể do người dùng thực hiện mã hóa Giải mã được thực hiện thông qua việc sử dụng cùng một khóa hoặc một khóa công khai tùy thuộc vào phương pháp mã hóa được áp dụng
Ngoài ra mã hóa cột là mã hóa tất cả các ô trong một cột duy nhất cùng với khóa và cho phép giải mã với khóa này sau đó cấp quyền cho các thành viên với vai trò của CSDL
- Ưu và nhược điểm của mã hóa cột
• Mã hóa cột cung cấp mã hóa ở mức độ tốt hơn nhiều so với mã hóa tệp tin sao lưu dữ liệu Nó cung cấp phương tiện mã hóa một cột duy nhất trong bảng từ một cột khác
• An toàn – yếu tố dữ liệu được mã hóa duy trì ở trạng thái đó cho đến khi
nó giải mã
• Người sử dụng – người sử dụng có thể được cấp quyền truy cập vào khóa
mã hóa và giải mã dữ liệu
- Nhược điểm
• Hạn chế kiểu dữ liệu – thực hiện mã hóa cột yêu cầu sửa đổi kiểu dữ liệu
• Trong quá trình quét bảng dữ liệu, các giá trị bị mã hóa một cách gượng
ép Khóa chính và chỉ mục sau khi mã hóa không còn sử dụng được
• Tổng chi phí xử lý – các xử lý cho quá trình mã hóa và giải mã tốn chi phí cao
d) Các bước thực hiện mã hóa cột
- Xác định thuật toán mã hóa cột
Có nhiều thuật toán có sẵn được chọn để mã hóa dữ liệu Tùy thuộc vào người sử dụng mà chọn thuật toán phù hợp Đối với mã hóa dữ liệu sử dụng thuật toán bất đối xứng dựa trên một thuật toán phức tạp và cung cấp mức độ bảo mật rất cao Còn về mã hóa đối xứng thì sức mạnh của mã hóa này phụ
Trang 40thuộc vào độ dài của các khóa được sử dụng Các khóa có kích thước dài hơn cung cấp một cấp độ bảo mật cao hơn nhưng đi kèm chi phí xử lý cao hơn Các thuật toán mã hóa đối xứng nói chung ít phức tạp và do đó yếu hơn so với
mã hóa bất đối xứng nhưng kết quả xử lý nhanh hơn
- Thực hiện hệ thống khóa cấp bậc
Theo hệ thống phân cấp khóa mã hóa nêu trên, để mã hóa dữ liệu bằng khóa đối xứng, các bước thực hiện như sau:
Bước đầu tiên sẽ tạo một khóa DMK
Bước tiếp theo là tạo ra một chứng nhận, chứng nhận này được bảo vệ bởi khóa chủ CSDL quan trọng
Khóa cuối cùng trong hệ thống cấp bậc là khóa đối xứng sẽ được sử dụng để mã hóa dữ liệu nhạy cảm Việc lựa chọn một khóa đối xứng dựa trên các thuật toán nhanh và mạnh
- Thay đổi cấu trúc dữ liệu
Mã hóa cột đòi hỏi giá trị mã hóa được lưu trữ trong một cột với kiểu
dữ liệu là varbinary Để tiến hành mã hóa cột, tại bước này phải tạo một cột
dữ liệu mới với kiểu dữ liệu varbinary Cột này để lưu dữ liệu mã hóa
- Mã hóa cột
Sau khi đã tạo mới cột dữ liệu mã hóa, sử dụng một trong bốn phương thức: EncryptByAsymKey, EncrypByCert, EncrypByKey và EncrypByPassphrase để mã hóa dữ liệu cột và lưu dữ liệu mã hóa vào cột mới tạo ra kiểu dữ liệu là varbinary
2.2.2 Giải pháp mã hóa đường truyền
MongoDB hỗ trợ mã đường truyền dữ liệu từ người dùng đến Hệ QTCSDL sử dụng giao thức SSL/TLS
- Cấu trúc giao thức SSL/TLS: