自己管理型配置におけるロールベースのアクセス制御
MongoDB は、RBAC(Role-Based Access Control、ロールベースのアクセス制御)を使用して、MongoDB システムへのアクセス権を管理します。 ユーザーには、データベースリソースと操作へのユーザーのアクセス権を決定する 1 つ以上のロールが付与されます。 割り当てられたロール以外では、ユーザーはシステムにアクセスできません。
アクセス制御の有効化
MongoDB のアクセス制御は、デフォルトでは有効になりません。 認証を有効にするには、 --auth
またはsecurity.authorization
設定を使用します。 内部認証を有効にすると、クライアントの認可も有効になります。
アクセス制御を有効にすると、ユーザーは自分自身を認証する必要があります。
ロール
ロールは、リソースに対して指定されたアクションを実行する権限を付与します。各権限は、ロール内で明示的に指定されるか、別のロールから継承されるか、またはその両方です。
アクセス権
ロールは権限を制限しません。ユーザーに 2 つのロールがある場合は、アクセス権の幅が広いロールが優先されます。
たとえば、すでに readWriteAnyDatabase
ロールを持つユーザーにデータベースの read
ロールを付与した場合、read
の付与によってデータベースへの書込み (write) アクセス権が取り消されることはありません。
ユーザーからロールを取り消すには、revokeRolesFromUser
コマンドを使用します。
認証の制限
ロールによりユーザーに認証制限を課すことができ、指定された送信元および宛先の IP アドレス範囲からの接続をユーザーに要求できます。
詳細については、「認証制限」を参照してください。
権限
権限は、指定されたリソースと、そのリソースに対して許可されるアクションで構成されます。
リソースとは、データベース、コレクション、コレクションのセット、またはクラスターです。 リソースがクラスターの場合、関連するアクションは特定のデータベースやコレクションではなく、システムの状態に影響を与えます。 リソース ドキュメントの詳細については、「自己管理型配置に関するリソース ドキュメント 」を参照してください。
アクションは、リソースに対して許可される操作を指定します。 使用可能なアクションについては、「自己管理型配置の権限アクション 」を参照してください。
継承された権限
ロールの定義には 1 つ以上の既存のロールを含めることができます。その場合、ロールは含められたロールのすべての権限を継承します。
ロールはデータベース内の他のロールから権限を継承することができます。admin
データベースで作成されたロールは、任意のデータベースのロールから権限を継承できます。
ロールの権限を表示する
showPrivileges
フィールドと showBuiltinRoles
フィールドの両方を true
に設定して rolesInfo
コマンドを発行すると、ロールの権限を表示できます。
ユーザーとロール
ユーザーの作成時にユーザーにロールを割り当てることができます。既存のユーザーを更新して、ロールを付与または取り消すこともできます。すべてのユーザー マネジメント方法については「ユーザー マネジメント」を参照してください。
ロールを割り当てられたユーザーには、そのロールのすべての権限が与えられます。ユーザーは複数のロールを持つことができます。さまざまなデータベースのユーザー ロールを割り当てることで、あるデータベースで作成されたユーザーに、他のデータベースを操作する権限を与えることができます。
注意
データベースに最初に作成されたユーザーは、他のユーザーを管理する特権を持つユーザー管理者です。 「自己管理型配置でアクセス制御を有効にする 」を参照してください。
組み込みロールとユーザー定義ロール
MongoDB は、データベース システムで一般的に必要な権限セットを提供する組み込みロールを提供します。
これらの組み込みロールで必要な権限セットが提供されない場合、MongoDB はユーザー定義ロールを作成および変更するメソッドを提供します。
LDAP 承認
MongoDB Enterprise は、認証されたユーザーがメンバーである LDAP グループを LDAP サーバーに照会することをサポートしています。MongoDB は、返された各グループの DN(Distinguished Name、識別名)を admin
データベースのロールにマッピングします。MongoDB は、マップされたロールとそれに関連付けられた権限に基づいてユーザーを承認します。詳細については、「LDAP 認証」を参照してください。