revokePrivilegesFromRole
定義
revokePrivilegesFromRole
コマンドが実行されるデータベース上のユーザー定義ロールから指定された権限を削除します。
Tip
mongosh
では、このコマンドはdb.revokePrivilegesFromRole()
ヘルパー メソッドを通じて実行することもできます。ヘルパー メソッドは
mongosh
ユーザーには便利ですが、データベースコマンドと同じレベルの情報は返されない可能性があります。 便宜上必要ない場合、または追加の戻りフィールドが必要な場合は、 データベースコマンドを使用します。
互換性
このコマンドは、次の環境でホストされている配置で使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
重要
このコマンドは、M 0 、M 2 、M 5クラスターではサポートされていません。 詳細については、「サポートされていないコマンド 」を参照してください。
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
構文
このコマンドの構文は、次のとおりです。
db.runCommand( { revokePrivilegesFromRole: "<role>", privileges: [ { resource: { <resource> }, actions: [ "<action>", ... ] }, ... ], writeConcern: <write concern document>, comment: <any> } )
コマンドフィールド
このコマンドは、次のフィールドを使用します。
フィールド | タイプ | 説明 |
---|---|---|
| string | 特権を取り消すユーザー定義のロール。 |
| 配列 | ロールから削除する特権の配列。 特権の形式の詳細については、 |
| ドキュメント | 任意。 操作の 書込み保証( write concern ) のレベル。 詳しくは、 書込み保証(write concern) の仕様を参照してください。 |
| any | 任意。このコマンドに添付するユーザー指定のコメント。設定すると、このコメントは以下の場所にこのコマンドの記録と合わせて表示されます。
コメントには、有効な BSON 型(string, integer, object, array など)を使用できます。 |
動作
特権を取り消すには、リソース ドキュメントパターンがその特権のresource
フィールドと完全に一致する必要があります。 actions
フィールドはサブセットまたは完全一致にすることができます。
たとえば、 products
データベースのロールaccountRole
が、 products
データベースをリソースとして指定する次の特権を持つとします。
{ "resource" : { "db" : "products", "collection" : "" }, "actions" : [ "find", "update" ] }
products
データベース内の1 つのコレクションのみからfind
および/またはupdate
を取り消すことはできません。 次の操作では、 ロールは変更されません。
use products db.runCommand( { revokePrivilegesFromRole: "accountRole", privileges: [ { resource : { db : "products", collection : "gadgets" }, actions : [ "find", "update" ] } ] } ) db.runCommand( { revokePrivilegesFromRole: "accountRole", privileges: [ { resource : { db : "products", collection : "gadgets" }, actions : [ "find" ] } ] } )
ロール から "find"
アクションおよび/または"update"
accountRole
アクションを取り消すには、リソース ドキュメントと完全に一致する必要があります。たとえば、次の操作は、既存の特権から"find"
アクションのみを取り消します。
use products db.runCommand( { revokePrivilegesFromRole: "accountRole", privileges: [ { resource : { db : "products", collection : "" }, actions : [ "find" ] } ] } )
必要なアクセス権
特権を取り消すには、特権ターゲットのデータベースに対してrevokeRole
アクションが必要です。 特権が複数のデータベースまたはcluster
リソースを対象としている場合は、 admin
データベースに対してrevokeRole
アクションが必要です。
例
次の操作により、 products
データベース内のassociates
ロールから複数の特権が削除されます。
use products db.runCommand( { revokePrivilegesFromRole: "associate", privileges: [ { resource: { db: "products", collection: "" }, actions: [ "createCollection", "createIndex", "find" ] }, { resource: { db: "products", collection: "orders" }, actions: [ "insert" ] } ], writeConcern: { w: "majority" } } )