MongoDBユーザーカスタムロールの作成


MongoDBユーザーカスタムロールの作成
前提条件
データベースにロールを作成するには:1.データベースリソース上のcreateRole動作.       2.このデータベース上でgrantRole動作は、新しいロールに権限を指定し、継承されたロールを指定します.
組み込みロールuserAdminとuserAdminAnyDatabaseは、それぞれのリソースのcreateRoleおよびgrantRole動作を提供します.
ロール管理の現在のアクションの作成
次の例では、dbのみを実行するロールmanageOpRoleを作成します.CurrentOp()とdb.killOp()の権限.
1.適切な権限を使用してMongoDBに接続します.前提条件セクションで指定した権限を使用して、mongodまたはmongosに接続します.次の手順では、ユーザー管理者siteUserAdminを作成します.
use admin   
db.createUser(    
  {    
    user: "siteUserAdmin",    
    pwd: "password",    
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]    
  }    
)

MongoDBへのログイン:
mongo --port 27017 -u siteUserAdmin -p password --authenticationDatabase admin

SiteUserAdminには、adminおよび他のデータベースにロールを作成する権限があります.
2.現在の操作を管理する新しいロールを作成します.manageOpRoleには、複数のデータベースおよびclusterリソースで操作する権限があります.したがって、adminデータベースにロールを作成する必要があります.
use admin   
db.createRole(    
   {    
     role: "manageOpRole",    
     privileges: [    
       { resource: { cluster: true }, actions: [ "killop", "inprog" ] },    
       { resource: { db: "", collection: "" }, actions: [ "killCursors" ] }    
     ],    
     roles: []    
   }    
)

新しいロールは、アクションを殺すことを許可されています.
警告:運転中の操作を終了するには、極めて注意してください.dbのみを使用します.killOp()は、内部データベース操作を終了することなくクライアントが開始した操作を終了する
.
埋め込まれたロールClusterMonitorもdbを実行する権限を提供します.CurrentOp()およびその他の権限、埋め込まれたロールhostManagerはdbを実行する権限を提供します.killOp()およびその他の権限.
ロール実行mongostatの作成
次の例では、mongostatRoleを作成すると、mongostatを実行する権限のみが与えられます.
1.適切な権限を使用してMongoDBに接続します.前提条件セクションで指定した権限を使用して、mongodまたはmongosに接続します.次の手順では、ユーザー管理者siteUserAdminを作成します.
use admin   
db.createUser(    
  {    
    user: "siteUserAdmin",    
    pwd: "password",    
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]    
  }    
)

MongoDBへのログイン:
mongo --port 27017 -u siteUserAdmin -p password --authenticationDatabase admin

SiteUserAdminには、adminおよび他のデータベースにロールを作成する権限があります.
2.現在の操作を管理する新しいロールを作成します.mongostatRoleはclusterリソースで操作する権限があります.したがって、adminデータベースにロールを作成する必要があります.
use admin   
db.createRole(    
   {    
     role: "mongostatRole",    
     privileges: [    
       { resource: { cluster: true }, actions: [ "serverStatus" ] }    
     ],    
     roles: []    
   }    
)

埋め込まれたロールclusterMonitorにはmongostatの実行権限やその他の権限も用意されています.
以下を参照してください.https://docs.mongodb.org/manual/tutorial/manage-users-and-roles/#create-role-to-manage-ops