Cách tạo người dùng và thêm vai trò trong MongoDB
⚡ Tóm tắt thông minh
Tạo người dùng và thêm vai trò trong MongoDB Nó dựa vào phương thức db.createUser() để định nghĩa thông tin đăng nhập, gán các vai trò tích hợp sẵn và phân bổ quyền cho các cơ sở dữ liệu cụ thể, tăng cường kiểm soát truy cập trên các tài khoản quản trị và tài khoản cơ sở dữ liệu đơn lẻ.
Vai trò tích hợp sẵn trong là gì? MongoDB?
Trước khi tạo tài khoản, bạn nên hiểu rõ các vai trò được tích hợp sẵn. MongoDB Vai trò là một tập hợp các đặc quyền được đặt tên, và mỗi đặc quyền gắn liền một tài nguyên (cơ sở dữ liệu hoặc tập hợp) với các hành động được phép thực hiện trên đó. Do đó, việc gán vai trò trong quá trình tạo người dùng sẽ quyết định chính xác những gì tài khoản đó có thể làm.
MongoDB Hệ thống phân loại các vai trò tích hợp sẵn thành các vai trò người dùng cơ sở dữ liệu, vai trò quản trị cơ sở dữ liệu, vai trò quản trị cụm máy chủ, vai trò sao lưu và phục hồi, và vai trò người dùng siêu cấp. Bảng dưới đây tóm tắt các vai trò được sử dụng thường xuyên nhất khi quản lý người dùng:
| Vai trò | Phân loại | Các đặc quyền được cấp |
|---|---|---|
| đọc | Người dùng cơ sở dữ liệu | Chỉ cho phép truy cập đọc vào tất cả các bộ sưu tập không thuộc hệ thống trong cơ sở dữ liệu. |
| đọc viết | Người dùng cơ sở dữ liệu | Quyền đọc, thêm chức năng chèn, cập nhật và xóa trên các bộ sưu tập. |
| Quản trị viên cơ sở dữ liệu | Quản trị viên cơ sở dữ liệu | Quản lý lược đồ, lập chỉ mục và thống kê cho cơ sở dữ liệu. |
| người dùngquản trị viên | Quản trị viên cơ sở dữ liệu | Tạo và chỉnh sửa người dùng và vai trò trên cùng một cơ sở dữ liệu. |
| userAdminAnyDatabase | Superuser | Quản trị người dùng trên tất cả các cơ sở dữ liệu trong hệ thống. |
| nguồn gốc | Superuser | Được quyền truy cập đầy đủ vào tất cả các nguồn lực và hoạt động. |
MongoDB Tạo người dùng quản trị viên
Tạo quản trị viên người dùng trong MongoDB được thực hiện bằng cách sử dụng phương thức createUser. Ví dụ sau đây cho thấy cách thực hiện điều này.
db.createUser(
{ user: "Guru99",
pwd: "password",
roles:[{role: "userAdminAnyDatabase" , db:"admin"}]})
Code Giải thích:
- Bước đầu tiên là chỉ định “tên người dùng” và “mật khẩu” cần được tạo.
- Bước thứ hai là gán vai trò cho người dùng. Vì người dùng này cần phải là quản trị viên cơ sở dữ liệu, nên chúng ta đã gán vai trò “userAdminAnyDatabase”. Vai trò này cho phép người dùng có quyền quản trị đối với tất cả các cơ sở dữ liệu trong hệ thống. MongoDB.
- Tham số db chỉ định cơ sở dữ liệu quản trị, đây là một cơ sở dữ liệu Meta đặc biệt bên trong. MongoDB Nơi lưu trữ thông tin của người dùng này.
Nếu lệnh được thực hiện thành công, kết quả đầu ra sau sẽ được hiển thị:
Đầu ra:
Kết quả hiển thị cho thấy một người dùng có tên là “GuruNgười dùng có tên “99” đã được tạo và người dùng đó có quyền truy cập vào tất cả các cơ sở dữ liệu trong MongoDB.
MongoDB Tạo người dùng cho cơ sở dữ liệu đơn
Để tạo người dùng quản lý một cơ sở dữ liệu duy nhất, chúng ta có thể sử dụng lệnh tương tự như đã đề cập ở trên, nhưng chỉ cần sử dụng tùy chọn “userAdmin”.
Ví dụ sau đây minh họa cách thực hiện điều này:
db.createUser(
{
user: "Employeeadmin",
pwd: "password",
roles:[{role: "userAdmin" , db:"Employee"}]})
Code Giải thích:
- Bước đầu tiên là chỉ định “tên người dùng” và “mật khẩu” cần được tạo.
- Bước thứ hai là gán vai trò cho người dùng, trong trường hợp này, vì cần phải là quản trị viên cơ sở dữ liệu, nên vai trò được gán là “userAdmin”. Vai trò này cho phép người dùng có quyền quản trị chỉ đối với cơ sở dữ liệu được chỉ định trong tùy chọn db.
- Tham số db chỉ định cơ sở dữ liệu mà người dùng sẽ có đặc quyền quản trị.
Nếu lệnh được thực hiện thành công, kết quả đầu ra sau sẽ được hiển thị:
Đầu ra:
Kết quả đầu ra cho thấy người dùng có tên “Employeeadmin” đã được tạo và người dùng đó chỉ có các đặc quyền trên cơ sở dữ liệu “Employee”.
Quản lý người dùng
Trước tiên, hãy hiểu rõ các vai trò mà bạn cần xác định. Có cả một danh sách các vai trò có sẵn trong MongoDBVí dụ, có vai trò “đọc”, chỉ cho phép truy cập đọc vào cơ sở dữ liệu, và sau đó có 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ể thực hiện các lệnh chèn, xóa và cập nhật trên các tập hợp trong cơ sở dữ liệu đó.
db.createUser(
{
user: "Mohan",
pwd: "password",
roles:[
{ role: "read" , db:"Marketing" },
{ role: "readWrite" , db:"Sales" }
]
})
Đoạn mã trên cho thấy một người dùng có tên Mohan được tạo ra và được gán nhiều vai trò trong nhiều cơ sở dữ liệu. Trong ví dụ trên, anh ta được cấp quyền chỉ đọc đối với cơ sở dữ liệu “Marketing” và quyền đọc/ghi đối với cơ sở dữ liệu “Sales”.
Cách xem và quản lý MongoDB Người dùng
Sau khi tài khoản được tạo, MongoDB Cung cấp một tập hợp các lệnh để kiểm tra, cập nhật và xóa chúng mà không cần gỡ bỏ.ping và tạo lại từng người dùng. Các lệnh này chạy trên cơ sở dữ liệu nơi người dùng được tạo ra, vì vậy hãy chuyển sang cơ sở dữ liệu chính xác bằng câu lệnh `use` trước khi thực thi chúng.
Các lệnh quản lý người dùng phổ biến nhất là:
- db.getUsers() — Liệt kê tất cả người dùng được định nghĩa trong cơ sở dữ liệu hiện tại cùng với các vai trò mà mỗi người dùng nắm giữ.
- db.getUser(“username”) — trả về thông tin chi tiết của một tài khoản duy nhất, điều này hữu ích cho việc kiểm toán quyền hạn.
- db.grantRolesToUser() — Thêm một hoặc nhiều vai trò cho người dùng hiện có mà không ảnh hưởng đến các vai trò hiện tại.
- db.revokeRolesFromUser() — Loại bỏ các vai trò cụ thể, thắt chặt quyền truy cập khi trách nhiệm thay đổi.
- db.changeUserPassword() — đặt lại mật khẩu cho một tài khoản trong khi vẫn giữ nguyênping Vai trò của nó vẫn còn nguyên vẹn.
- db.dropUser() — Xóa vĩnh viễn người dùng khỏi cơ sở dữ liệu.
Ví dụ dưới đây cấp thêm một vai trò, thu hồi một vai trò khác, đặt lại mật khẩu và cuối cùng là xóa tài khoản:
// List all users in the current database db.getUsers() // Grant an additional role to an existing user db.grantRolesToUser("Employeeadmin", [{ role: "readWrite", db: "Employee" }]) // Remove a role from a user db.revokeRolesFromUser("Employeeadmin", [{ role: "userAdmin", db: "Employee" }]) // Change a user's password db.changeUserPassword("Employeeadmin", "newPassword") // Delete a user db.dropUser("Employeeadmin")
Chạy lại hàm db.getUsers() sau các thao tác này sẽ xác nhận rằng các thay đổi đã được áp dụng và chỉ còn lại các tài khoản và vai trò như dự định.
Các phương pháp hay nhất cho MongoDB Quản lý người dùng
Các tài khoản người dùng được lên kế hoạch tốt sẽ duy trì... MongoDB Việc triển khai an toàn và dễ dàng kiểm toán. Các biện pháp sau đây giúp giảm nguy cơ rò rỉ dữ liệu ngoài ý muốn và lạm dụng quyền truy cập:
- Áp dụng nguyên tắc quyền hạn tối thiểu: Chỉ cấp các vai trò mà tài khoản thực sự cần, ưu tiên quyền đọc/ghi trên một cơ sở dữ liệu duy nhất hơn là các vai trò quản trị rộng.
- Tránh sử dụng quyền root trong môi trường sản xuất: Hãy dành các vai trò root và userAdminAnyDatabase cho việc thiết lập và các tác vụ khẩn cấp, thay vì các hoạt động hàng ngày.
- Kích hoạt xác thực: Khởi động máy chủ với tùy chọn –auth để việc xác thực thông tin đăng nhập được thực thi.
- Sử dụng mật khẩu mạnh: Kết hợp độ dài và độ phức tạp, đồng thời xoay vòng mật khẩu theo lịch trình bằng db.changeUserPassword().
- Kiểm tra thường xuyên: RevXem kết quả đầu ra của db.getUsers() định kỳ và xóa các tài khoản không còn cần thiết.
Nhờ những thói quen này, mỗi tài khoản đều tương ứng với một nhu cầu thực tế và việc truy cập có thể được thực hiện dễ dàng. tracđược cập nhật bất cứ khi nào có cuộc kiểm tra an ninh diễn ra.






