Rate this post

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. Hôm nay các bạn hãy cùng W3seo tìm hiểu về cách thức quản lý quyền hạn trong MongoDB và những ví dụ đi kèm.

db.createRole (role, writeConcern)

Lệnh createRole chỉ định một vai trò và chỉ định những ưu điểm của nó. Vai trò được chỉ định áp dụng cho cơ sở dữ liệu mà chúng tôi chạy lệnh trên đó. Lệnh trả về lỗi vai trò trùng lặp nếu vai trò đã tồn tại trong cơ sở dữ liệu.

Cú pháp:

{ createRole: "<new role>",  
  privileges: [  
    { resource: { <resource> }, actions: [ "<action>", ... ] },  
    ...  
  ],  
  roles: [  
    { role: "<role>", db: "<database>" } | "<role>",  
    ...  
  ],  
  authenticationRestrictions: [  
    {  
      clientSource: ["<IP>" | "<CIDR range>", ...],  
      serverAddress: ["<IP>" | "<CIDR range>", ...]  
    },  
    ...  
  ],  
  writeConcern: <write concern document>  
}  

FieldTypeDescription
createRolestringTrường createRole chứa tên của vai trò mới.
privilegesarrayNó chứa các đặc quyền để cấp các vai trò. Để trống nếu bạn không muốn chỉ định bất kỳ vai trò nào.
rolesarrayNó chứa mảng vai trò được sử dụng để gán vai trò cho người dùng.
authentication
Restrictions
arrayTrường hạn chế xác thực hạn chế máy chủ thực thi vai trò.
writeConcerndocumentĐó là mức độ quan tâm của việc ghi để áp dụng cho thao tác này.

Ví dụ:

Lệnh createRole tạo vai trò websiteAdmin trên cơ sở dữ liệu quản trị

db.adminCommand({ createRole: "WebsiteAdmin",  
 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" }  
 ],  
 writeConcern: { w: "majority" , wtimeout: 5000 }  
)  

db.updateRole (<rolename>, <update>, <writeConcern>)

UpdateRole đượ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" }  
)  

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" } )  

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" } )  

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 } )  

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  
    }  
)  

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now