Các lệnh Role Management được sử dụng để Role Management của users. Sau đây là các phương pháp được sử dụng cho các mục đích khác nhau.
Các bài viết liên quan:
# 1. db.createRole (role, writeConcern)
Phương thức createRole được sử dụng để gán một vai trò trong cơ sở dữ liệu. Sử dụng phương pháp này, chúng ta có thể chỉ định các đặc quyền cho vai trò bằng cách liệt kê các đặc quyền một cách rõ ràng. Bạn cũng có thể thực hiện nó bằng cách nhận vai trò kế thừa các đặc quyền từ một số vai trò khác nhau hoặc cả hai. Vai trò luôn áp dụng cho cơ sở dữ liệu mà chúng tôi đang chạy phương thức trên đó.
Cú pháp:
{ role: "<role_name>", privileges: [ { resource: { <resource> }, actions: [ "<action>", ... ] }, ... ], roles: [ { role: "<role_name>", db: "<database_name>" } | "<role>", ], authenticationRestrictions: [ { clientSource: ["<IP>" | "<CIDR range>", ...], serverAddress: ["<IP>" | "<CIDR range>", ...] }, ]}
Ví dụ:
Vai trò JTPAdmin trên cơ sở dữ liệu quản trị sẽ được tạo bằng phương pháp vai trò ngừng hoạt động:
use admin db.createRole( { role: "JTPAdmin", privileges: [ { resource: { cluster: true }, actions: [ "addShard" ] }, { resource: { db: "config", collection: "" }, actions: [ "find", "update", "insert", "remove" ] }, { resource: { db: "users", collection: "usersCollection" }, actions: [ "update", "insert", "remove" ] }, { resource: { db: "", collection: "" }, actions: [ "find" ] } ], roles: [ { role: "read", db: "admin" } ] }, { w: "majority" , wtimeout: 5000 } )
# 2. db.dropRole (UserRole, writeConcern)
Phương thức drop role được sử dụng để loại bỏ vai trò do users xác định cụ thể khỏi cơ sở dữ liệu mà chúng tôi đang chạy phương thức trên đó.
Ví dụ
Ví dụ sau đây xóa vai trò chủ đề đọc khỏi cơ sở dữ liệu hướng dẫn:
use test db.dropRole( "testrole", { w: "majority" } )
# 3. db.dropAllRoles (writeConcern)
Phương thức drop all role được sử dụng để xóa tất cả các role do users xác định đã chỉ định khỏi cơ sở dữ liệu mà chúng tôi đang chạy phương thức trên đó.
Ví dụ
Ví dụ sau sử dụng mối quan tâm ghi của đa số và loại bỏ tất cả các vai trò do users xác định khỏi cơ sở dữ liệu hướng dẫn.
use tutorials db.dropAllRoles( { w: "majority" } )
#4. db.getRole (UserRole, args)
Trong MongoDB, một vai trò kế thừa thể hiện của một số vai trò khác. Phương thức này được sử dụng để lấy các vai trò mẹ mà từ đó vai trò này thừa hưởng các đặc quyền. Ngoài ra, tất cả các đặc quyền của vai trò có thể được trả lại bằng cách sử dụng phương thức này.
Khi chúng ta chạy phương thức db.getRole () từ cơ sở dữ liệu có chứa cả vai trò do users xác định và vai trò dựng sẵn, thì lệnh được chỉ định có thể truy xuất thông tin.
Ví dụ:
use tutorials db.getRole( "Admin" )
Đối với vai trò, Admin đã xác định trên cơ sở dữ liệu hướng dẫn trả về thông tin và đặc quyền kế thừa vai trò.
use tutorials db.getRole( "Admin", { showPrivileges: true } )
# 5. db.getRoles ()
Trả về thông tin cho tất cả các vai trò trong cơ sở dữ liệu mà lệnh chạy trên đó. Chúng ta có thể sử dụng phương pháp này có hoặc không có đối số. Nếu chúng ta chạy phương thức này mà không có đối số, phương thức sẽ trả về thông tin kế thừa cho các vai trò do users xác định của cơ sở dữ liệu.
Ví dụ
Truy vấn sau sẽ trả về các tài liệu cho tất cả các vai trò hiện có trên cơ sở dữ liệu hướng dẫn và cũng bao gồm đặc quyền vai trò và vai trò tích hợp:
db.getRoles( { rolesInfo: 1, showPrivileges:true, showBuiltinRoles: true } )
# 6. db.updateRole (<rolename>, <update>, <writeConcern>)
Phương pháp vai trò cập nhật được sử dụng để cập nhật vai trò do users xác định. Để cập nhật một vai trò do users xác định, nó phải chạy trên cơ sở dữ liệu của vai trò đã chỉ định. Khi chúng tôi cập nhật một trường, nó sẽ thay thế hoàn toàn các giá trị của trường cũ.
Trong trường hợp, chúng tôi cần thêm hoặc xóa các vai trò / đặc quyền mà không thay thế từng giá trị, chúng tôi phải sử dụng một hoặc nhiều phương pháp được liệt kê:
- GrantRolesToRole ()
- GrantPrivilegesToRole ()
- revokeRolesFromRole ()
- revokePrivilegesFromRole ()
Ví dụ
Ví dụ dưới đây sẽ thay thế các đặc quyền và các vai trò cho vai trò thủ thư tồn tại trong cơ sở dữ liệu hướng dẫn. Phương thức này chạy trên cơ sở dữ liệu có chứa thủ thư:
use tutorial db.updateRole( "librarian", { privileges: [ { resource: { db:"tutorials", collection:"books" }, actions: [ "update", "createCollection", "createIndex"] } ], roles: [ { role: "read", db: "products" } ] }, { w:"majority" } )