db.grantPrivilegesToRole()
定義
db.grantPrivilegesToRole(rolename, privileges, writeConcern)
重要
mongosh メソッド
このページでは、
mongosh
メソッドについて説明します。ただし、データベースコマンドや Node.js などの言語固有のドライバーのドキュメントには該当しません。データベースコマンドについては、
grantPrivilegesToRole
コマンドを参照してください。MongoDB API ドライバーについては、各言語の MongoDB ドライバー ドキュメントを参照してください。
db.grantPrivilegesToRole()
メソッドは次の構文を使用します。db.grantPrivilegesToRole( "< rolename >", [ { resource: { <resource> }, actions: [ "<action>", ... ] }, ... ], { < writeConcern > } ) db.grantPrivilegesToRole()
メソッドは次の引数を取ります。Parameterタイプ説明rolename
string特権を付与するロールの名前。privileges
配列ロールに追加する特権。 権限の形式については、privileges
を参照してください。writeConcern
ドキュメント任意。 操作の 書込み保証( write concern ) のレベル。 詳しくは、 書込み保証(write concern) の仕様を参照してください。
db.grantPrivilegesToRole()
メソッドは 1 つ以上の 特権を付与できます。 各<privilege>
の構文は次のとおりです。{ resource: { <resource> }, actions: [ "<action>", ... ] }
動作
レプリカセット
レプリカセットで実行する場合、 db.grantPrivilegesToRole()
はデフォルトで"majority"
書込み保証を使用して実行されます。
スコープ
admin
データベースで作成されたロールを除き、ロールにはそのデータベースに適用される権限のみを含めることができます
admin
データベースで作成されたロールには、 admin
データベース、他のデータベース、またはクラスターリソースに適用する特権を含めることができます。
必要なアクセス権
特権を付与するには、特権ターゲットのデータベースに対してgrantRole
アクションが必要です。 複数のデータベースまたはcluster
リソースに特権を付与するには、 admin
データベースに対してgrantRole
アクションが必要です。
例
次のdb.grantPrivilegesToRole()
操作では、 products
データベースに存在するロールinventoryCntrl01
に 2 つの追加の特権が付与されます。 操作はそのデータベースに対して実行されます。
use products db.grantPrivilegesToRole( "inventoryCntrl01", [ { resource: { db: "products", collection: "" }, actions: [ "insert" ] }, { resource: { db: "products", collection: "system.js" }, actions: [ "find" ] } ], { w: "majority" } )
最初の特権は、このロールを持つユーザーが、 システム コレクション を除く、 insert
データベースのすべてのコレクションに対して アクションproducts
を実行することを許可します。システム コレクションにアクセスするには、特権が 2 番目の特権のように、リソース ドキュメントでシステム コレクションを明示的に指定する必要があります。
2 番目の特権は、このロールを持つユーザーがfind
product
という名前の データベースのシステム コレクションに対して アクションsystem.js
を実行することを許可します。