Overview
MongoDB Enterprise は、 mongod インスタンスと mongos インスタンスに対するMongoDBクライアントの Kerberos認証をサポートします。Kerberos は、大規模なクライアント/サーバーシステム向けの業界標準の認証プロトコルです。Kerberos を使用すると、 MongoDBとアプリケーションは既存の認証インフラストラクチャとプロセスを活用できます。MongoDB Enterprise はKerberos の MIT実装のみをサポートしています。
Kerberos コンポーネントと MongoDB
Principals
Kerberos ベースのシステムでは、認証された通信のすべての参加者は「プリンシパル」と呼ばれ、すべてのプリンシパルには一意の名前が必要です。
プリンシパルは、 Realmと呼ばれる管理単位に属します。 Kerberos キーディストリビューションセンター(KDC)は、各Realmのプリンシパルとプリンシパルに関連する「秘密キー」のデータベースを維持します。
クライアント サーバー認証では、クライアントは KDC に特定のアセットへのアクセスのための「チケット」を要求します。 KDC は、クライアントのシークレットとサーバーのシークレットを使用してチケットを作成し、クライアントとサーバーが相互に認証できるようにしますが、シークレットは非表示にされます。
Kerberos サポート用の MongoDB の構成では、ユーザー プリンシパルとサービス プリンシパルの 2 種類のプリンシパル名が重要になります。
ユーザー プリンシパル
Kerberos を使用して認証するには、MongoDB に Kerberos ユーザー プリンシパルを$externalデータベースに追加する必要があります。 ユーザー プリンシパル名の形式は次のとおりです。
<username>@<KERBEROS REALM>
Kerberos を使用して認証するすべてのユーザーごとに、 $externalデータベース内の MongoDB に対応するユーザーを作成する必要があります。
$external認証ユーザー(Kerberos、LDAP、または X.509 ユーザー)でクライアント セッションと因果整合性の保証を使用するには、ユーザー名を 10 k バイトより大きくすることはできません。
MongoDB にユーザーを追加する方法と、そのユーザーとして認証する方法の例については、「 Linux で Kerberos 認証を使用してMongoDB を構成する 」および「 Windows で Kerberos 認証を使用して MongoDB を構成する 」を参照してください。
Tip
MongoDB でユーザーの作成と管理に関する一般的な情報については、「 自己管理型配置でユーザーとロールを管理する 」を参照してください。
サービスプリンシパル
すべての MongoDB mongodおよびmongosインスタンス(または Windows のmongod.exeまたはmongos.exe )には、関連付けられたサービス プリンシパルが必要です。 サービス プリンシパル名の形式は次のとおりです。
<service>/<fully qualified domain name>@<KERBEROS REALM>
MongoDB では、 <service>はデフォルトでmongodbになります。 たとえば、 m1.example.comが MongoDB サーバーで、 example.comがEXAMPLE.COM Kerberos レルムを維持している場合、 m1にはサービスプリンシパル名mongodb/m1.example.com@EXAMPLE.COMが必要です。
To specify a different value for <service>, use serviceName during the start up of mongod or mongos (or mongod.exe or mongos.exe). mongosh or other clients may also specify a different service principal name using serviceName.
サービスプリンシパル名は、サービスプリンシパル名の完全修飾ドメイン名(FQDN)部分を使用して、ネットワーク経由でアクセスできる必要があります。
デフォルトでは、Kerberos は DNS を使用してホストを解決する前に、 /etc/krb5.confファイルを使用してホストを識別しようとします。
Windows で MongoDB をサービスとして実行している場合は、「 MongoDB Windows サービスへのサービスプリンシパル名の割り当て 」を参照してください。
Linux Keytab Files
Linux systems can store Kerberos authentication keys for a service principal in keytab files. Each Kerberized mongod and mongos instance running on Linux must have access to a keytab file containing keys for its service principal.
キータブ ファイルを安全に保つには、 mongodまたはmongosプロセスを実行するユーザーのみにアクセスを制限する ファイル権限 を使用します。
チケット
Linux では、MongoDB クライアントは Kerberos のkinitプログラムを使用して、サーバーに対してユーザー プリンシパルを認証するための認証情報キャッシュを初期化できます。
Windows Active Directory
Linux システムとは異なり、Windows で実行されているmongod } インスタンスとmongosインスタンスでは、キータブ ファイルにアクセスする必要がありません。 代わりに、 mongodインスタンスとmongosインスタンスはオペレーティング システムに固有の認証情報ストアからサーバー認証情報を読み取ります。
ただし、Windows Active Directory から、Linux システムで使用するためのキータブ ファイルをエクスポートすることはできます。 詳しくは 、 Ktpass 詳しくは、 を参照してください。
Kerberos による認証
Kerberos サポートと認証用に MongoDB を構成するには、「 Linux で Kerberos 認証を使用して MongoDBを構成する 」および「 Windows で Kerberos 認証を使用して MongoDB を構成する 」を参照してください。
操作上の考慮事項
DNS
mongodまたはmongosインスタンスを実行する各ホストには、フォワードルックアップとリバースルックアップを提供するために、 AとPTRの両方の DNS レコードが必要です。
AとPTRの DNS レコードがないと、ホストは Kerberos ドメインまたは キーディストリビューションセンター(KDC)のコンポーネントを解決できません。
システム時間同期
正常に認証するには、各mongod } インスタンスとmongosインスタンスのシステム時間が、Kerberos インフラストラクチャ内の他のホストのシステム時間から 5 分以内である必要があります。
Kerberos 化された MongoDB 環境
ドライバー サポート
次の MongoDB ドライバーは Kerberos 認証をサポートしています。
を追加の MongoDB 認証メカニズムで使用する
MongoDB は他の認証メカニズムとともに Kerberos 認証の使用をサポートしていますが、必要な場合にのみ他のメカニズムを追加します。 詳細については、「 Linux で Kerberos 認証を使用してMongoDB を構成する 」および「 Windows を Kerberos 認証を使用して MongoDBを構成する 」のIncorporate Additional Authentication Mechanismsセクションを参照してください。
テストと検証
mongokerberosプログラムは、MongoDB で使用するためのプラットフォームの Kerberos 構成を確認し、MongoDB クライアントからの Kerberos 認証が期待どおりに機能することをテストするのに便利な方法を提供します。 詳しくは、 mongokerberosのドキュメントを参照してください。
mongokerberos は MongoDB Enterprise でのみ利用可能です。