Windows で Kerberos 認証を使用して自己管理型 MongoDB を構成する
Overview
MongoDB Enterprise は、 Kerberos サービスを使用した認証をサポートしています。 Kerberos は、大規模なクライアント/サーバー システム向けの業界標準の認証プロトコルです。 Kerberos を使用すると、MongoDB とアプリケーションは既存の認証インフラストラクチャとプロセスを活用できます。 MongoDB Enterprise は MIT 実装 のみをサポートしています Kerberos の
前提条件
Kerberos 配置の セットアップと構成 については、このドキュメントの範囲外です。 このチュートリアルでは、 が各mongod.exe
および インスタンスに対して Kerberosmongos.exe
サービス プリンシパル を構成していることを前提としています。
レプリカセットとシャーディングされたクラスターの場合は、IP アドレスや修飾されていないホスト名ではなく、構成で完全修飾ドメイン名(FQDN)が使用されていることを確認してください。 Kerberos レルムを正しく解決し、接続できるようにするには、GSSAPI 用の FQDN を使用する必要があります。
手順
mongod.exe
Kerberos なしで を起動します。
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 ユーザー)でクライアント セッションと因果整合性の保証を使用するには、ユーザー名を 10k バイトより大きくすることはできません。
次の例では、 records
データベースへの読み取り専用アクセス権を持つ Kerberos プリンシパルreportingapp@EXAMPLE.NET
を追加します。
use $external db.createUser( { user: "reportingapp@EXAMPLE.NET", roles: [ { role: "read", db: "records" } ] } )
必要に応じて、追加のプリンシパルを追加します。 Kerberos を使用して認証するすべてのユーザーごとに、MongoDB で対応するユーザーを作成する必要があります。 ユーザーの作成と管理の詳細については、「ユーザー管理コマンド 」を参照してください。
mongod.exe
Kerberos サポートで を起動します。
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.exe
shellmongod.exe
シェルを に接続し、認証します。
mongosh
shellシェルクライアントを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名と一致しないシステムに接続する場合は、まずmongosh
shell mongod.exe
mongosh
shelldb.auth()
シェルを に接続し、次に シェルから、$external
メソッドを使用して で認証します。データベース。
use $external db.auth( { mechanism: "GSSAPI", user: "reportingapp@EXAMPLE.NET" } )
その他の考慮事項
mongos.exe
Kerberos の を構成する
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 でのみ利用可能です。