CHƯƠNG 364. MongoDB cung cấp cơ chế kiểm soát truy cập dựa trên vai trò (Role-Based Access Control - 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 role xác định quyền truy cập vào các hoạt động vào tài nguyên cơ sở dữ liệu. Ngoài việc thực thi nhiệm vụ của mỗi role, người dùng không có quyền truy cập vào hệ thống.
CHƯƠNG 365. 2.3.2.1. Tính kế thừa
CHƯƠNG 366. Role có thể chứa một hoặc nhiều role đã tồn tại được xác định trước, trong trường hợp đó, role kế thừa tất cả các đặc quyền từ các role khác trong cơ sở dữ liệu. Ngoài ra, role được tạo trên cơ sở dữ liệu với quyền Admin có khả năng kế thừa đặc quyền từ các role khác trong bất kỳ cơ sở dữ liệu nào.
CHƯƠNG 367. 2.3.2.2. Xem quyền của role
CHƯƠNG 368. Người dùng có thể xem các đặc quyền của một role bằng cách đưa ra rolesInfo với các trường showPrivileges và showBuiltinRoles cả được thiết lập thành true. Từ đó có thể gán role cần thiết cho người dùng trong quá trình tạo user và cập nhật người dùng hiện có để gán hoặc thu hồi role.
CHƯƠNG 369. Người dùng được gán với một role nhất định sẽ nhận được tất cả các đặc quyền của role đó. Trong MongoDB, một người dùng có thể có nhiều role. Bằng cách gán các role cho người dùng trong các cơ sở dữ liệu khác nhau, người dùng được tạo trong đó có thể thực thi quyền trên các cơ sở dữ liệu khác.
CHƯƠNG 370. 2.3.2.3. Tính năng kiểm soát truy cập
CHƯƠNG 371. MongoDB mặc định không bật tính năng kiểm soát truy cập đối với quá trình bắt đầu sử dụng. Người dùng có thể bật ủy quyền bằng cách thiết lập cài đặt --auth hoặc security authorization. Ngoài ra, kích hoạt xác thực nội bộ sẽ đồng thời kích hoạt cơ chế ủy quyền bên phía client. Sau khi bật kiểm soát truy cập sẽ bắt buộc người dùng phải tự xác thực.
mongo--port27017 --authenticationDatabase"admin"-u "myUserAdmin" -p
CHƯƠNG 372. Một role có khả năng cung cấp các đặc quyền để thực hiện hành động được chỉ định trên hệ thống cơ sở dữ liệu. Mỗi đặc quyền được chỉ định rõ ràng trong role hoặc được kế thừa từ một role khác hoặc cả hai. Đặc quyền bao gồm một tài nguyên cụ thể và các hành động được phép trên tài nguyên đó. Tài nguyên có thể là một cơ sở dữ liệu, một set collection hoặc cluster. Nếu tài nguyên là cluster, các liên kết ảnh hưởng đến trạng thái của hệ thống hơn so với một cơ sở dữ liệu hoặc collection cụ thể.
CHƯƠNG 373. Một role chỉ định quyền hoạt động được phép trên vùng tài nguyên.
CHƯƠNG 374. Khi bật kiểm soát truy cập hãy đảm bảo rằng người dùng có role userAdmin hoặc userAdminAnyDatabase trong cơ sở dữ liệu admin. Người dùng này có thể quản lý người dùng và có các vai trò như: tạo người dùng, gán hoặc thu hồi vai trò từ người dùng và tạo hoặc sửa đổi role theo cấu hình của người dùng. CHƯƠNG 375. Quy trình:
CHƯƠNG 376. Bước 1: Khởi động MongoDB không có cơ chế kiểm soát truy cập
CHƯƠNG 377. Bước 2: Kết nối với phiên bản MongoDB CHƯƠNG 378.
CHƯƠNG 379. Bước 3: Tạo người dùng quyền admin CHƯƠNG 380.
CHƯƠNG 381. Bước 4: Khởi động lại phiên bản MongoDB với cơ chế kiểm soát truy cập
CHƯƠNG 382. + Tắt mongod: CHƯƠNG 383.
CHƯƠNG 384. + Thoát khỏi mongo shell.
CHƯƠNG 385. + Khởi động mongod với tính năng kiểm soát truy cập
CHƯƠNG 386.
CHƯƠNG 387. Bước 5: Kết nối và xác thực với quyền admin
CHƯƠNG 388.
CHƯƠNG 389. Bước 6: Tạo thêm người dùng cho việc triển khai
mongod --port 27017 --dbpath /var/lib/mongodb
mongo --port 27017 use admin
db.createUser( {
user: "myUserAdmin",
pwd: passwordPrompt(), // or cleartext password
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
} )
db.adminCommand({ shutdown: 1 })
CHƯƠNG 390. + Sau khi xác thực dưới user administrator, sử dụng db.createUser() để tạo thêm người dùng. Từ đó người dùng có thể thiết lập built-in roles hoặc user-defined role tới người dùng.
CHƯƠNG 391. + Ví dụ: Thêm mới user myTester có quyền readWrite tới cơ sở dữ liệu test và quyền read trong cơ sở dữ liệu
database.
CHƯƠNG 392.
CHƯƠNG 393. Bước 7: Kết nối tới phiên bản và xác thực với quyền người dùng đã được xác thực.
CHƯƠNG 394.
CHƯƠNG 395. Bước 8: Đưa vào file document vào trong cơ sở dữ liệu
CHƯƠNG 396. + Xác thực user myTester và đưa file document vào trong collection của database
CHƯƠNG 397. 2.3.2.4. Quản lý người dùng và role
CHƯƠNG 398. Quản lý người dùng và role của người dùng dựa trên mô hình ủy quyền của Mongodb. Cơ chế này yêu cầu quá trình bật kiểm soát truy cập, bạn phải xác thực là người dùng với các đặc quyền bắt buộc được chỉ định trong mỗi phần. Người dùng có quyền admin với role userAdminAnyDatabase hoặc userAdmin bên trong cơ sở dữ liệu cung cấp các quyền được yêu cầu để hiển thị danh sách hoạt động của đối tượng.
Tạo user-defined roles
CHƯƠNG 399. Role cung cấp cho người dùng quyền truy cập vào tài nguyên của MongoDB. MongoDB cung cấp một số vai trò có sẵn mà admin có thể sử dụng để kiểm soát quyền truy cập vào hệ thống MongoDB. Tuy nhiên, nếu các role này không đáp ứng mô tả các quyền mong muốn, người dùng có thể tạo các role mới trong một cơ sở dữ liệu cụ thể.
use test db.createUser( {
user: "myTester", pwd:passwordPrompt(),
// or cleartext password roles: [ { role: "readWrite", db: "test" },
{ role: "read", db: "reporting" } ] }
)
mongo --port 27017 -u "myTester" --authenticationDatabase "test" -p
mongo --port 27017 -u myUserAdmin -p 'abc123' -- authenticationDatabase 'admin'
CHƯƠNG 400. Ngoại trừ các role được tạo trong cơ sở dữ liệu admin, một role chỉ có thể chứa các quyền áp dụng cho cơ sở dữ liệu của nó và chỉ có thể kế thừa từ các role khác trong cơ sở dữ liệu của nó. Ngoài ra, role được tạo trong cơ sở dữ liệu admin có thể bao gồm các quyền áp dụng cho chính cơ sở dữ liệu đó, cơ sở dữ liệu khác hoặc cho cluster và có khả năng kế thừa từ các role trong mọi cơ sở dữ liệu khác.
CHƯƠNG 401. Để tạo một role mới sử dụng phương thức db.createRole() chỉ định quyền trong mảng privileges và các role kế thừa trong mảng roles. MongoDB sử dụng kết hợp tên cơ sở dữ liệu và tên role để xác định một role duy nhất. Mỗi role được đặt trong phạm vi cơ sở dữ liệu mà người dùng tạo ra, nhưng MongoDB lưu trữ tất cả thông tin role đó trong admin.system.roles trong admin.
CHƯƠNG 402. Để tạo một role trong cơ sở dữ liệu cần có: ƯƠ createRole trên database resource.
ƯƠ grantRole trên cơ sở dữ liệu để xác định quyền đối với role mới cũng như xác định role kế thừa nó.
CHƯƠNG 405. Các role userAdmin và userAdminAnyDatabase tích hợp createRole và grantRole trên các tương ứng tài nguyên.
Tạo role để quản lý hoạt động
CHƯƠNG 406. Bước 1: Kết nối tới MongoDB với quyền hợp lý CHƯƠNG 407. + Kết nối tới mongod hoặc mongos với quyền
tương ứng
CHƯƠNG 408. + Quy trình sau myUserAdmin được tạo trong
bật kiểm soát truy cập
CHƯƠNG 409. Bước 2: Tạo role mới để quản lý hoạt động CHƯƠNG 410. manageOpRole có các quyền hoạt động trên
nhiều cơ sở dữ liệu cũng như trên cluster. Như vậy, bạn phải role trong cơ sở dữ liệu admin.
CHƯƠNG 411.