Tên người dùng và mật khẩu là hình thức xác thực cơ bản nhất. Theo mặc định, MongoDB không cung cấp bất kỳ hình thức xác thực nào. Điều này có nghĩa là bất kỳ người dùng nào có quyền truy cập vào giao diện Máy chủ MongoDB của bạn đều có thể truy cập và quản lý cơ sở dữ liệu của bạn
Đây là một rủi ro bảo mật nghiêm trọng, đặc biệt là khi cơ sở dữ liệu của bạn bị lộ ra ngoài. Do đó, bài đăng này sẽ hướng dẫn bạn cách định cấu hình xác thực tên người dùng và mật khẩu trong máy chủ MongoDB
Hãy nhảy vào nó
Bước 1. Đăng nhập vào máy chủ MongoDB
Bước đầu tiên là đăng nhập vào máy chủ của bạn. Vì MongoDB không được bảo mật nên bạn có thể chạy lệnh sau
$ mongo Mongodb. // .
Lệnh đã cho đăng nhập vào máy chủ MongoDB với tên người dùng mặc định.
Bước 2. Thay đổi cơ sở dữ liệu quản trị
Tiếp theo, thay đổi cơ sở dữ liệu quản trị cho phép chúng tôi thực hiện các hành động như tạo người dùng mới và gán quyền
> SỬ DỤNG quản trị viên
'đã chuyển sang quản trị viên db'
Bước 3. Tạo người dùng quản trị viên
Bước tiếp theo là tạo người dùng với vai trò UserAdminAnyDatabase. Điều này cho phép bạn quản lý bất kỳ cơ sở dữ liệu nào trên máy chủ
Chúng ta có thể chạy lệnh như sau
db. người tạo người dùng [{ người dùng. "root" , pwd. "mật khẩu" , vai trò. [{ vai trò. "userAdminAnyDatabase" , db. "quản trị viên"}]}]
Chạy lệnh trước đó sẽ tạo một tên người dùng có tên là root với mật khẩu và vai trò userAdminAnyDatabase đã chỉ định.
đầu ra
{ được rồi. 1 }
Bước 4. MongoDB Kích hoạt xác thực
Khi chúng tôi đã tạo tên người dùng và mật khẩu, chúng tôi cần bật xác thực cho máy chủ MongoDB
Chúng tôi có thể làm điều này bằng cách chỉnh sửa tệp cấu hình MongoDB. Hãy nhớ rằng vị trí của tệp cấu hình MongoDB khác nhau tùy thuộc vào phương pháp cài đặt và hệ điều hành
Xác định vị trí mongod. conf hoặc mongod. cfg trong hệ thống của bạn. Chỉnh sửa tệp bằng trình soạn thảo văn bản yêu thích của bạn
$ sudo nano / vv /mongod.conf
Chỉnh sửa tệp và định vị mục nhập như hình bên dưới.
bảo mật.
ủy quyền. "đã tắt"
Trong một số trường hợp, bạn có thể thấy khối bảo mật đã được nhận xét như hình dưới đây.
# bảo mật.
Bỏ chú thích bằng cách xóa dấu thăng trước đó và đặt mục nhập như hình bên dưới.
#bảo mật.
ủy quyền. "đã bật"
Lưu tệp và đóng.
Khởi động lại dịch vụ MongoDB bằng lệnh sau
$ sudo khởi động lại dịch vụ mongodb
Trên Windows, bạn có thể chạy lệnh sau.
$ net stop mongodb && net start mongodb
Chạy lệnh sau để đăng nhập vào máy chủ bằng tên người dùng và mật khẩu đã chỉ định.
$ mongo mongodb. // . db. auth ["tên người dùng" , "mật khẩu"]
Sự kết luận
Bài đăng này đã thảo luận về những điều cơ bản của việc thiết lập xác thực tên người dùng và mật khẩu trên Máy chủ MongoDB
Quản lý người dùng và xác thực là một số nhiệm vụ quản trị quan trọng nhất của việc quản lý máy chủ MongoDB. Bạn phải đảm bảo rằng máy chủ được định cấu hình để có thể xác định đúng người dùng và ứng dụng của bạn và từ chối các kết nối hoặc hoạt động không thể xác thực chính xác
Để quản lý các yêu cầu này, bạn phải có khả năng quyết định những người dùng mà máy chủ của bạn yêu cầu và tạo các tài khoản đó. Là một phần của quy trình này, bạn có thể đặt chi tiết xác thực để cho phép truy cập bên ngoài bằng danh tính mới
Trong hướng dẫn này, chúng tôi sẽ hướng dẫn cách tạo, xem và xóa tài khoản người dùng. Chúng tôi sẽ giới thiệu cách thiết lập xác thực cho tài khoản của bạn và cách cập nhật thông tin đăng nhập khi bạn cần thay đổi mật khẩu người dùng của mình
LIÊN QUAN ĐẾN PRISMA. IO
Nếu bạn đang sử dụng MongoDB, hãy kiểm tra trình kết nối MongoDB của Prisma. Bạn có thể tự tin sử dụng Prisma Client để quản lý cơ sở dữ liệu MongoDB sản xuất
Để bắt đầu làm việc với MongoDB và Prisma, hãy xem hướng dẫn bắt đầu từ đầu của chúng tôi hoặc cách thêm vào một dự án hiện có
Prisma là bộ công cụ cơ sở dữ liệu mã nguồn mở dành cho Typescript và Node. js nhằm mục đích giúp các nhà phát triển ứng dụng làm việc hiệu quả và tự tin hơn khi làm việc với cơ sở dữ liệu
điều kiện tiên quyết
Để làm theo hướng dẫn này, bạn sẽ cần có một tài khoản trên máy chủ MongoDB với các đặc quyền phù hợp
Các lệnh và phương thức chúng ta sẽ sử dụng
Để tạo, sửa đổi và xóa người dùng trong MongoDB và định cấu hình xác thực, các phương thức cốt lõi bạn cần là
5. tạo tài khoản người dùng MongoDB mớiswitched to db admin
6. cập nhật thông tin chi tiết của tài khoản người dùngswitched to db admin
7. thay đổi mật khẩu được sử dụng bởi tài khoản người dùngswitched to db admin
8. xóa tài khoản người dùng MongoDBswitched to db admin
Ngoài ra, lệnh cơ sở dữ liệu sau đây rất hữu ích để tìm thông tin về người dùng trên hệ thống
9. hiển thị thông tin về một hoặc nhiều tài khoản người dùng MongoDBswitched to db admin
đặc quyền bắt buộc
Để thực hiện các lệnh trên, bạn cần đăng nhập vào MongoDB bằng một tài khoản với một số hành động đặc quyền khác nhau. Các đặc quyền cụ thể mà bạn yêu cầu tùy thuộc vào các lệnh bạn cần sử dụng
Để nhận thông tin về những người dùng khác, người dùng hiện tại của bạn phải bật hành động đặc quyền sau
- Hành động đặc quyền
0db.createUser[{
user: "tom",
pwd: "hellothere",
roles: []
}]
Để tạo người dùng mới, người dùng hiện tại của bạn phải bật các hành động đặc quyền sau
- Hành động đặc quyền
1db.createUser[{
user: "tom",
pwd: "hellothere",
roles: []
}]
- Hành động đặc quyền
2db.createUser[{
user: "tom",
pwd: "hellothere",
roles: []
}]
Để thay đổi mật khẩu hoặc chi tiết tài khoản của người dùng, bạn có thể cần các đặc quyền sau
- Hành động đặc quyền
3 để thay đổi mật khẩu tài khoản của chính bạndb.createUser[{
user: "tom",
pwd: "hellothere",
roles: []
}]
- Hành động đặc quyền của
4 để thay đổi dữ liệu tùy chỉnh của tài khoản của bạndb.createUser[{
user: "tom",
pwd: "hellothere",
roles: []
}]
- Hành động đặc quyền của
5 để thay đổi mật khẩu của người dùng khácdb.createUser[{
user: "tom",
pwd: "hellothere",
roles: []
}]
- Hành động đặc quyền của
6 để thay đổi dữ liệu tùy chỉnh của người dùng khácdb.createUser[{
user: "tom",
pwd: "hellothere",
roles: []
}]
Chúng tôi sẽ không đề cập đến quản lý vai trò trong hướng dẫn này, vì vậy các hành động đặc quyền
2 và
db.createUser[{
user: "tom",
pwd: "hellothere",
roles: []
}]
8 là không bắt buộc
db.createUser[{
user: "tom",
pwd: "hellothere",
roles: []
}]
Để xóa tài khoản người dùng, người dùng hiện tại của bạn phải bật hành động đặc quyền sau
- Hành động đặc quyền
9db.createUser[{
user: "tom",
pwd: "hellothere",
roles: []
}]
Hiểu cách MongoDB triển khai người dùng và xác thực
Trước khi chúng tôi bắt đầu tạo và quản lý tài khoản, sẽ rất hữu ích nếu bạn dành chút thời gian để làm quen với cách MongoDB định nghĩa và lưu trữ thông tin này
Trong MongoDB, tài khoản người dùng là sự kết hợp của tên người dùng tài khoản cùng với cơ sở dữ liệu xác thực cụ thể. Cơ sở dữ liệu xác thực chỉ đơn giản là cơ sở dữ liệu nơi người dùng được xác định và không bao hàm giới hạn về phạm vi hoặc quyền. Cơ sở dữ liệu xác thực là cơ sở dữ liệu thông thường được sử dụng để quản lý dữ liệu khác và không phải là cơ sở dữ liệu chuyên dụng, đặc biệt
Tên tài khoản người dùng phải là duy nhất trong cơ sở dữ liệu xác thực của nó. Tuy nhiên, cùng một tên người dùng có thể được sử dụng lại với cơ sở dữ liệu xác thực khác để tạo tài khoản người dùng mới, riêng biệt
Do thiết kế này, một tài khoản chỉ có thể được xác định chính xác bằng cách bao gồm tên người dùng và cơ sở dữ liệu xác thực. Để xác thực tài khoản, người ta cũng cần cung cấp thông tin đăng nhập được liên kết với tài khoản. Đây thường là mật khẩu, nhưng cũng có thể là chứng chỉ
Làm thế nào để bạn tạo người dùng?
Bây giờ chúng ta đã xem cách MongoDB khái niệm hóa tài khoản người dùng, chúng ta có thể thảo luận về cách tạo người dùng mới. Hãy nhớ đăng nhập vào máy chủ MongoDB của bạn với người dùng có đặc quyền phù hợp để theo dõi
Để tạo người dùng mới, trước tiên bạn phải chuyển sang cơ sở dữ liệu mà bạn muốn sử dụng làm cơ sở dữ liệu xác thực của người dùng mới
Trước tiên, bạn có thể lấy danh sách các cơ sở dữ liệu đã được định cấu hình trên hệ thống của mình bằng cách nhập
5
switched to db admin
6
switched to db admin
Chuyển sang cơ sở dữ liệu mà người dùng sẽ được liên kết bằng cách sử dụng lệnh
70
switched to db admin
8
switched to db admin
switched to db admin
Để tạo người dùng mới, bạn có thể sử dụng phương pháp
71 hoặc bạn có thể sử dụng lệnh cơ sở dữ liệu
switched to db admin
1. Dù bằng cách nào, bạn sẽ cần chuyển tên người dùng [trường
db.createUser[{
user: "tom",
pwd: "hellothere",
roles: []
}]
73], mật khẩu [trường
switched to db admin
74] và một mảng các vai trò mà người dùng sẽ được thêm vào [khóa
switched to db admin
75] trong đối tượng
switched to db admin
73
switched to db admin
Để tạo một người dùng mới có tên là
77 với mật khẩu được đặt thành
switched to db admin
78 với một mảng vai trò trống bằng phương thức
switched to db admin
71, bạn có thể nhập
switched to db admin
db.createUser[{
user: "tom",
pwd: "hellothere",
roles: []
}]
7
switched to db admin
Hoạt động tương tự bằng cách sử dụng lệnh cơ sở dữ liệu
1 sẽ như thế này
db.createUser[{
user: "tom",
pwd: "hellothere",
roles: []
}]
2
switched to db admin
7
switched to db admin
Hai tùy chọn khác nhau rất giống nhau, vì vậy chúng tôi sẽ chỉ hiển thị các phương thức cơ sở dữ liệu khi áp dụng trong tương lai. Tuy nhiên, nếu bạn thích cú pháp lệnh cơ sở dữ liệu hơn, bạn có thể tìm thấy từng lệnh liên quan trong tài liệu tham khảo lệnh MongoDB
Trong các lệnh trên, chúng tôi đã xác định rõ ràng mật khẩu nội tuyến trong đối tượng
73. Để ngăn mật khẩu bị ghi lại và có thể truy xuất được, bạn có thể sử dụng phương thức
switched to db admin
22 trong tài liệu
switched to db admin
73 để MongoDB tương tác nhắc bạn nhập mật khẩu khi lệnh được chạy. Mật khẩu sẽ không hiển thị, vì vậy lịch sử lệnh của bạn sẽ sạch sẽ
switched to db admin
7____38
switched to db admin
Hãy nhớ rằng mật khẩu sẽ vẫn được gửi đến máy chủ ở dạng văn bản thuần túy nếu bạn không bật TLS/SSL
Làm thế nào để bạn hiển thị người dùng hiện tại?
Tiếp theo, chúng ta hãy xem cách tìm thông tin về người dùng hiện có
Để trả về nhiều người dùng, bạn có thể sử dụng phương thức
24 để hiển thị tất cả người dùng trong cơ sở dữ liệu hiện tại. Trước tiên, hãy chuyển sang cơ sở dữ liệu mà bạn muốn truy vấn
switched to db admin
8
switched to db admin
Tiếp theo, sử dụng phương thức
24 để trả về tất cả người dùng được liên kết với cơ sở dữ liệu hiện tại
switched to db admin
61
switched to db admin
62
switched to db admin
Để hiển thị thêm thông tin xác thực của mỗi người dùng, hãy chuyển một đối tượng cho phương thức bằng khóa
26 đến
switched to db admin
27
switched to db admin
63
switched to db admin
64
switched to db admin
Để truy vấn người dùng phù hợp với các tiêu chí nhất định, bạn có thể chuyển một đối tượng xác định khóa
28 xác định điều kiện phù hợp
switched to db admin
Chẳng hạn, để lấy thông tin về tất cả người dùng trong cơ sở dữ liệu hiện tại có vai trò
29, bạn có thể nhập
switched to db admin
65
switched to db admin
66
switched to db admin
Để có được một người dùng cụ thể, bạn có thể sử dụng phương pháp
70 thay thế. Điều này hoạt động giống như phương thức
switched to db admin
24, nhưng trả về một người dùng. Thay vì truyền một đối tượng cho phương thức, bạn truyền một chuỗi chứa tên người dùng mà bạn muốn truy xuất
switched to db admin
67
switched to db admin
68
switched to db admin
Bạn có thể tùy chọn bao gồm một đối tượng bổ sung
72 cho phép bạn chỉ định thông tin bổ sung mà bạn muốn bằng cách đặt các khóa sau thành
switched to db admin
27
switched to db admin
26. hiển thị thông tin xác thực ngoài đầu ra thông thường
switched to db admin
75. hiển thị thông tin đặc quyền ngoài đầu ra thông thường
switched to db admin
76. hiển thị các hạn chế xác thực trên tài khoản ngoài đầu ra thông thường
switched to db admin
Ví dụ: bạn có thể yêu cầu MongoDB cung cấp cho bạn tất cả thông tin trên bằng cách nhập
69
switched to db admin
80
switched to db admin
Làm cách nào để bạn thay đổi mật khẩu cho người dùng MongoDB?
Để thay đổi mật khẩu của người dùng, bạn có thể sử dụng phương pháp
77. Một lần nữa, bạn phải chuyển sang cơ sở dữ liệu xác thực của người dùng trước khi thực hiện lệnh
switched to db admin
Phương thức
77 có hai đối số. tên người dùng của tài khoản bạn muốn thay đổi và mật khẩu mới cho tài khoản
switched to db admin
Ví dụ: để thay đổi mật khẩu cho người dùng
77 được xác thực bằng cơ sở dữ liệu
switched to db admin
70 thành
switched to db admin
71, bạn có thể nhập
switched to db admin
81
switched to db admin
Cũng giống như phương thức
71, bạn có thể sử dụng phương thức
switched to db admin
22 cho đối số thứ hai thay vì cung cấp mật khẩu nội tuyến. MongoDB sẽ nhắc bạn nhập mật khẩu khi lệnh được thực thi
switched to db admin
82
switched to db admin
83
switched to db admin
Làm cách nào để bạn thay đổi các chi tiết tài khoản người dùng khác?
Để thay đổi thông tin khác được liên kết với tài khoản người dùng, bạn có thể sử dụng phương pháp
74. Đảm bảo bạn chuyển sang cơ sở dữ liệu xác thực của người dùng trước khi cập nhật thông tin chi tiết của họ
switched to db admin
Phương thức
74 yêu cầu bạn chỉ định tên người dùng và sau đó cung cấp một đối tượng chứa dữ liệu bạn muốn cập nhật. Bất kỳ trường nào bạn chọn cập nhật sẽ được thay thế hoàn toàn bằng thông tin mới, vì vậy hãy đảm bảo bao gồm dữ liệu gốc cũng như dữ liệu mới trong đối tượng của bạn nếu bạn chỉ hy vọng thêm thông tin mới
switched to db admin
Đối tượng mà bạn đưa vào lệnh có thông tin thay đổi có thể chứa nhiều trường khác nhau. Hãy lướt qua chúng
76. Bất kỳ dữ liệu tùy ý nào được liên kết với tài khoản người dùng
switched to db admin
75. Các vai trò mà người dùng được cấp. Thường thì tốt hơn là sử dụng các phương pháp
switched to db admin
78 và
switched to db admin
79 để kiểm soát tư cách thành viên của vai trò hơn là cập nhật bằng khóa này vì bạn có thể thêm và xóa từng vai trò
switched to db admin
74. Mật khẩu của người dùng. Sử dụng phương pháp
switched to db admin
81 thường dễ dàng hơn nếu đó là trường duy nhất cần được cập nhật
switched to db admin
82. Chỉ định các hạn chế cho tài khoản có thể giới hạn địa chỉ IP mà người dùng có thể kết nối từ hoặc đến. Giá trị của khóa này là một đối tượng hoặc mảng xác định
switched to db admin
83 và hoặc
switched to db admin
84, chứa các mảng chỉ định phạm vi hoặc địa chỉ IP hợp lệ. Tìm hiểu thêm trong tài liệu MongoDB về các hạn chế xác thực
switched to db admin
85. Các cơ chế xác thực cụ thể được sử dụng cho thông tin xác thực. Có thể được đặt thành một hoặc cả hai
switched to db admin
86 hoặc
switched to db admin
87, nhưng chỉ có thể được thay đổi thành một tập hợp con của các cơ chế hiện tại nếu mật khẩu mới hiện không được cung cấp
switched to db admin
88. Chỉ định thành phần nào xử lý mật khẩu của người dùng. Có thể là
switched to db admin
89 [mặc định] hoặc
switched to db admin
600
switched to db admin
Ví dụ: chúng tôi có thể cập nhật tài khoản
77 xác thực dựa trên cơ sở dữ liệu
switched to db admin
70 để chỉ có thể đăng nhập từ cùng một máy tính lưu trữ chính máy chủ đó bằng cách thay đổi trường
switched to db admin
82
switched to db admin
84
switched to db admin
Bây giờ, nếu bạn yêu cầu MongoDB hiển thị cho bạn thông tin liên quan về người dùng, nó sẽ hiển thị các hạn chế bổ sung cho tài khoản
85
switched to db admin
86
switched to db admin
Để hủy bỏ những hạn chế đó, chúng ta có thể chạy lại lệnh với một mảng trống
87
switched to db admin
Làm cách nào để xóa người dùng MongoDB?
Để xóa tài khoản người dùng MongoDB, bạn có thể sử dụng phương pháp
604. Đảm bảo kết nối với cơ sở dữ liệu xác thực của người dùng trước khi xóa chúng
switched to db admin
Để thực thi phương thức
604, bạn cần cung cấp tên của người dùng mà bạn muốn xóa
switched to db admin
88
switched to db admin
Sau khi xóa thành công, MongoDB sẽ trả về
27
switched to db admin
89
switched to db admin
Nếu tài khoản không tồn tại trong cơ sở dữ liệu hiện tại, thay vào đó, nó sẽ trả về
607
switched to db admin
Sự kết luận
Cấu hình xác thực và quản lý người dùng của MongoDB cho phép bạn kiểm soát ai có thể kết nối với máy chủ của bạn và thuộc tính người dùng của họ là gì. Trong bài viết sau, chúng tôi sẽ đề cập đến cách hạn chế mức truy cập mà người dùng có bằng cách xử lý phần ủy quyền của quản lý người dùng
LIÊN QUAN ĐẾN PRISMA. IO
Nếu bạn đang sử dụng MongoDB, hãy kiểm tra trình kết nối MongoDB của Prisma. Bạn có thể tự tin sử dụng Prisma Client để quản lý cơ sở dữ liệu MongoDB sản xuất
Để bắt đầu làm việc với MongoDB và Prisma, hãy xem hướng dẫn bắt đầu từ đầu của chúng tôi hoặc cách thêm vào một dự án hiện có
Prisma là bộ công cụ cơ sở dữ liệu mã nguồn mở dành cho Typescript và Node. js nhằm mục đích giúp các nhà phát triển ứng dụng làm việc hiệu quả và tự tin hơn khi làm việc với cơ sở dữ liệu
Câu hỏi thường gặp
Làm cách nào để bạn liệt kê những người dùng hiện có trong MongoDB?
Để liệt kê những người dùng hiện có trong MongoDB, bạn có thể sử dụng phương thức
24 để hiển thị tất cả người dùng trong cơ sở dữ liệu hiện tại
switched to db admin
Cú pháp sẽ giống như
0
switched to db admin
Để biết thêm chi tiết về
24
switched to db admin
Làm cách nào để bạn tạo người dùng quản trị cơ sở dữ liệu trong MongoDB?
Để tạo người dùng quản trị cơ sở dữ liệu trong MongoDB, bạn sẽ muốn sử dụng phương thức
71 trong cơ sở dữ liệu
switched to db admin
70
switched to db admin
Phần sau minh họa cú pháp sử dụng để tạo quản trị viên cơ sở dữ liệu
1
switched to db admin
Làm cách nào để bỏ người dùng trong MongoDB?
Để xóa người dùng MongoDB, bạn có thể sử dụng phương thức
604. Điều này cần được thực hiện trong cơ sở dữ liệu
switched to db admin
70 và cú pháp sẽ như thế này
switched to db admin
2
switched to db admin
Làm cách nào để kiểm tra xem người dùng cơ sở dữ liệu có tồn tại trong MongoDB không?
Để lấy danh sách tất cả người dùng hiện có trong MongoDB, bạn có thể sử dụng phương thức
24
switched to db admin
Cú pháp cơ bản sẽ giống như
0
switched to db admin
Làm cách nào bạn có thể kiểm tra đặc quyền của người dùng trong MongoDB?
Để truy vấn một người dùng cụ thể, bạn có thể sử dụng phương pháp
70 với
switched to db admin
75
switched to db admin
617 được đặt thành
switched to db admin
27
switched to db admin
Người dùng MongoDB là gì?
Người dùng MongoDB được sử dụng để truy cập cơ sở dữ liệu theo các quyền được chỉ định mà người dùng đã xác định . Người dùng quan trọng và hữu ích hơn trong mọi cơ sở dữ liệu để truy cập cơ sở dữ liệu thông qua máy khách.Tôi có thể tìm người dùng MongoDB ở đâu?
Để liệt kê những người dùng hiện có trong MongoDB, bạn có thể sử dụng db. phương thức getUsers[] để hiển thị tất cả người dùng trong cơ sở dữ liệu hiện tại.Tạo người dùng trong MongoDB là gì?
db. createUser[user, writeConcern] Tạo người dùng mới cho cơ sở dữ liệu mà phương thức được chạy trên đó . db. createUser[] trả về lỗi người dùng trùng lặp nếu người dùng đã tồn tại trên cơ sở dữ liệu.Đường dẫn cơ sở dữ liệu mặc định cho MongoDB là gì?
Theo mặc định, MongoDB lắng nghe các kết nối từ máy khách trên cổng 27017 và lưu trữ dữ liệu trong thư mục /data/db . Trên Windows, đường dẫn này nằm trên ổ đĩa mà bạn khởi động MongoDB. Ví dụ: nếu bạn không chỉ định --dbpath , việc khởi động máy chủ MongoDB trên máy chủ C. \ drive lưu trữ tất cả các tệp dữ liệu trong C. \data\db.