自己管理型配置における組み込みロール
項目一覧
MongoDB はロールベースの認可を通じてデータとコマンドへのアクセスを許可し、データベース システムで一般的に必要とされるさまざまなレベルのアクセスを提供する組み込みロールを提供します。 さらにユーザー定義のロール を作成することもできます。
ロールは定義されたリソースに対して一連のアクションを実行する権限を付与します。所定のロールは、そのロールが定義されているデータベースに適用され、コレクション レベルの詳細なアクセス権を付与できます。
システム コレクションには、次のものが含まれます。
<database>.system.*
namespacelocal.replset.*
レプリカセットの名前空間
詳細については、「システム コレクション 」を参照してください。
非システム コレクションは、前のリストの名前空間にないコレクションです。
MongoDB の組み込みロールのそれぞれは、ロールのデータベース内のすべての非システム コレクションに対するデータベース レベルのアクセスと、すべての システム コレクション に対するコレクション レベルのアクセスを定義します。
このセクションでは、各組み込みロールの特権について説明します。また、 showPrivileges
フィールドとshowBuiltinRoles
フィールドの両方をtrue
に設定して rolesInfo
コマンドを発行すると、いつでも組み込みロールの特権を表示できます。
MongoDB Atlas 配置には、セルフホスト型配置とは異なる組み込みロールがあります。詳しくは次のリソースを参照してください。
MongoDB Atlas の組み込みロール
MongoDB Atlas でホストされている配置の組み込みデータベースユーザー ロールについては、「 Altas 組み込みのロールと特権 」を参照してください。
MongoDB Atlas ユーザー インターフェースで、データベースユーザーを作成し、組み込みロールを割り当てることができます。 詳細については、「データベース ユーザーの追加 」を参照してください。
セルフホスト型配置の組み込みロール
MongoDB は、セルフホスト型配置向けに次の組み込みロールを提供します。
すべてのデータベースを対象としたデータベース ユーザーとデータベース管理ロール
admin
データベース上の他のすべてのロールのみ
データベースユーザー ロール
すべてのデータベースに次のクライアント ロールが含まれます。
read
すべての非システム コレクションと
system.js
コレクションのデータを読み取る機能を提供します。注意
このロールでは
system.namespaces
コレクションに直接アクセスする権限は付与されません。このロールは次のアクションを許可することで読み取りアクセス権を提供します。
ユーザーに
listDatabases
権限アクションがない場合、ユーザーはlistDatabases
コマンドを実行して、ユーザーが権限を持つデータベースのリストを返すことができます(ユーザーが特定のコレクションに対して権限を持つデータベースを含みます)。ただし、このコマンドがauthorizedDatabases
オプションを指定しないか、true
に設定して実行する場合に限られます。
データベース管理ロール
すべてのデータベースには、次のデータベース管理ロールが含まれます。
dbAdmin
スキーマ関連のタスク、インデックスの作成、統計の収集などの管理タスクを実行する機能を提供します。このロールでは、ユーザーおよびロール マネジメントの権限は付与されません。
具体的には、ロールは次の権限を提供します。
Resource許可されたアクション非システム コレクション(すなわちデータベース リソース)
dbOwner
データベース所有者は、データベースに対してあらゆる管理アクションを実行できます。このロールは、
readWrite
、dbAdmin
、userAdmin
の各ロールによって付与される権限を組み合わせたものです。
userAdmin
現在のデータベースでロールとユーザーを作成および変更する能力を提供します。
userAdmin
ロールでは、ユーザー自身を含むユーザーに任意の権限を付与できるため、間接的にデータベース、あるいはadmin
データベースにデータベースにスコープを設定した場合はクラスターに スーパーユーザー アクセス権を付与します。userAdmin
ロールは、次のアクションを明示的に提供します。警告
userAdmin
ロールの付与がセキュリティに与える影響を理解することが重要です。データベースに対してこのロールを持つユーザーは、そのデータベース上で自分自身に任意の権限を付与できます。userAdmin
ロールをadmin
データベースに対して付与すると、間接的にクラスターに対するスーパーユーザー アクセス権を付与することになるため、セキュリティ上の影響がさらに大きくなります。admin
スコープのuserAdmin
ロールを付与されたユーザーは、クラスター全体にuserAdminAnyDatabase
などのロールや権限を付与できます。
クラスター管理ロール
admin
データベースには、単一のデータベースではなくシステム全体の管理のため、次のロールが含まれています。これらのロールには、レプリカセットやシャーディングされたクラスターの管理機能が含まれますが、これらに限定されません。
clusterAdmin
クラスター マネジメントへの最大のアクセスを提供します。このロールは、
clusterManager
、clusterMonitor
、およびhostManager
ロールによって付与される権限を組み合わせたものです。 さらに、このロールはdropDatabase
アクションを提供します。
clusterManager
クラスターに対するマネジメントおよびモニタリングのアクションを提供します。このロールを持つユーザーは、それぞれシャーディングとレプリケーションで使用される
config
データベースとlocal
データベースにアクセスできます。Resourceアクションすべて databases
clusterManager
は、config
データベースとlocal
データベースに追加の権限を提供します。config
データベースで、次のアクションを許可します。Resourceアクションconfig
データベース内のすべての非システムコレクションlocal
データベースで、次のアクションを許可します。Resourceアクションlocal
データベース内のすべての非システムコレクションsystem.replset
コレクション
clusterMonitor
MongoDB Cloud ManagerやMongoDB Ops Managerモニタリングエージェントなどのモニタリング ツールへの読み取り専用アクセス権を提供します。
クラスター全体に対して次のアクションを許可します。
クラスター内のすべてのデータベースに対して次のアクションを許可します。
クラスター内のすべての
system.profile
コレクションに対して、find
アクションを許可します。config
データベースで、次のアクションを許可します。Resourceアクションconfig
データベース内のすべての非システムコレクションsystem.js
コレクションlocal
データベースで、次のアクションを許可します。Resourceアクションlocal
データベース内のすべての非システムコレクションsystem.js
collection
hostManager
サーバーをモニターおよび管理する能力を提供します。
クラスター全体では、次のアクションを提供します。
rotateCertificates
(バージョン 5.0 の新機能)
クラスター内のすべてのデータベースで、次のアクションを実行します。
バックアップと復旧ロール
admin
データベースには、データのバックアップと復元のため、次のロールが含まれています。
backup
データのバックアップに必要な最小限の権限を付与します。このロールは MongoDB Cloud Manager バックアップエージェント、 MongoDB Ops Manager バックアップエージェント、または
mongodump
を使用してmongod
インスタンス全体をバックアップするのに十分な権限を提供します。config
データベースのsettings
コレクションに対してinsert
アクションおよびupdate
アクションを提供します。anyResource
で提供するのは、listDatabases
アクションlistCollections
アクションlistIndexes
アクション
クラスター全体で提供するのは、
find
アクションを次に対して提供します。クラスター内のすべての非システム コレクション(
config
データベースおよびlocal
データベース内のコレクションを含む)クラスター内の次のシステム コレクション。
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
はコレクションの作成を試みます。 そのため、ユーザーはデータベースの コレクションに対してcreateCollection
convertToCapped
system.profile
} アクションと アクションを実行するには追加の特権が必要です。組み込みロール
dbAdmin
とdbAdminAnyDatabase
には、いずれも追加の権限が付属します。--oplogReplay
--oplogReplay
を使用して実行するには、anyResource
に対してanyAction
を持つユーザー定義ロールを作成します。--oplogReplay
でmongorestore
を実行する必要があるユーザーにのみ付与しますクラスター全体に対して次のアクションを提供します。
すべての非システム コレクションに次のアクションを提供します。
system.js
コレクションに対して次のアクションを提供します。anyResource
に次のアクションを提供します。config
データベースおよびlocal
データベース上のすべての非システム コレクションに対して次のアクションを提供します。次のアクションを提供します
admin.system.version
次のアクションを提供します
admin.system.roles
admin.system.users
コレクションおよびレガシーsystem.users
コレクションに対して次のアクションを提供します。restore
には通常の変更操作を使用してadmin.system.users
コレクション内のドキュメントを変更する機能が含まれていますが、これらのデータは必ず ユーザー管理メソッド を使用して変更してください。
全データベース ロール
admin
データベースでは次のロールを使用でき、local
と config
を除くすべてのデータベースに適用される権限を提供します。
readAnyDatabase
local
データベースとconfig
データベースを除くすべてのデータベースに対して、read
と同じ読み取り専用権限を提供します。また、このロールはクラスター全体を対象としたlistDatabases
アクションも提供します。clusterManager
データベースとclusterMonitor
データベースにアクセスするには、config
} ロールとlocal
ロールも参照してください。
readWriteAnyDatabase
local
データベースとconfig
データベースを除く全データベースにreadWrite
と同じ権限を提供します。また、このロールはクラスター全体を対象としたlistDatabases
アクションも提供します。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
以下のロールの操作とすべてのリソースへのアクセス権を組み合わせて提供します。
system.
コレクションに対するvalidate
特権アクションも提供します。
内部ロール
__system
MongoDB は、レプリカセット ノードや
mongos
インスタンスなどのクラスター ノードを表すオブジェクトに、このロールを割り当てます。このロールの所有者は、データベース内の任意のオブジェクトに対して任意のアクションを実行することができます。例外的な状況を除き、アプリケーションまたは人間の管理者を表すユーザーオブジェクトにこのロールを割り当てないでください。
例として
applyOps
コマンドを実行するなど、すべてのリソースのすべてのアクションにアクセスする必要がある場合は、このロールを割り当てないでください。代わりにユーザー定義ロールを作成してanyResource
に対してanyAction
を付与し、これらのオペレーションにアクセスする必要のあるユーザーのみがこのアクセス権を持つようにします。