MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Bảo mật cơ sở dữ liệu 101:Hiểu đặc quyền truy cập cơ sở dữ liệu

Dữ liệu là vàng mới cho các công ty và tổ chức lớn Nó được coi là mạch máu của hầu hết các doanh nghiệp hiện đại và có rất nhiều cơ hội để bán hoặc tiếp thị cho lượng lớn khán giả của Internet. Đối với các công ty thương mại điện tử hoặc truyền thông xã hội lớn, dữ liệu thúc đẩy khả năng tạo ra doanh thu và thu nhập lớn của họ nhờ đó dữ liệu được bảo mật chặt chẽ và có khả năng bảo vệ tinh vi chống lại mọi cuộc tấn công độc hại và xâm nhập trực tuyến.

Vì vậy, dữ liệu giống như vàng, trạng thái có giá trị của nó bắt đầu sau khi nó được xử lý. Giá trị thô của nó chứa đầy một mớ hỗn độn như thể nó là một cái ổ khổng lồ chưa được phân loại Sau khi bản chất của nó được cấu trúc, giá trị của dữ liệu sẽ nhân lên. Chỉ cần tưởng tượng, nếu bạn có một trang web giáo dục cho phép người dùng trả tiền. Khi bạn có hàng tấn bài giảng và mô-đun mà đối tượng mục tiêu của bạn có thể học hỏi, phát triển và đạt được mức năng suất, bạn đã nắm bắt được mùi vị của cơ hội và thành công khi bạn có cơ hội điều chỉnh phí trước khi họ có thể nhận được dữ liệu có cấu trúc mà họ muốn . Mặc dù điều này nghe có vẻ giống như giấc mơ thành công của mọi người, nhưng khi nói đến dữ liệu lớn và bản chất cơ bản của nó, có rất nhiều phức tạp để xử lý nó và mối quan tâm quan trọng là các mối đe dọa đối với cơ sở dữ liệu của bạn.

Các mối đe dọa cơ sở dữ liệu nói chung có rất nhiều lĩnh vực để xem xét và kiểm tra. Mặc dù, các nguyên nhân phổ biến nhất là đánh cắp dữ liệu và vi phạm dữ liệu. Một mối đe dọa phổ biến khác là các đặc quyền rộng rãi hoặc quyền truy cập vào cơ sở dữ liệu được chỉ định và / hoặc cung cấp không chính xác cho người dùng. Bảo vệ toàn bộ máy chủ lưu trữ là mối quan tâm của bất kỳ ai quản lý cơ sở dữ liệu. Tăng cường bảo mật của bạn và đối phó với tất cả các loại tấn công hiện hành như nghe trộm, thay đổi, phát lại và từ chối dịch vụ (DDoS) không chỉ đối với cơ sở dữ liệu mà còn đối với toàn bộ ngăn xếp bên dưới có quyền truy cập hoặc giao diện với bộ nhớ dữ liệu của bạn.

Trong blog này, chúng ta sẽ thảo luận về mức độ cần thiết tại sao bạn cần hiểu và có các đặc quyền truy cập cơ sở dữ liệu.

Nguy cơ do Đặc quyền Truy cập Sai

Chúng tôi chắc chắn phải chia sẻ hoặc ít nhất là tạo một người dùng ở cấp độ vật lý và kỹ thuật. Trong khi, cung cấp quyền truy cập cho người khác có nghĩa là bạn tin tưởng người đó. Điều này cũng có nghĩa là người được ủy quyền phải hiểu sự nguy hiểm và nguy hiểm của việc chia sẻ quyền truy cập và dữ liệu từ thế giới bên ngoài.

Điểm quan trọng nhất của việc đảm bảo đặc quyền truy cập của bạn là mức độ hiểu biết về bảo mật giữa các kỹ sư của bạn như quản trị viên cơ sở dữ liệu, kỹ sư bảo mật hoặc quản trị viên máy chủ. Nếu sự hiểu biết kém hoặc thiếu kiến ​​thức và kinh nghiệm, đặc biệt là về các lỗ hổng và sự phơi bày cập nhật nhất, đó có thể là một vấn đề đối với tổ chức hoặc công ty.

Có những điều cơ bản phải được hiểu và lưu ý để nó có mức tối thiểu hoặc ít nhất là không thể bị xâm nhập hoặc lộ ra ngoài. Nếu không, điều này có thể khiến dữ liệu của bạn gặp nguy hiểm từ thế giới bên ngoài hoặc ít nhất là đến nhầm người hoặc không đúng người. Có thể đánh cắp dữ liệu của bạn và sử dụng nó vì lợi ích riêng của họ để thu lợi về tài chính hoặc họ có thể đòi tiền chuộc từ bạn và yêu cầu tiền để đổi lấy việc thực hiện bảo mật kém của bạn.

Trong phần này, chúng ta hãy xem một số nguyên nhân phổ biến của những mối đe dọa bảo mật này.

Chia sẻ Đặc quyền Truy cập root

Đối với môi trường tại chỗ, trường hợp vi phạm cơ sở dữ liệu thông thường chủ yếu dựa vào nguy cơ cấp quyền truy cập root ở cấp hệ điều hành hoặc cấp phần mềm cơ sở dữ liệu. Có những trường hợp mật khẩu gốc được phân phối và hiển thị cho một số người, mật khẩu này chỉ được giới hạn cho các quản trị viên chỉ làm việc trên hệ thống. Điều này có thể xảy ra do thiếu danh sách kiểm tra bảo mật hoặc các biện pháp trong giao thức trước khi triển khai các đặc quyền truy cập. Có một danh sách kiểm tra bảo mật giúp theo dõi bất kỳ quyền truy cập và đặc quyền nào có thể tiềm ẩn rủi ro và nguy hiểm, đặc biệt khi một người dùng hệ điều hành cụ thể bị kẻ gian xâm nhập. Danh sách kiểm tra cũng giúp bạn thảo luận hoặc có cái nhìn tổng quan về các biện pháp bảo mật được áp dụng và được triển khai như một giao thức cho tổ chức của bạn.

Ví dụ:người dùng có quyền truy cập root có thể gây ra nhiều thiệt hại như xóa tất cả dữ liệu của bạn khỏi ổ lưu trữ vật lý, đặt lại mật khẩu gốc, tạo người dùng / mật khẩu của riêng họ. như một người dùng hợp pháp (có thể được sử dụng trong một thời gian rất dài để thu thập dữ liệu trừ khi bị bắt sớm), sudo với một người dùng hệ điều hành khác như người dùng postgres, và nhiều thứ đáng sợ hơn mà kẻ xâm nhập có thể tận hưởng.

Nếu bạn đang sử dụng MongoDB, người dùng có quyền truy cập root có thể đăng nhập vào máy chủ cơ sở dữ liệu của bạn. Miễn là kẻ xâm nhập có thể tìm thấy /etc/mongod.conf hoặc tệp cấu hình mongodb của bạn và định vị đường dẫn của khóa của bạn, thì bạn có thể dễ dàng đăng nhập. Ví dụ:sử dụng lệnh này cho phép bạn đăng nhập,

[[email protected] ~]# mongo -u __system -p "$(tr -d '\011-\015\040' < /etc/mongo-cluster.key)" --authenticationDatabase local --eval "db.adminCommand( { listDatabases: 1, nameOnly:1 } )"

Hãy xem xét thiết lập cài đặt thông thường MySQL, quyền truy cập root có thể được để lại mà không cần mật khẩu để truy cập localhost. Thật dễ dàng để có được quyền truy cập khi bạn đã root. Quyền truy cập tệp như $ HOME / .my.cnf hoặc xem nội dung của /etc/my.cnf sẽ giúp bạn dễ dàng có được quyền truy cập.

Bạn chỉ nên giới hạn hoặc chỉ cấp quyền truy cập root của bạn y cho ít nhất những người đang làm việc trực tiếp với máy chủ để cập nhật các gói, bản cập nhật bảo mật và áp dụng các bản vá được yêu cầu bởi nhóm phát triển.

Sử dụng sudoers đúng cách

Phần mềm cơ sở dữ liệu nguồn mở chính thống như PostgreSQL, MySQL / MariaDB, MongoDB yêu cầu tạo một người dùng hệ điều hành cụ thể. Người dùng hệ điều hành yêu cầu một vai trò cụ thể được giới hạn để cho phép quản lý các khả năng của nó trong chức năng cơ sở dữ liệu. Quyền đọc và ghi thích hợp cần được đặt cho đường dẫn thiết bị lưu trữ bên dưới. Tuy nhiên, có những trường hợp một số người đang sử dụng những người dùng cụ thể này cho phần mềm cơ sở dữ liệu có các đặc quyền sudo cũng có khả năng truy cập người dùng được chỉ định duy nhất để truy cập cơ sở dữ liệu. Các đặc quyền của người dùng trong HĐH phải có giới hạn và tốt nhất nên giới hạn quyền truy cập của nó dựa trên vai trò. Ví dụ:đối với Máy chủ Percona CVE-2016-6664, mặc dù điều này đã được khắc phục, nhưng loại lỗ hổng này là một ví dụ về một cuộc tấn công có thể xảy ra từ một người dùng cụ thể có quyền truy cập vào tài khoản MySQL và giành được quyền truy cập root. Người dùng Sudo phải được xem xét và yêu cầu hiểu rằng vai trò này chỉ được giới hạn trong việc thực hiện một công việc cụ thể.

Việc bật Hệ thống kiểm toán Linux chẳng hạn như Auditd có thể giúp cải thiện bảo mật vì nó tăng các đặc quyền truy cập bị bỏ qua ở cấp hệ điều hành có thể dẫn đến lỗ hổng bảo mật cho cơ sở dữ liệu của bạn. SELinux và AppArmor là những ví dụ điển hình về mô-đun bảo mật cho môi trường Linux lưu trữ hệ thống cơ sở dữ liệu của bạn để giúp cải thiện bảo mật chống lại những kẻ xâm nhập hoặc vi phạm có thể dẫn đến việc dữ liệu của bạn bị nguy hiểm.

Cấp Đặc quyền Truy cập Cơ sở dữ liệu

Cơ sở dữ liệu nguồn mở chính thống cung cấp một danh sách chi tiết các đặc quyền có thể được tùy chỉnh để chỉ được gán cho một hành động cụ thể cho một người dùng cụ thể. Đây là một cách mở rộng để giúp người quản trị cơ sở dữ liệu có thể phân tách dữ liệu một cách an toàn và hành động mục tiêu dựa trên các đặc quyền cụ thể.

Đặc quyền Truy cập Thông thường

Các đặc quyền được sử dụng phổ biến nhất của bạn sẽ dựa trên ba danh mục sau:

  • Có thể Đọc / Tìm như CHỌN, HIỂN THỊ XEM, TÌM

  • Có thể Chèn / Cập nhật / Xóa như CHÈN, CẬP NHẬT, XÓA, XÓA

  • Có thể thực hiện các hành động quản trị như TẠO NGƯỜI DÙNG, TẠO VAI TRÒ, ALTER, THAY THẾ, DROP NGƯỜI DÙNG / BẢNG / Của SCHEMA, hoạt động tiêu diệt, v.v.

Các danh mục này có thể được mở rộng thành các đặc quyền tinh vi hơn dựa trên danh sách kiểm tra bảo mật của bạn. Việc xác định một người dùng cụ thể được tạo ra với các đặc quyền cụ thể cho một tác vụ cụ thể là rất tốt. Ví dụ:một ứng dụng có thể có nhiều người dùng với các đặc quyền được chỉ định của riêng nó được chỉ định. Mặc dù ứng dụng có thể phức tạp với kiểu triển khai này. Có những trường hợp kết nối mỗi người dùng có thể tiêu tốn nhiều tài nguyên, chẳng hạn như sử dụng ORM như Hibernate chẳng hạn. Mặt khác, nó phụ thuộc vào thiết kế kiến ​​trúc của ứng dụng của bạn. Mục đích của cơ sở mỗi người dùng trong một ứng dụng có thể giúp duy trì đặc quyền truy cập cơ sở dữ liệu được tinh chỉnh hơn và tránh gây hại cho dữ liệu của bạn do xóa, cập nhật không mong muốn hoặc tiêm SQL tấn công cơ sở dữ liệu của bạn.

Trong hầu hết các trường hợp, một ứng dụng sử dụng một người dùng để kết nối với cơ sở dữ liệu, cơ sở dữ liệu này chỉ bị giới hạn ở các hành động dành riêng cho ứng dụng đó. Tốt nhất là bạn nên thiết kế đặc quyền người dùng ứng dụng của mình để chỉ quyền truy cập đọc-ghi. Trong khi nếu các hành động quản trị được yêu cầu, một tập lệnh, daemon hoặc mô-đun cụ thể trong quyền truy cập ứng dụng của bạn phải được tách biệt với người dùng bình thường. -.

Cần tránh việc truy cập cơ sở dữ liệu

PostgreSQL và MySQL / MariaDB có tùy chọn này để cấp cho người dùng bằng TẤT CẢ các đặc quyền. Đối với PostgreSQL, tốt nhất bạn nên có người dùng của bạn với NOSUPERUSER. Nếu có thể, điều này phải được tránh bằng mọi giá. Đặc quyền này có thể thực hiện hầu hết mọi hành động có khả năng phá hủy hoặc gây hại cho dữ liệu quý giá của bạn. Bạn có thể sử dụng TẤT CẢ các đặc quyền cho quyền truy cập quản trị hoặc root của mình nhưng chỉ giới hạn ở những người dùng yêu cầu các đặc quyền cấp cao để thực hiện các tác vụ quản trị và quản lý dữ liệu.

Truy cập Trên Cơ sở Mỗi Bảng hoặc Trên mỗi Lược đồ

Bạn chỉ nên cung cấp quyền truy cập cho người dùng đối với các bảng được yêu cầu. . Vì vậy, ngay cả khi người dùng có một số đặc quyền quản trị, bất kỳ thiệt hại nào cũng chỉ xảy ra đối với một nhóm bảng giới hạn. Bạn có thể đặt trên toàn lược đồ; cung cấp quyền truy cập vào một bảng giới hạn cung cấp một loại đặc quyền chi tiết và nó giúp bạn giữ cho dữ liệu của mình không bị tổn hại.

Quyền truy cập bị giới hạn ở chỉ máy chủ lưu trữ

Kết nối qua địa chỉ IP tài nguyên giúp hạn chế quyền truy cập vào dữ liệu của bạn. Tránh sử dụng '%' chẳng hạn như trong MySQL,

GRANT SELECT, INSERT, DELETE ON mydb TO [email protected]'%' IDENTIFIED BY 'password';

Mức độ nguy hại có thể xảy ra với bất kỳ máy chủ nào để kết nối và đó không phải là điều bạn muốn xảy ra. Nó tiềm ẩn lỗ hổng và thách thức xâm nhập cơ sở dữ liệu của bạn là rất thấp.

Đối với PostgreSQL, hãy đảm bảo rằng bạn đã đặt pg_hba.conf và người dùng của mình thành giới hạn máy chủ lưu trữ cụ thể. Điều này cũng áp dụng cho MongoDB mà bạn có thể đặt nó trong tệp cấu hình MongoDB hoặc /etc/mongodb.conf. Trong MongoDB, bạn có thể thử với các Hạn chế xác thực và đặt clientSource hoặc serverAddress tương ứng nhưng chỉ những thứ bạn đang yêu cầu ứng dụng khách hoặc người dùng kết nối hoặc được xác thực.

Kiểm soát Truy cập Dựa trên Vai trò

Kiểm soát Truy cập Dựa trên Vai trò (RBAC) trong cơ sở dữ liệu cung cấp một cách thuận tiện để quản lý người dùng hoặc một cách dễ dàng để nhóm người dùng với đặc quyền được chỉ định được liên kết với danh sách người dùng hoặc nhóm người dùng.

Mặc dù bạn phải lưu ý rằng các vai trò được xử lý khác nhau trong bất kỳ cơ sở dữ liệu nguồn mở nào. Ví dụ:MySQL đã định nghĩa các vai trò như sau,

Vai trò MySQL là một tập hợp các đặc quyền được đặt tên. Giống như tài khoản người dùng, các vai trò có thể được cấp và thu hồi các đặc quyền từ chúng.

Tài khoản người dùng có thể được cấp các vai trò, điều này sẽ cấp cho tài khoản các đặc quyền liên quan đến từng vai trò. Điều này cho phép gán các tập hợp đặc quyền cho các tài khoản và cung cấp một giải pháp thay thế thuận tiện cho việc cấp các đặc quyền riêng lẻ, cho cả việc hình thành khái niệm về việc chỉ định đặc quyền mong muốn và triển khai chúng.

MongoDB xác định vai trò với RBAC là,

MongoDB sử dụng Kiểm soát Truy cập Dựa trên Vai trò (RBAC) để quản lý quyền truy cập vào hệ thống MongoDB. Người dùng được cấp một hoặc nhiều vai trò xác định quyền truy cập của người dùng vào các hoạt động và tài nguyên cơ sở dữ liệu. Bên ngoài nhiệm vụ vai trò, người dùng không có quyền truy cập vào hệ thống.

Trong khi ở PostgreSQL,

PostgreSQL quản lý quyền truy cập cơ sở dữ liệu bằng cách sử dụng khái niệm vai trò. Một vai trò có thể được coi là người dùng cơ sở dữ liệu hoặc một nhóm người dùng cơ sở dữ liệu, tùy thuộc vào cách vai trò được thiết lập. Vai trò có thể sở hữu các đối tượng cơ sở dữ liệu (ví dụ, bảng và chức năng) và có thể gán các đặc quyền trên các đối tượng đó cho các vai trò khác để kiểm soát ai có quyền truy cập vào đối tượng nào. Hơn nữa, có thể cấp quyền thành viên trong một vai trò này cho một vai trò khác, do đó cho phép vai trò thành viên sử dụng các đặc quyền được chỉ định cho một vai trò khác.

Khái niệm vai trò thay thế khái niệm "người dùng" và "nhóm". Trong các phiên bản PostgreSQL trước 8.1, người dùng và nhóm là các loại thực thể riêng biệt, nhưng bây giờ chỉ có vai trò. Mọi vai trò đều có thể hoạt động như một người dùng, một nhóm hoặc cả hai.

Mặc dù các cơ sở dữ liệu này thực hiện các vai trò cụ thể cho cách sử dụng của chúng, chúng có chung khái niệm chỉ định vai trò cho người dùng để gán các đặc quyền một cách thuận tiện. Việc sử dụng vai trò cho phép quản trị viên cơ sở dữ liệu quản lý những người dùng được yêu cầu đăng nhập hoặc truy cập cơ sở dữ liệu.

Hãy tưởng tượng nếu bạn có một danh sách người dùng mà bạn phải quản lý hoặc một danh sách người dùng có thể bị loại bỏ hoặc thu hồi khi không cần thiết nữa. Trong một số trường hợp cụ thể, nếu một nhiệm vụ nhất định cần hoạt động, người quản trị cơ sở dữ liệu có thể tạo người dùng với các vai trò đã có sẵn. (Những) người dùng đã tạo này có thể được chỉ định cho một vai trò cụ thể chỉ trong một khoảng thời gian ngắn, sau đó bị thu hồi khi không cần thiết.

Kiểm toán cũng giúp tách biệt những người dùng nghi ngờ có lỗ hổng bảo mật hoặc bị lộ dữ liệu, do đó, trong trường hợp đó, nó giúp quản lý người dùng với các vai trò rất dễ dàng.

Hệ thống Quản lý Người dùng

Nếu bảo mật dữ liệu của bạn được xử lý và triển khai một cách thích hợp, nó sẽ mở đường cho bạn thành công. Mặc dù không có giải pháp hoàn hảo nào vì các lỗ hổng và sự xâm nhập cũng luôn phát triển. Nó giống như một con sâu khi nó cố gắng ẩn nấp mọi lúc cho đến khi nó có thể đạt được mục tiêu để vi phạm bảo mật và giành quyền truy cập vào dữ liệu của bạn. Nếu không có các công cụ thích hợp như hệ thống cảnh báo hoặc tư vấn về bất kỳ sự không an toàn và lỗ hổng bảo mật nào, sẽ rất khó để bảo vệ dữ liệu của bạn.

ClusterControl giúp bạn quản lý người dùng của mình và xác minh hoặc kiểm tra các đặc quyền của người dùng từ bộ cân bằng tải đến người dùng cơ sở dữ liệu chính. Nó cũng cung cấp các cố vấn và cảnh báo để nó sẽ thông báo cho bạn về các lỗ hổng hoặc sự xâm nhập có thể xảy ra.

Ví dụ:sử dụng MySQL / MariaDB với ProxySQL trả trước các tính năng nhập và thêm người dùng. Đối với việc nhập người dùng, nó thu thập danh sách người dùng có mặt trong cụm MySQL / MariaDB hiện tại của bạn và đề nghị bạn xem xét các đặc quyền hiện tại của nó. Xem bên dưới,

Cũng trong trường hợp này, người dùng ProxySQL có thể bị vô hiệu hóa nhanh chóng nếu lỗ hổng đó đã được biết đến với người dùng cụ thể.

ClusterControl cũng cung cấp cho bạn khả năng quản lý trực tiếp người dùng từ cơ sở dữ liệu của bạn, chẳng hạn như cho MySQL / MariaDB hoặc PostgreSQL. Đối với MySQL / MariaDB, bạn có thể đi tới → Quản lý → Lược đồ và Người dùng.

Đối với PostgreSQL, → Quản lý → Quản lý người dùng.

Với ClusterControl, bạn có thể tùy chỉnh các cảnh báo của mình bằng cách sử dụng các cố vấn. Cố vấn là các thực thể dựa trên tập lệnh có thể sửa đổi được. Ví dụ:đây là trong một cụm MySQL / MariaDB như được hiển thị bên dưới, có thể được truy cập thông qua → Hiệu suất → Cố vấn:

Bằng cách nhấp vào nút Chỉnh sửa, bạn có thể tùy chỉnh cách ClusterControl sẽ phản ứng trong trường hợp nó tìm thấy người dùng có bất kỳ máy chủ lưu trữ nào hoặc '% "hoặc người dùng không có mật khẩu. Xem cách tập lệnh được hiển thị sau khi bạn nhấn vào Nút chỉnh sửa.

Khi ClusterControl phát hiện ra rằng bất kỳ cố vấn nào trong số này được kích hoạt, một cảnh báo sẽ được hiển thị và cũng sẽ được gửi đến email bạn đã thiết lập hoặc nếu có bất kỳ thông báo nào của bên thứ ba được tích hợp, nó sẽ được thông báo ở đó nữa.

Kết luận

Đặc quyền truy cập cơ sở dữ liệu là một trong những mục tiêu chính đáng lo ngại đối với các vi phạm và xâm nhập dữ liệu. Nếu người dùng cơ sở dữ liệu của bạn bị lộ hoặc nếu có mối đe dọa lớn đối với phiên bản cơ sở dữ liệu hiện tại chưa được vá, khả năng bị tấn công hoặc mục tiêu của ransomware và trộm cắp là rất cao. Việc hiểu các đặc quyền truy cập và đặt giới hạn chính xác sẽ giúp bạn giảm thiểu nguy cơ để lộ dữ liệu quý giá của mình.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Nhận tài liệu có các thẻ trong danh sách, được sắp xếp theo tổng số kết quả phù hợp

  2. Cách thực hiện truy vấn với cài đặt múi giờ trong Mongodb

  3. Nhiều dân cư - mongoosejs

  4. $ In khoản của MongoDB có đảm bảo thứ tự không

  5. mongodb tìm theo nhiều mục mảng