Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

自己管理型配置における組み込みロール

項目一覧

  • MongoDB Atlas の組み込みロール
  • セルフホスト型配置の組み込みロール
  • データベースユーザー ロール
  • データベース管理ロール
  • クラスター管理ロール
  • バックアップと復旧ロール
  • 全データベース ロール
  • スーパーユーザー ロール
  • 内部ロール

MongoDB はロールベースの認可を通じてデータとコマンドへのアクセスを許可し、データベース システムで一般的に必要とされるさまざまなレベルのアクセスを提供する組み込みロールを提供します。 さらにユーザー定義のロール を作成することもできます。

ロールは定義されたリソースに対して一連のアクションを実行する権限を付与します。所定のロールは、そのロールが定義されているデータベースに適用され、コレクション レベルの詳細なアクセス権を付与できます。

システム コレクションには、次のものが含まれます。

  • <database>.system.* namespace

  • local.replset.* レプリカセットの名前空間

詳細については、「システム コレクション 」を参照してください。

非システム コレクションは、前のリストの名前空間にないコレクションです。

MongoDB の組み込みロールのそれぞれは、ロールのデータベース内のすべてのシステム コレクションに対するデータベース レベルのアクセスと、すべての システム コレクション に対するコレクション レベルのアクセスを定義します。

このセクションでは、各組み込みロールの特権について説明します。また、 showPrivilegesフィールドとshowBuiltinRolesフィールドの両方をtrueに設定して rolesInfo コマンドを発行すると、いつでも組み込みロールの特権を表示できます。

MongoDB Atlas 配置には、セルフホスト型配置とは異なる組み込みロールがあります。詳しくは次のリソースを参照してください。

  • MongoDB Atlas の組み込みロール

  • セルフホスト型配置の組み込みロール

MongoDB Atlas でホストされている配置の組み込みデータベースユーザー ロールについては、「 Altas 組み込みのロールと特権 」を参照してください。

MongoDB Atlas ユーザー インターフェースで、データベースユーザーを作成し、組み込みロールを割り当てることができます。 詳細については、「データベース ユーザーの追加 」を参照してください。

MongoDB は、セルフホスト型配置向けに次の組み込みロールを提供します。

すべてのデータベースに次のクライアント ロールが含まれます。

read

すべてのシステム コレクションと system.js コレクションのデータを読み取る機能を提供します。

注意

このロールでは system.namespaces コレクションに直接アクセスする権限は付与されません。

このロールは次のアクションを許可することで読み取りアクセス権を提供します。

ユーザーに listDatabases 権限アクションがない場合、ユーザーは listDatabases コマンドを実行して、ユーザーが権限を持つデータベースのリストを返すことができます(ユーザーが特定のコレクションに対して権限を持つデータベースを含みます)。ただし、このコマンドが authorizedDatabases オプションを指定しないか、 true に設定して実行する場合に限られます。

readWrite

read ロールのすべての権限に加え、すべてのシステム コレクションと system.js コレクションのデータを変更する能力を提供します。

このロールは、これらのコレクションに対して以下のアクションを提供します。

すべてのデータベースには、次のデータベース管理ロールが含まれます。

dbAdmin

スキーマ関連のタスク、インデックスの作成、統計の収集などの管理タスクを実行する機能を提供します。このロールでは、ユーザーおよびロール マネジメントの権限は付与されません。

具体的には、ロールは次の権限を提供します。

Resource
許可されたアクション

システム コレクション(すなわちデータベース リソース)

dbOwner

データベース所有者は、データベースに対してあらゆる管理アクションを実行できます。このロールは、readWritedbAdminuserAdmin の各ロールによって付与される権限を組み合わせたものです。

userAdmin

現在のデータベースでロールとユーザーを作成および変更する能力を提供します。userAdmin ロールでは、ユーザー自身を含むユーザーに任意の権限を付与できるため、間接的にデータベース、あるいは admin データベースにデータベースにスコープを設定した場合はクラスターに スーパーユーザー アクセス権を付与します。

userAdmin ロールは、次のアクションを明示的に提供します。

警告

userAdmin ロールの付与がセキュリティに与える影響を理解することが重要です。データベースに対してこのロールを持つユーザーは、そのデータベース上で自分自身に任意の権限を付与できます。userAdmin ロールを admin データベースに対して付与すると、間接的にクラスターに対するスーパーユーザー アクセス権を付与することになるため、セキュリティ上の影響がさらに大きくなります。admin スコープの userAdmin ロールを付与されたユーザーは、クラスター全体に userAdminAnyDatabase などのロールや権限を付与できます。

admin データベースには、単一のデータベースではなくシステム全体の管理のため、次のロールが含まれています。これらのロールには、レプリカセットシャーディングされたクラスターの管理機能が含まれますが、これらに限定されません。

clusterAdmin

クラスター マネジメントへの最大のアクセスを提供します。このロールは、 clusterManagerclusterMonitor 、およびhostManagerロールによって付与される権限を組み合わせたものです。 さらに、このロールは dropDatabase アクションを提供します。

clusterManager

クラスターに対するマネジメントおよびモニタリングのアクションを提供します。このロールを持つユーザーは、それぞれシャーディングとレプリケーションで使用される config データベースと local データベースにアクセスできます。さらに、このロールは querySettings アクションを提供します。

config データベースで、次のアクションを許可します。

local データベースで、次のアクションを許可します。

Resource
アクション

local データベース内のすべての非システムコレクション

system.replset コレクション

clusterMonitor

MongoDB Cloud ManagerMongoDB Ops Managerモニタリングエージェントなどのモニタリング ツールへの読み取り専用アクセス権を提供します。

クラスター全体に対して次のアクションを許可します。

クラスター内のすべてのデータベースに対して次のアクションを許可します。

クラスター内のすべての system.profile コレクションに対して、find アクションを許可します。

config データベースで、次のアクションを許可します。

local データベースで、次のアクションを許可します。

directShardOperations

MongoDB 8.0 以降では、directShardOperations ロールを使用して、メンテナンス操作を実行できます。その操作では、シャードに対してコマンドを直接実行する必要があります。

警告

directShardOperationsロールを使用して コマンドを実行すると、クラスターが正しく動作しなくなり、データが破損する可能性があります。 directShardOperationsロールは、メンテナンス目的で、または MongoDB サポートのガイダンスに必ず従う必要があります。 メンテナンス操作を実行したら、 directShardOperationsロールの使用を停止します。

enableSharding

コレクションのシャーディングを有効にし、既存のシャードキーを変更する機能を提供します。

すべての非システム コレクションに次のアクションを提供します。

hostManager

サーバーをモニターおよび管理する能力を提供します。

クラスター全体では、次のアクションを提供します。

クラスター内のすべてのデータベースで、次のアクションを実行します。

admin データベースには、データのバックアップと復元のため、次のロールが含まれています。

backup

データのバックアップに必要な最小限の権限を付与します。このロールは MongoDB Cloud Manager バックアップエージェント、 MongoDB Ops Manager バックアップエージェント、または mongodump を使用して mongod インスタンス全体をバックアップするのに十分な権限を提供します。

config データベースの settings コレクションに対して insert アクションおよびupdate アクションを提供します。

anyResource で提供するのは、

クラスター全体で提供するのは、

find アクションを次に対して提供します。

  • クラスター内のすべてのシステム コレクション(config データベースおよび local データベース内のコレクションを含む)

  • クラスター内の次のシステム コレクション。

    system.jssystem.profile

  • admin.system.users コレクションおよび admin.system.roles コレクション

  • config.settings コレクション

  • MongoDB 2.6 以前のバージョンのレガシー system.users コレクション

insert コレクションに対して update アクションおよび config.settings アクションを提供します。

backup ロールは、データベース プロファイリングの実行中に存在する system.profile コレクションをバックアップするための追加の権限を提供します。

restore

非システム コレクションに convertToCapped を提供します。

データに system.profile コレクション データを含まずに --oplogReplay オプションなしで mongorestore を実行する場合に、バックアップからデータを復元するために必要な権限が提供されます。

バックアップ データに system.profile コレクション データが含まれている場合や --oplogReplay を使用して実行する場合は、追加の権限が必要です。

system.profile

バックアップ データにsystem.profileコレクション データが含まれており、ターゲット データベースにsystem.profileコレクションが含まれていない場合、プログラムでは実際にsystem.profileドキュメントを復元していないにもかかわらず、 mongorestoreはコレクションの作成を試みます。 そのため、ユーザーはデータベースの コレクションに対してcreateCollectionconvertToCapped system.profile} アクションと アクションを実行するには追加の特権が必要です。

組み込みロール dbAdmindbAdminAnyDatabase には、いずれも追加の権限が付属します。

--oplogReplay

--oplogReplay を使用して実行するには、anyResource に対して anyAction を持つユーザー定義ロールを作成します。

--oplogReplaymongorestoreを実行する必要があるユーザーにのみ付与します

クラスター全体に対して次のアクションを提供します。

すべてのシステム コレクションに次のアクションを提供します。

system.js コレクションに対して次のアクションを提供します。

anyResource に次のアクションを提供します。

config データベースおよび local データベース上のすべての非システム コレクションに対して次のアクションを提供します。

次のアクションを提供します admin.system.version

次のアクションを提供します admin.system.roles

admin.system.users コレクションおよびレガシー system.users コレクションに対して次のアクションを提供します。

restoreには通常の変更操作を使用してadmin.system.usersコレクション内のドキュメントを変更する機能が含まれていますが、これらのデータ必ず ユーザー管理メソッド を使用して変更してください。

<database>.system.viewsコレクションに次のアクションを提供します。

クラスター全体では、次のアクションを提供します。

admin データベースでは次のロールを使用でき、localconfig を除くすべてのデータベースに適用される権限を提供します。

readAnyDatabase

local データベースと config データベースを除くすべてのデータベースに対して、read と同じ読み取り専用権限を提供します。また、このロールはクラスター全体を対象とした listDatabases アクションも提供します。

clusterManagerデータベースとclusterMonitor データベースにアクセスするには、config } ロールとlocal ロールも参照してください。

readWriteAnyDatabase

local データベースと config データベースを除く全データベースに readWrite と同じ権限を提供します。また、このロールは、次のものも提供します。

clusterManagerデータベースとclusterMonitor データベースにアクセスするには、config } ロールとlocal ロールも参照してください。

userAdminAnyDatabase

local データベースと config データベースを除く全データベースで userAdmin と同じユーザ管理操作を行う権限を提供します。

userAdminAnyDatabase クラスターに対する次の権限アクションも提供します。

このロールは admin データベースの system.users コレクションと system.roles コレクション、および MongoDB 2.6 以前のバージョンのレガシー system.users コレクションに対して、次の権限アクションを提供します。

userAdminAnyDatabase ロールはユーザーが付与できる権限を制限しません。その結果、userAdminAnyDatabase ユーザーは、ロールがユーザー管理を超える権限を明示的に承認していなくても、現在の権限を超える権限を自分自身に付与したり、すべての権限を自分自身に付与したりすることができます。このロールは実質的に MongoDB システムのスーパーユーザーです。

clusterManagerデータベースとclusterMonitor データベースにアクセスするには、config } ロールとlocal ロールも参照してください。

dbAdminAnyDatabase

local データベースと config データベースを除く全データベースに dbAdmin と同じ権限を提供します。また、このロールはクラスター全体を対象とした listDatabases アクションも提供します。

clusterManagerデータベースとclusterMonitor データベースにアクセスするには、config } ロールとlocal ロールも参照してください。

MongoDB 5.0 以降、dbAdminAnyDatabase には applyOps 権限アクションが含まれます。

いくつかのロールでは、間接的または直接的なシステム全体のスーパーユーザー アクセス権が提供されます。

次のロールは、任意のデータベースに対する任意の権限を、任意のユーザーに提供します。つまり、ユーザーがこれらのロールのいずれかを持っている場合、任意のデータベースに対する任意の権限を自分自身に割り当てることができるます。

次のロールはすべてのリソースに対する完全な権限を提供します。

root

以下のロールの操作とすべてのリソースへのアクセス権を組み合わせて提供します。

また、次の特権アクションも提供します。

バージョン 6.0 での変更:root ロールには、 config データベースの system.preimages コレクションに対する find 特権および remove 特権が含まれます。

__system

MongoDB は、レプリカセット ノードや mongos インスタンスなどのクラスター ノードを表すオブジェクトに、このロールを割り当てます。このロールの所有者は、データベース内の任意のオブジェクトに対して任意のアクションを実行することができます。

例外的な状況を除き、アプリケーションまたは人間の管理者を表すユーザーオブジェクトにこのロールを割り当てないでください。

例として applyOps コマンドを実行するなど、すべてのリソースのすべてのアクションにアクセスする必要がある場合は、このロールを割り当てないでください。代わりにユーザー定義ロールを作成して anyResource に対して anyAction を付与し、これらのオペレーションにアクセスする必要のあるユーザーのみがこのアクセス権を持つようにします。

戻る

ロールベースのアクセス制御