次の手順では、スタンドアロンのmongodインスタンスでクライアント認証用に SCRAM を設定します。
レプリカセットまたはシャーディングされたクラスターに SCRAM 認証を使用するには、「 キーファイル認証を使用した自己管理型レプリカセットの配置 」を参照してください。
重要
同一ユーザーに対してSCRAM認証と他の認証タイプを併用することはできません。
手順
アクセス制御なしで MongoDB を起動
アクセス制御なしでスタンドアロンのmongodインスタンスを起動します。
ターミナルを開き、 mongodユーザーとして次のコマンドを実行します。
mongod --port 27017 --dbpath /var/lib/mongodb
このチュートリアルのmongodインスタンスでは、 port 27017と/var/lib/mongodbデータ ディレクトリが使用されています。
チュートリアルでは、 /var/lib/mongodbディレクトリが存在し、デフォルトのdbPathであることを前提としています。 必要に応じて、別のデータディレクトリまたはポートを指定できます。
ユーザー管理者の作成
重要
Localhost 例外
アクセス制御を有効にする前または後に、ユーザー管理者を作成できます。 ユーザーを作成する前にアクセス制御を有効にすると、MongoDB はlocalhost 例外を提供し、 adminデータベースにユーザー管理者を作成できます。 作成したら、 ユーザー管理者 として認証して追加のユーザーを作成する必要があります。
Using mongosh:
adminデータベースへの切り替え「
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 )がユーザーの認証データベースになります。 ユーザーはこのデータベースで認証する必要がありますが、他のデータベースでもロールを持つことができます。 ユーザーの認証データベースによって、ユーザーの特権は制限されません。
アクセス制御を使用して MongoDB インスタンスを再起動
Shut down the mongod instance. Using mongosh, issue the following command:
db.adminCommand( { shutdown: 1 } )
Exit mongosh.
アクセス制御を有効にしてmongodを起動します。
mongod構成ファイル を使用して を起動する場合は、security.authorization構成ファイル設定を追加します。security: authorization: enabled
このインスタンスに接続するクライアントは、自分自身を認証する必要があり、割り当てられたロールに応じて決定されたアクションのみを実行できるようになります。
重要
Localhost 例外
You can create users either before or after enabling access control. ユーザーを作成する前にアクセス制御を有効にすると、MongoDB はlocalhost 例外を提供し、 adminデータベースにユーザー管理者を作成できます。 作成したら、 ユーザー管理者 として認証して追加のユーザーを作成する必要があります。
ユーザー管理者として接続と認証
Using mongosh, you can:
Start mongosh with the -u <username>, -p, and the --authenticationDatabase <database> command line options:
mongosh --port 27017 --authenticationDatabase \ "admin" -u "myUserAdmin" -p
パスワードの入力を求められたら、入力します。
Using mongosh, connect to your database deployment:
mongosh --port 27017
In mongosh, switch to the authentication database (in this case, admin), and use the db.auth(<username>, <pwd>) method to authenticate:
use admin db.auth("myUserAdmin", passwordPrompt()) // or cleartext password
Tip
passwordPrompt() メソッドではパスワードの入力が求められます。パスワードを文字列として直接指定することもできます。パスワードが画面に表示されたり、shell 履歴にパスワードが流出したりすることを避けるために、 passwordPrompt() メソッドを使用することをお勧めします。
パスワードの入力を求められたら、入力します。
次のステップ
レプリカセットまたはシャーディングされたクラスターに SCRAM 認証を使用するには、「 キーファイル認証を使用した自己管理型レプリカセットの配置 」を参照してください。