Overview
MongoDB Enterprise は、Kerberos サービス を使用した認証をサポートしています。Kerberos は、大規模なクライアント/サーバーシステム向けの業界標準の認証プロトコルです。Kerberos を使用すると、 MongoDBとアプリケーションは既存の認証インフラストラクチャとプロセスを利用できます。MongoDB Enterprise はKerberos の MIT実装 のみをサポートしています。
前提条件
Kerberos 配置の セットアップと構成 については、このドキュメントの範囲外です。 このチュートリアルでは、 が各mongod.exe および インスタンスに対して Kerberosmongos.exe サービス プリンシパル を構成していることを前提としています。
レプリカセットとシャーディングされたクラスターの場合は、IP アドレスや修飾されていないホスト名ではなく、構成で完全修飾ドメイン名(FQDN)が使用されていることを確認してください。 Kerberos レルムを正しく解決し、接続できるようにするには、GSSAPI 用の FQDN を使用する必要があります。
手順
mongod.exeKerberos なしで を起動します。
Kerberos ユーザーを初めて追加する場合は、Kerberos サポートなしでmongod.exeを開始します。
Kerberos ユーザーがすでに MongoDB に存在し、 ユーザーの作成に必要な特権 がある場合は、Kerberos サポート付きでmongod.exeを起動できます。
配置に応じて、追加の設定を含めます。
注意
mongod と mongos は、デフォルトで localhost にバインドされます。配置のノードが異なるホスト上で実行されている場合、またはリモート クライアントを配置に接続する場合は、--bind_ip または net.bindIp を指定する必要があります。
mongodに接続します。
mongoshをmongod.exeインスタンスに接続します。 mongod.exeで--authが有効になっている場合は、ユーザーの作成に必要な特権で接続していることを確認してください。
MongoDB に Kerberos プリンシパルを追加しました。
Kerberos プリンシパル<username>@<KERBEROS REALM>を$externalデータベースの MongoDB に追加します。 ALL UPPERCSEで Kerberos レルムを指定します。 $externalデータベースでは、 mongod.exeが外部ソース(例: Kerberos)を使用して認証します。 ユーザーの特権を指定するには、ユーザーにロールを割り当てます。
$external認証ユーザー(Kerberos、LDAP、または X.509 ユーザー)でクライアント セッションと因果整合性の保証を使用するには、ユーザー名を 10 k バイトより大きくすることはできません。
次の例では、 recordsデータベースへの読み取り専用アクセス権を持つ Kerberos プリンシパルreportingapp@EXAMPLE.NETを追加します。
use $external db.createUser( { user: "reportingapp@EXAMPLE.NET", roles: [ { role: "read", db: "records" } ] } )
必要に応じて、追加のプリンシパルを追加します。 Kerberos を使用して認証するすべてのユーザーごとに、MongoDB で対応するユーザーを作成する必要があります。 ユーザーの作成と管理の詳細については、「ユーザー管理コマンド 」を参照してください。
mongod.exeKerberos サポートで を起動します。
mongod.exeサービス プリンシパル アカウント として を開始する必要があります。
Kerberos サポートでmongod.exeを起動するには、 mongod.exeパラメータauthenticationMechanismsをGSSAPIに設定します。
mongod.exe --setParameter authenticationMechanisms=GSSAPI <additional mongod.exe options>
構成に必要な追加オプションを含めます。 たとえば、リモート クライアントを配置に接続する場合、または配置ノードを異なるホスト上で実行する場合は、 --bind_ipを指定します。
たとえば、次の例では、Kerberos をサポートするスタンドアロンのmongod.exeインスタンスが起動されます。
mongod.exe --auth --setParameter authenticationMechanisms=GSSAPI --bind_ip localhost,<hostname(s)|ip address(es)>
mongosh.exeshellmongod.exeシェルを に接続し、認証します。
mongoshshellシェルクライアントをKerberos Kerberosapplication@EXAMPLE.NET プリンシパル として接続します。
コマンドラインから接続と認証を行うことができます。
cmd.exe を使用:
mongosh.exe --host hostname.example.net --authenticationMechanism=GSSAPI --authenticationDatabase=$external --username reportingapp@EXAMPLE.NET
Windows PowerShell を使用:
mongosh.exe --host hostname.example.net --authenticationMechanism=GSSAPI --authenticationDatabase='$external' --username reportingapp@EXAMPLE.NET
Kerberos 名と一致するホスト名を持つシステムに接続する場合は、IP アドレスや修飾されていないホスト名ではなく、 --hostオプションに完全修飾ドメイン名(FQDN)を指定していることを確認してください。
Kerberos Kerberos名と一致しないシステムに接続する場合は、まずmongoshshell mongod.exemongoshshelldb.auth()シェルを に接続し、次に シェルから、$external メソッドを使用して で認証します。データベース。
use $external db.auth( { mechanism: "GSSAPI", user: "reportingapp@EXAMPLE.NET" } )
その他の考慮事項
mongos.exeKerberos の を構成する
Kerberos サポートでmongos.exeを起動するには、 mongos.exeパラメータauthenticationMechanismsをGSSAPIに設定します。 You must start mongos.exe as the service principal account:
mongos.exe --setParameter authenticationMechanisms=GSSAPI <additional mongos options>
構成に必要な追加オプションを含めます。 たとえば、リモート クライアントを配置に接続する場合、または配置ノードを異なるホスト上で実行する場合は、 --bind_ipを指定します。
たとえば、次の例では、Kerberos をサポートするmongosインスタンスが起動されます。
mongos.exe --setParameter authenticationMechanisms=GSSAPI --configdb shard0.example.net, shard1.example.net,shard2.example.net --keyFile C:\<path>\mongos.keyfile --bind_ip localhost,<hostname(s)|ip address(es)>
構成に必要な mongos.exe オプションを変更したり、追加したりします。たとえば、シャードされたクラスター ノードの内部認証に --keyFile を使用する代わりに、X.509 ノード認証を使用できます。
MongoDB Windows サービスへのサービスプリンシパル名の割り当て
setspn.exeを使用して、 mongod.exeとmongos.exeサービスを実行しているアカウントにサービス プリンシパル名(SPN)を割り当てます。
setspn.exe -S <service>/<fully qualified domain name> <service account name>
例
mongod.exeがサービスアカウント名mongodtestを使用してtestserver.mongodb.comでmongodbという名前のサービスとして実行する場合は、次のように SPN を割り当てます。
setspn.exe -S mongodb/testserver.mongodb.com mongodtest
追加の認証メカニズムを含める
Kerberos 認証( GSSAPI (Kerberos))は、次のものと一緒に機能できます。
MongoDB の SCRAM 認証メカニズム 。
MongoDB の LDAP 認証メカニズムは次のとおりです。
PLAIN(LDAP SASL)
X.509 のMongoDB の認証メカニズム:
次のようにメカニズムを指定します。
--setParameter authenticationMechanisms=GSSAPI,SCRAM-SHA-256
他のメカニズムが使用されている場合のみ、追加してください。 このパラメーター設定は、クラスター ノードの MongoDB の内部認証には影響しません。
テストと検証
構成手順を完了したら、 mongokerberosツールを使用して構成を検証できます。
mongokerberosは、MongoDB で使用するプラットフォームの Kerberos 構成を確認し、MongoDB クライアントからの Kerberos 認証が期待どおりに機能することをテストするのに便利な方法を提供します。 詳しくは、 mongokerberosのドキュメントを参照してください。
mongokerberos は MongoDB Enterprise でのみ利用可能です。