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

自己管理型配置でのユーザーの作成

項目一覧

  • MongoDB Atlas との互換性
  • 前提条件
  • 手順
  • 接続と認証
  • 配置用の追加ユーザー作成
  • インスタンスに接続し、次のように認証します: myTester
  • 次のようにドキュメントを挿入: myTester
  • その他の例
  • ユーザー名とパスワードの認証
  • Kerberos 認証
  • LDAP 認証
  • x.509 クライアント証明書認証
  • 次のステップ

アクセス制御を有効にすると、ユーザーは本人確認を求められます。ユーザーに ロールを 1 つ以上付与する必要があります。ロールにより、ユーザーには MongoDB のリソースに対して特定の アクションを実行する権限が付与されます。

MongoDB システムの各アプリケーションとユーザーは、それぞれ別のユーザーにマッピングする必要があります。このアクセス分離の原則によって、アクセスの取り消しや継続的なユーザーのメンテナンスが容易になります。最小権限のシステムにするには、ユーザーに必要最小限の特権だけを付与してください。

このページのユーザー情報は、特に指定がない限り、次のすべての環境でホストされる自己管理型配置に適用されます。

  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン

次の制限は、MongoDB Atlas でホストされている配置にのみ適用されます。 これらの制限のいずれかが組織にとって問題となる場合は、 Atlas サポートにお問い合わせください。

  • MongoDB Atlas クラスターでデータベースユーザーを追加、変更、または削除するには、 Atlas CLIAtlas Administration API 、Atlas UI、またはサポートされている統合を使用する必要があります。 それ以外の場合、MongoDB Atlas はユーザーによる変更をすべてロールバックします。 MongoDB Atlas でユーザーを追加するには、MongoDB Atlas ドキュメントの「データベースユーザーの追加」を参照してください。

  • 使用可能な MongoDB Atlas の組み込みロール特定の特権は、MongoDB コマンドのサブセットをサポートします。 詳細については、「 M 10 + クラスターでサポートされていないコマンド」を参照してください。

  • MongoDB Atlas は、MongoDB Atlas プロジェクトごとに最大 100 のデータベースユーザーをサポートします。1 つのプロジェクトで 100 を超えるデータベースユーザーが必要な場合は、Atlas サポートにお問い合わせください。

ユーザーを作成するには、次のことを行う必要があります。

日常のユーザー作成を行うには、次の権限が必要です。

userAdminおよび userAdminAnyDatabase の組み込みロールが、それぞれのリソースでのcreateUser アクションおよび grantRole アクションを提供します。

注意

次の手順では、 SCRAM認証を使用します。 その他の認証メカニズムの詳細については、「追加の例 」を参照してください。

自己管理型 MongoDB Enterprise や MongoDB Community 配置のデータベースユーザーを設定するには、次の手順に従います。

1

mongoshを使用して、プライマリmongodに接続するか、シャーディングされたクラスターでmongosに接続し、 ユーザー管理者 または必要な特権を持つユーザーとして認証します。

mongosh-u <username>-p次のように、 、 、--authenticationDatabase <database> コマンドライン オプションを使用して を開始します。

mongosh --port 27017 --authenticationDatabase \
"admin" -u "myUserAdmin" -p

パスワードの入力を求められたら、入力します。

mongosh を使用して、次のデータベース配置に接続します。

mongosh --port 27017

mongoshで、認証データベース(この場合はadmin )に切り替え、 db.auth(<username>, <pwd>)メソッドを使用して認証します。

use admin
db.auth("myUserAdmin", passwordPrompt()) // or cleartext password

Tip

passwordPrompt() メソッドではパスワードの入力が求められます。パスワードを文字列として直接指定することもできます。パスワードが画面に表示されたり、shell 履歴にパスワードが流出したりすることを避けるために、 passwordPrompt() メソッドを使用することをお勧めします。

パスワードの入力を求められたら、入力します。

2

注意

次の手順ではSCRAM認証を使用します。 その他の認証メカニズムの詳細については、「追加の例 」を参照してください。

ユーザー管理者として認証した後、db.createUser() メソッドを使用して追加のユーザーを作成します。任意の組み込みロールまたはユーザー定義ロールをユーザーに割り当てることができます。

以下の操作では、test データベースの readWrite ロールと reporting データベースの read ロールを持つユーザー myTestertest データベースに追加されます。

use test
db.createUser(
{
user: "myTester",
pwd: passwordPrompt(), // or cleartext password
roles: [ { role: "readWrite", db: "test" },
{ role: "read", db: "reporting" } ]
}
)

Tip

passwordPrompt() メソッドではパスワードの入力が求められます。パスワードを文字列として直接指定することもできます。パスワードが画面に表示されたり、shell 履歴にパスワードが流出したりすることを避けるために、 passwordPrompt() メソッドを使用することをお勧めします。

ユーザーを作成したデータベース(この例では test)がそのユーザーの認証データベースになります。ユーザーはこのデータベースで認証されますが、他のデータベースでもロールを持つことができます。ユーザーの認証データベースによって、ユーザーの特権は制限されません。

追加ユーザーを作成したら、mongosh を終了します。

3

重要

同じmongoshセッション内でユーザーを切り替えることはできません。 別のユーザーとして認証とは、セッションが認証された両方のユーザーの特権を持つことを意味します。 ユーザーを終了して再起動するには、 mongoshを使用します。

myUserAdmin mongoshを終了した後、 myTesterとして再接続します。

mongosh-u <username>-p次のように、 、 、--authenticationDatabase <database> コマンドライン オプションを使用して を開始します。

mongosh --port 27017 -u "myTester" \
--authenticationDatabase "test" -p

プロンプトが表示されたら、ユーザーのパスワードを入力します。

mongosh を使用して、次のデータベース配置に接続します。

mongosh --port 27017

mongoshで、認証データベース(この場合はadmin )に切り替え、 db.auth(<username>, <pwd>)メソッドを使用して認証します。

use test
db.auth("myTester", passwordPrompt()) // or cleartext password

Tip

passwordPrompt() メソッドではパスワードの入力が求められます。パスワードを文字列として直接指定することもできます。パスワードが画面に表示されたり、shell 履歴にパスワードが流出したりすることを避けるために、 passwordPrompt() メソッドを使用することをお勧めします。

プロンプトが表示されたら、ユーザーのパスワードを入力します。

4

myTester ユーザーには、test データベースで読み取り(read)操作と書込み (write) 操作を実行する権限があります(また、reporting データベースでの読み取り操作も実行できます)。myTester として認証されたら、test データベースのコレクションにドキュメントを挿入します。たとえば、test データベースで次の挿入操作を実行できます。

db.foo.insertOne( { x: 1, y: 1 } )

Tip

以下も参照してください。

以下の操作では、指定された名前、パスワード、ロールを持つユーザーが reporting データベースに作成されます。

Tip

passwordPrompt() メソッドではパスワードの入力が求められます。パスワードを文字列として直接指定することもできます。パスワードが画面に表示されたり、shell 履歴にパスワードが流出したりすることを避けるために、 passwordPrompt() メソッドを使用することをお勧めします。

use reporting
db.createUser(
{
user: "reportsUser",
pwd: passwordPrompt(), // or cleartext password
roles: [
{ role: "read", db: "reporting" },
{ role: "read", db: "products" },
{ role: "read", db: "sales" },
{ role: "readWrite", db: "accounts" }
]
}
)

Kerberos などの外部認証メカニズムを使用して MongoDB に認証するユーザーは、mongosmongod が認証のために外部ソースを参照できるように、$external データベースに作成する必要があります。

$external認証ユーザー(Kerberos、LDAP、または x.509 ユーザー)でクライアント セッションと因果整合性の保証を使用するには、ユーザー名を 10k バイトより大きくすることはできません。

Kerberos 認証の場合は、ユーザー名として Kerberos プリンシパルを追加する必要があります。パスワードを指定する必要はありません。

以下の操作では、records データベースへの読み取り専用アクセス権を持つ Kerberos プリンシパル reportingapp@EXAMPLE.NET を追加します。

use $external
db.createUser(
{
user: "reportingapp@EXAMPLE.NET",
roles: [
{ role: "read", db: "records" }
]
}
)

Tip

以下も参照してください。

MongoDB 配置の Kerberos 認証設定の詳細については、次のチュートリアルを参照してください。

注意

MongoDB 8.0以降、 LDAP認証と認可は非推奨です。 LDAP は使用可能であり、 MongoDB 8のサポート期間中に変更されずに動作し続けます。 LDAP は将来のメジャー リリースで削除される予定です。

詳細については、「LDAP の非推奨」を参照してください。

LDAP などの外部認証メカニズムを使用して MongoDB に認証するユーザーは、mongosmongod が認証のために外部ソースを参照できるように、$external データベースに作成する必要があります。

$external認証ユーザー(Kerberos、LDAP、または x.509 ユーザー)でクライアント セッションと因果整合性の保証を使用するには、ユーザー名を 10k バイトより大きくすることはできません。

LDAP 認証の場合は、ユーザー名を指定する必要があります。パスワードは LDAP サービスによって処理されるため、指定する必要はありません。

以下の操作では、records データベースへの読み取り専用アクセス権を持つ reporting ユーザーを追加します。

use $external
db.createUser(
{
user: "reporting",
roles: [
{ role: "read", db: "records" }
]
}
)

Tip

以下も参照してください。

MongoDB 配置の LDAP 認証設定の詳細については、次のチュートリアルを参照してください。

x.509 クライアント証明書認証などの外部認証メカニズムを使用して MongoDB に認証するユーザーは、mongosmongod が認証のために外部ソースを参照できるように、$external データベースに作成する必要があります。

$external認証ユーザー(Kerberos、LDAP、または x.509 ユーザー)でクライアント セッションと因果整合性の保証を使用するには、ユーザー名を 10k バイトより大きくすることはできません。

x.509 クライアント証明書認証の場合、MongoDB ユーザーとしてクライアント証明書の subject の値を追加する必要があります。一意な x.509 クライアント証明書は、それぞれ 1 つの MongoDB ユーザーに対応します。パスワードを指定する必要はありません。

以下の操作では、クライアント証明書のサブジェクト CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,C=myCountry ユーザーを、records データベースへの読み取り専用アクセス権とともに追加します。

use $external
db.createUser(
{
user: "CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,C=myCountry",
roles: [
{ role: "read", db: "records" }
]
}
)

Tip

以下も参照してください。

MongoDB 配置の x.509 クライアント証明書認証設定の詳細については、次のチュートリアルを参照してください。

自己管理型 MongoDB Enterprise や MongoDB Community 配置のユーザー管理、ロールの割り当て、カスタムロールの作成を行うには、「 自己管理型配置でユーザーとロールの管理 」を参照してください。

戻る

ユーザー