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

db.createRole()

項目一覧

  • 定義
  • 動作
  • 必要なアクセス権
db.createRole(role, writeConcern)

データベースにロールを作成します。ロールの権限を指定するには、権限を明示的に一覧表示するか、ロールに他のロールから権限を継承させるか、あるいはその両方を行います。ロールは、メソッドを実行するデータベースに適用されます。

重要

mongosh メソッド

このページでは、mongosh メソッドについて説明します。ただし、データベースコマンドや Node.js などの言語固有のドライバーのドキュメントには該当しません

データベースコマンドについては、 createRoleコマンドを参照してください。

MongoDB API ドライバーについては、各言語の MongoDB ドライバー ドキュメントを参照してください。

db.createRole()メソッドは次の引数を受け入れます。

Parameter
タイプ
説明
role
ドキュメント
ロールの名前とロール定義を含むドキュメント。
writeConcern
ドキュメント

任意。 操作の 書込み保証( write concern ) のレベル。 詳しくは、 書込み保証(write concern) の仕様を参照してください。

role ドキュメントには、次の形式があります。

{
role: "<name>",
privileges: [
{ resource: { <resource> }, actions: [ "<action>", ... ] },
...
],
roles: [
{ role: "<role>", db: "<database>" } | "<role>",
...
],
authenticationRestrictions: [
{
clientSource: ["<IP>" | "<CIDR range>", ...],
serverAddress: ["<IP>" | "<CIDR range>", ...]
},
...
]
}

roleドキュメントには、以下のフィールドがあります。

フィールド
タイプ
説明
role
string
新しいロールの名前。
privileges
配列

ロールに付与する特権。特権は、リソースと許可されたアクションから構成されます。権限の構文については、privileges 配列を参照してください。

privileges フィールドを含める必要があります。特権を指定しない場合は、空の配列を使用します。

roles
配列

このロールが特権を継承するロールの配列。

roles フィールドを含める必要があります。継承するロールを指定しない場合は、空の配列を使用します。

authenticationRestrictions
配列

任意。

サーバーがロールに強制する認証制限。このロールを付与されたユーザーが接続できる、または接続元として使用できる IP アドレスと CIDR 範囲のリストを指定します。

バージョン 3.6 の新機能

rolesフィールドでは、組み込みロールユーザー定義ロールの両方を指定できます。

db.createRole()が実行されるのと同じデータベースに存在するロールを指定するには、ロールの名前を使用してロールを指定します。

"readWrite"

または、次のように、ドキュメントを使用してロールを指定することもできます。

{ role: "<role>", db: "<database>" }

別のデータベースに存在するロールを指定するには、 ドキュメントを使用してロールを指定します。

バージョン 3.6 の新機能

authenticationRestrictionsドキュメントには、次のフィールドのみを含めることができます。 authenticationRestrictionsドキュメントに認識されないフィールドが含まれている場合、サーバーはエラーをスローします。

フィールド名
説明
clientSource
IP アドレスおよび/またはCIDR範囲の配列
存在する場合、サーバーはユーザーを認証する際に、クライアントの IP アドレスが指定されたリストに含まれているか、リスト内の CIDR 範囲に属していることを確認します。 クライアントの IP アドレスが存在しない場合、サーバーはユーザーを認証しません。
serverAddress
IP アドレスおよび/またはCIDR範囲の配列
クライアントが接続できる IP アドレスまたは CIDR 範囲のリスト。 存在する場合、サーバーはクライアントの接続が指定されたリスト内の IP アドレス経由で受け入れられたことを確認します。 認識されない IP アドレス経由で接続が受け入れられた場合、サーバーはユーザーを認証しません。

重要

ユーザーが互換性のない認証制限を持つ複数のロールを継承した場合、そのユーザーは使用できなくなります。

たとえば、ユーザーが、 clientSourceフィールドが["198.51.100.0"]であるロールと、 clientSourceフィールドが["203.0.113.0"]である別のロールを継承した場合、サーバーはユーザーを認証できません。

MongoDB での認証の詳細については、「認証 」を参照してください。

レプリカセットで実行する場合、 db.createRole()はデフォルトで"majority"書込み保証を使用して実行されます。

admin データベースで作成されたロールを除き、ロールにはそのデータベースに適用される権限のみを含めて、そのデータベース内の他のロールからのみ継承できます。

admin データベースで作成されたロールには、admin データベース、他のデータベース、またはクラスターリソースに適用する特権を含めることができ、admin データベースだけでなく他のデータベースのロールからも継承できます。

db.createRole() メソッドは、そのロールがデータベース内に既に存在する場合、重複ロールエラーを返します。

データベースにロールを作成するには、以下が必要です。

組み込みロール userAdminuserAdminAnyDatabase は、それぞれのリソース上で createRole および grantRole のアクションを提供します。

authenticationRestrictions を指定してロールを作成するには、ロールが作成されるデータベース リソース上のsetAuthenticationRestriction アクションが必要です。

次の db.createRole() メソッドは、admin データベースに myClusterwideAdmin ロールを作成します。

use admin
db.createRole(
{
role: "myClusterwideAdmin",
privileges: [
{ resource: { cluster: true }, actions: [ "addShard" ] },
{ resource: { db: "config", collection: "" }, actions: [ "find", "update", "insert", "remove" ] },
{ resource: { db: "users", collection: "usersCollection" }, actions: [ "update", "insert", "remove" ] },
{ resource: { db: "", collection: "" }, actions: [ "find" ] }
],
roles: [
{ role: "read", db: "admin" }
]
},
{ w: "majority" , wtimeout: 5000 }
)

戻る

ロール マネジメント