SCRAM を使用した自己管理型配置でのクライアントの認証
次の手順では、スタンドアロンの mongod
インスタンスでクライアント認証用に 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
データベースにユーザー管理者を作成できます。 作成したら、 ユーザー管理者 として認証して追加のユーザーを作成する必要があります。
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 インスタンスを再起動
mongod
インスタンスをシャットダウンします。 mongosh
を使用して、次のコマンドを発行します。
db.adminCommand( { shutdown: 1 } )
アクセス制御を有効にしてmongod
を起動します。
コマンドラインから
mongod
を起動する場合は、--auth
コマンドライン オプションを追加します。mongod --auth --port 27017 --dbpath /var/lib/mongodb mongod
構成ファイル を使用して を起動する場合は、security.authorization
構成ファイル設定を追加します。security: authorization: enabled
このインスタンスに接続するクライアントは、自分自身を認証する必要があり、割り当てられたロールに応じて決定されたアクションのみを実行できるようになります。
重要
Localhost 例外
You can create users either before or after enabling access control. ユーザーを作成する前にアクセス制御を有効にすると、MongoDB はlocalhost 例外を提供し、 admin
データベースにユーザー管理者を作成できます。 作成したら、 ユーザー管理者 として認証して追加のユーザーを作成する必要があります。
ユーザー管理者として接続と認証
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 認証を使用するには、「 キーファイル認証を使用した自己管理型レプリカセットの配置 」を参照してください。