MongoDB 角色管理命令

角色管理命令用于定义指定用户的角色。

一、MongoDB createRole 命令

createRole 命令分配一个角色并指定其优势。分配的角色适用于我们运行命令的数据库。如果角色已存在于数据库中,该命令将返回重复角色错误。

语法:

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

命令字段:

字段名 类型 描述
createRole string createRole 字段包含新角色的名称。
privileges array 它包含授予角色的权限。如果您不想指定任何角色,请将其留空。
roles array 它包含用于将角色分配给用户的角色数组。
authentication
Restrictions
array 身份验证限制字段限制服务器强制执行角色。
writeConcern document 应用于此操作的写入关注级别。

示例:

createRole 命令在 admin 数据库上创建 YiidianAdmin 角色

db.adminCommand({ createRole: "YiidianAdmin",  
 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 }  
)  

二、MongoDB dropRole 命令

MongoDB dropRole 命令删除用户在我们运行该命令的数据库中定义的角色。

语法:

{  
  dropRole: "<role>",  
  writeConcern: { <write concern> }  
}  
Example:  
This example remove the readPrice role from the products database.  
use products  
db.runCommand(  
   {  
     dropRole: "readPrices",  
     writeConcern: { w: "majority" }  
   }  
)  

三、MongoDB updateRole 命令

update 命令更新用户定义的角色。该命令必须在角色的数据库上运行。该命令可以完全替换之前的字段值。

语法:

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

示例:

db.adminCommand(  
   {  
     updateRole: "myClusterwideAdmin",  
     privileges:  
         [  
           {  
             resource: { db: "", collection: "" },  
             actions: [ "find" , "update", "insert", "remove" ]  
           }  
         ],  
     roles:  
         [  
           { role: "dbAdminAnyDatabase", db: "admin" }  
         ],  
     writeConcern: { w: "majority" }  
   }  
)  

上面的示例更新了 admin 数据库上的 myClusterwideAdmin 角色。

四、MongoDB grantPrivilagesToRole 命令

这是一个非常重要的命令,用于向用于运行该命令的数据库上的用户定义角色添加一些额外的权限。

语法:

{  
  grantPrivilegesToRole: "<role>",  
  privileges: [  
      {  
        resource: { <resource> }, actions: [ "<action>", ... ]  
      },  
      ...  
  ],  
  writeConcern: { <write concern> }  
}  

示例:

use products  
db.runCommand(  
   {  
     grantPrivilegesToRole: "service",  
     privileges: [  
         {  
           resource: { db: "products", collection: "" }, actions: [ "find" ]  
         },  
         {  
           resource: { db: "products", collection: "system.js" }, actions: [ "find" ]  
         }  
     ],  
     writeConcern: { w: "majority" , wtimeout: 5000 }  
   }  
)  

上面的示例授予产品数据库中存在的服务角色两个额外的特权。

热门文章

优秀文章