MongoDB là cơ sở dữ liệu hướng tài liệu đa nền tảng giúp lưu trữ và truy xuất dữ liệu nhanh chóng và dễ dàng. Cơ sở dữ liệu sử dụng cấu trúc giống JSON cho các tài liệu, chủ yếu quen thuộc với các ứng dụng hiện đại.
MongoDB sử dụng bộ sưu tập và bản thảo, theo đó tài liệu bao gồm các cặp khóa-giá trị, đơn vị dữ liệu cơ bản trong MongoDB. Ngược lại, bộ sưu tập chứa các hàm và tài liệu tương đương với các bảng cơ sở dữ liệu quan hệ.
Tạo người dùng mới trong MongoDB
Để thêm người dùng mới vào hệ thống, MongoDB cung cấp một kỹ thuật nội bộ được gọi là db.createUser (). Trái ngược với các hệ thống Cơ sở dữ liệu truyền thống, người dùng MongoDB bị ràng buộc với một cơ sở dữ liệu cục bộ được gọi là Cơ sở dữ liệu xác thực. Do đó, chúng không bị ràng buộc toàn cầu, giống như cơ sở dữ liệu SQL thông thường.
Hơn nữa, cơ sở dữ liệu xác thực và tên của người dùng đóng vai trò là mã nhận dạng duy nhất. Do đó, nếu hai người dùng được tạo trong các cơ sở dữ liệu khác nhau nhưng có chung tên, họ được xác định là hai người dùng riêng biệt. Do đó, nếu muốn tạo một người dùng duy nhất có quyền trên nhiều cơ sở dữ liệu, thì nên cho phép một người dùng duy nhất có quyền / vai trò đối với cơ sở dữ liệu áp dụng thay vì tạo Người dùng nhiều lần trong các cơ sở dữ liệu khác nhau.
Ví dụ:
db.createUser( { user: "Foss", pwd: "password", roles:[{role: "userAdminAnyDatabase" , db:"admin"}]})
Lệnh quản lý người dùng
Tên / s | Mô tả |
---|---|
createUser | Phương pháp này tạo một người dùng mới. |
dropAllUsersFromDatabase | Xóa tất cả người dùng khỏi cơ sở dữ liệu. |
dropUser | Cấp một nhiệm vụ và các đặc quyền của nó cho người dùng. |
GrantRolesToUser | Một vai trò và các đặc quyền liên quan của nó được chỉ định cho người dùng. |
revokeRolesFromUser | Xóa vai trò của người dùng. |
updateUser | Phương pháp này được sử dụng để cập nhật dữ liệu của người dùng. |
usersInfo | Phương thức này trả về thông tin về những người dùng được cung cấp. |
Thêm người dùng
Khi thêm người dùng vào một DB được chỉ định, hãy sử dụng phương thức “db.createUser ()”. Điều quan trọng cần lưu ý là việc thêm người dùng với các tùy chọn đơn giản hơn nhiều so với việc chèn tài liệu người dùng vào cơ sở dữ liệu không quan hệ.
Ví dụ:
use foss // specify the DB db.createUser( { user: "fosslinux", pwd: passwordPrompt(), // or cleartext password if you wish roles: [ { role: "read", db: "foss" }, { role: "read", db: "articles" }, { role: "read", db: "tutorials" }, { role: "readWrite", db: "tutorialguides" } ] } )
Khi bạn đã kết nối cá thể MongoDB trong ví dụ trên, bạn có thể đính kèm nó vào Fob DB để thực thi lệnh db.createUser (). Cơ sở dữ liệu được sử dụng sẽ hoạt động như Cơ sở dữ liệu xác thực của người dùng.
Mật khẩu và tên người dùng được cung cấp trong tài liệu chứa lệnh gọi phương thức của chúng tôi dưới dạng cặp khóa-giá trị. Việc sử dụng các vai trò kiểm soát quyền truy cập vào cơ sở dữ liệu. Người dùng phải có vai trò truy cập bất kỳ cơ sở dữ liệu nào, ngay cả Cơ sở dữ liệu xác thực của chính nó. Ngoài ra, người dùng được cấp quyền truy cập vào các cơ sở dữ liệu khác trong hệ thống bằng cách sử dụng các vai trò. Do đó, các đặc quyền của người dùng không bị giới hạn trong cơ sở dữ liệu xác thực của họ. Do đó, điều này cho phép người dùng có các đặc quyền khác nhau trên nhiều cơ sở dữ liệu khi cần thiết. Nguyên tắc về đặc quyền ít nhất cho phép người dùng giữ phạm vi truy cập của cơ sở dữ liệu càng nhỏ càng tốt.
Cách tạo người dùng quản trị viên trong MongoDB
Tạo người dùng quản trị trong MongoDB được thực hiện bằng phương thức db.createUser (), cho phép bạn tạo người dùng. Tuy nhiên, sau khi tạo người dùng, bạn cần chỉ định vai trò quản trị viên. Những vai trò này cấp cho người dùng đặc quyền của quản trị viên.
Tạo người dùng cho một cơ sở dữ liệu duy nhất trong MongoDB
Nếu chúng ta muốn tạo một người dùng chỉ có thể làm việc với một cơ sở dữ liệu, chúng ta có thể sử dụng lệnh tương tự như trên, nhưng chúng ta phải sử dụng tùy chọn “userAdmin” chỉ một lần.
Ví dụ:
db.createUser( { user: "Fosslinux", pwd: "password", roles:[{role: "userAdmin" , db:"Foss"}]})
Phân tích mã:
- Đầu tiên và quan trọng nhất, người ta phải chỉ định “tên người dùng” và “mật khẩu” sẽ được tạo.
- Chỉ định vai trò cho Người dùng đó, là người quản trị cơ sở dữ liệu; điều này được gán cho vai trò "quản trị viên người dùng" vì vai trò này cho phép người dùng chỉ có đặc quyền quản trị đối với cơ sở dữ liệu được chỉ định trong DB
- Cuối cùng, tham số DB đặt cơ sở dữ liệu mà Người dùng sẽ có quyền quản trị.
Quản lý người dùng
Để quản lý người dùng, người ta cần hiểu các vai trò cần được xác định vì MongoDB có một danh sách toàn bộ các chức năng như vai trò đọc và vai trò đọc-ghi. Lệnh "vai trò đọc" chỉ cho phép truy cập chỉ đọc vào cơ sở dữ liệu. “Vai trò đọc-ghi” cung cấp quyền truy cập đọc và ghi vào cơ sở dữ liệu; điều này có nghĩa là người dùng có thể đưa ra các lệnh cập nhật, chèn và xóa trên các bộ sưu tập trong cơ sở dữ liệu đó.
Ví dụ:
db.createUser( { user: "Foss", pwd: "password", roles:[ { role: "read" , db:"Tutorials"}, { role: "readWrite" , db:"Guides"} } ] })
Ví dụ trên cho thấy rằng một người dùng được gọi là Foss được tạo và gán một số vai trò trong nhiều DB. Trong cùng một mô hình, Foss được cấp quyền Chỉ đọc trên cơ sở dữ liệu “Hướng dẫn” và quyền Đọc-Ghi trên cơ sở dữ liệu “Hướng dẫn”.
Thêm vai trò vào MongoDB
Vai trò cấp cho người dùng quyền truy cập vào tài nguyên MongoDB. Hơn nữa, MongoDB cung cấp một số vai trò tích hợp cho phép quản trị viên kiểm soát quyền truy cập vào hệ thống MongoDB. Tuy nhiên, khi các vai trò này không thể mô tả bộ đặc quyền mong muốn, người ta có thể tạo các vai trò mới trong một cơ sở dữ liệu cụ thể. Ngoại trừ các chức năng được tạo trong cơ sở dữ liệu quản trị, một vai trò chỉ có thể bao gồm các quyền áp dụng cho cơ sở dữ liệu của nó và những quyền được kế thừa từ các vai trò khác.
Vai trò được xác định trong cơ sở dữ liệu quản trị có thể chứa các quyền áp dụng cho cơ sở dữ liệu quản trị, cơ sở dữ liệu khác hoặc tài nguyên cụm và có thể kế thừa vai trò từ các cơ sở dữ liệu khác. Để thiết lập một vai trò mới, hãy sử dụng “db.createRole ()” và chỉ định mảng quyền và mảng vai trò kế thừa.
MongoDB xác định vai trò duy nhất bằng cách kết hợp tên cơ sở dữ liệu với tên vai trò. Mỗi vai trò nằm trong phạm vi cơ sở dữ liệu bạn tạo, nhưng MongoDB lưu trữ tất cả thông tin vai trò trong bộ sưu tập adminSystemRoles trong cơ sở dữ liệu quản trị. Ví dụ:vai trò sáng tạo và các hành động cấp vai trò trên tài nguyên cơ sở dữ liệu phải đảm bảo rằng các vai trò được tạo và cấp trong cơ sở dữ liệu. GrantRole chỉ định các đặc quyền cho các vai trò mới và các vai trò kế thừa. User AdminAnyDatabase và quản trị viên người dùng vai trò tích hợp cung cấp các hành động CreateRole và cấp vai trò trên các tài nguyên tương ứng của họ.
Để tạo một vai trò với các hạn chế xác thực được chỉ định, người ta phải đặt hành động AuthenticationRetrictions trên tài nguyên cơ sở dữ liệu, sau đó hàm được tạo.
Phương thức db.grantRole to User () nhận các đối số sau;
Tham số | Loại | Mô tả |
---|---|---|
Người dùng | Chuỗi | Nhập tên của Người dùng để cấp vai trò cho họ. |
Vai trò | Mảng | Có một loạt các vai trò bổ sung để cấp cho Người dùng. |
Viết mối quan tâm | Tài liệu | Đây là tùy chọn và nhằm mục đích sửa đổi lệnh. Nó cũng có các trường tương tự với lệnh nhận lỗi cuối cùng. |
Tham số vai trò có thể chỉ định cả chức năng do người dùng định nghĩa và chức năng cài sẵn, có thể đạt được bằng cách chọn vai trò với tên của nó. Điều này được thực hiện bằng cách kết nối với mongod (một quy trình daemon chính cho hệ thống MongoDB xử lý các yêu cầu dữ liệu, thực hiện các hoạt động quản lý nền và quản lý truy cập dữ liệu). Ngoài ra, mongos (chịu trách nhiệm thiết lập kết nối giữa các ứng dụng khách và cụm phân đoạn), với các quyền được cung cấp trong phần yêu cầu. Ví dụ:quản trị viên người dùng của tôi được tạo trong điều khiển truy cập bật có thể tạo vai trò trong quản trị viên và các cơ sở dữ liệu khác.
Các lệnh quản lý vai trò
Tên \ s | Mô tả |
---|---|
createRole | Tạo một vai trò và cho biết vai trò đó có thể làm gì. |
dropRole | Xóa vai trò do người dùng đặt. |
dropAllRolesFromDatabase | Xóa tất cả các vai trò mà người dùng khỏi cơ sở dữ liệu đã thiết lập. |
GrantPrivilegesToRole | chỉ định các đặc quyền cho một vai trò mà người dùng chọn. |
GrantRolesToRole | cho biết vai trò nào do người dùng xác định có thể kế thừa các đặc quyền từ đó. |
validateUserCache | Khi bạn sử dụng validateUserCache, bộ nhớ đệm trong bộ nhớ của thông tin người dùng, chẳng hạn như thông tin xác thực và vai trò, sẽ bị xóa. |
revokePrivilegesFromRole | xóa các đặc quyền khỏi vai trò do người dùng xác định có chúng. |
revokeRolesFromRole | xóa các vai trò kế thừa khỏi vai trò do người dùng xác định mà bạn không muốn. |
roleInfo | trả về thông tin về vai trò hoặc các vai trò bạn muốn. |
updateRole | Cập nhật vai trò do người dùng thiết lập. |
Kết luận
Cơ sở dữ liệu MongoDB, cho phép lưu trữ và truy xuất dữ liệu dễ dàng và nhanh chóng, có thể cho phép người dùng tạo người dùng bằng lệnh “db.createUser ()”. Mặt khác, lệnh “AdminAnyDatabase” cung cấp cho người dùng tất cả các đặc quyền để truy cập vào DB dưới vai trò quản trị viên. Bài viết này đã đi xa hơn và minh họa cách cấp các vai trò và quyền. Chúng tôi hy vọng bạn thấy nó hữu ích. Nếu có, đừng quên để lại nhận xét trong phần bình luận bên dưới.