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

SCRAM を使用した自己管理型配置でのクライアントの認証

項目一覧

  • 手順
  • 次のステップ

次の手順では、スタンドアロンの mongodインスタンスでクライアント認証用に SCRAM を設定します。

レプリカセットまたはシャーディングされたクラスターに SCRAM 認証を使用するには、「 キーファイル認証を使用した自己管理型レプリカセットの配置 」を参照してください。

1

アクセス制御なしでスタンドアロンのmongodインスタンスを起動します。

ターミナルを開き、 mongodユーザーとして次のコマンドを実行します。

mongod --port 27017 --dbpath /var/lib/mongodb

このチュートリアルのmongodインスタンスでは、 port 27017/var/lib/mongodbデータ ディレクトリが使用されています。

チュートリアルでは、 /var/lib/mongodbディレクトリが存在し、デフォルトのdbPathであることを前提としています。 必要に応じて、別のデータディレクトリまたはポートを指定できます。

Tip

mongodが起動すると、 /var/lib/mongodbディレクトリにいくつかのシステムファイルが作成されます。 システム ファイルに正しい所有権を付与するには、 mongodユーザーとして次のチュートリアルに従います。 rootユーザーとしてmongodを起動した場合、後でファイル所有権を更新する必要があります。

2

新しいターミナルを開き、 mongoshを使用してクラスターに接続します。

mongosh --port 27017

別の配置に接続する場合は、接続に必要なコマンドライン オプション( --hostなど)を追加してください。

3

重要

Localhost 例外

アクセス制御を有効にする前または後に、ユーザー管理者を作成できます。 ユーザーを作成する前にアクセス制御を有効にすると、MongoDB はlocalhost 例外を提供し、 adminデータベースにユーザー管理者を作成できます。 作成したら、 ユーザー管理者 として認証して追加のユーザーを作成する必要があります。

mongoshを使用する場合

  1. adminデータベースへの切り替え

  2. userAdminAnyDatabase } ロールとreadWriteAnyDatabaseロールを持つmyUserAdminユーザーを追加する」を参照してください。

use admin
db.createUser(
{
user: "myUserAdmin",
pwd: passwordPrompt(), // or cleartext password
roles: [
{ role: "userAdminAnyDatabase", db: "admin" },
{ role: "readWriteAnyDatabase", db: "admin" }
]
}
)

Tip

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

userAdminAnyDatabaseロールにより、このユーザーは次の操作を実行できます。

  • ユーザーの作成

  • ユーザーにロールを付与または取り消す

  • カスタムロールを作成または変更する

必要に応じて、ユーザーに追加の 組み込みロールまたはユーザー定義ロールを割り当てることができます。

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

4

mongodインスタンスをシャットダウンします。 mongoshを使用して、次のコマンドを発行します。

db.adminCommand( { shutdown: 1 } )

mongoshを終了します。

アクセス制御を有効にしてmongodを起動します。

このインスタンスに接続するクライアントは、自分自身を認証する必要があり、割り当てられたロールに応じて決定されたアクションのみを実行できるようになります。

重要

Localhost 例外

You can create users either before or after enabling access control. ユーザーを作成する前にアクセス制御を有効にすると、MongoDB はlocalhost 例外を提供し、 adminデータベースにユーザー管理者を作成できます。 作成したら、 ユーザー管理者 として認証して追加のユーザーを作成する必要があります。

5

mongoshを使用すると、次のことが可能になります。

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() メソッドを使用することをお勧めします。

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

レプリカセットまたはシャーディングされたクラスターに SCRAM 認証を使用するには、「 キーファイル認証を使用した自己管理型レプリカセットの配置 」を参照してください。

戻る

SCRAM