自己管理型配置での Kerberos 認証
Overview
MongoDB Enterprise は、 mongod
およびmongos
インスタンスへの MongoDB クライアントの Kerberos 認証をサポートします。 Kerberos は、大規模なクライアント/サーバー システム向けの業界標準の認証プロトコルです。 Kerberos を使用すると、MongoDB とアプリケーションは既存の認証インフラストラクチャとプロセスを活用できます。 MongoDB Enterprise は MIT 実装 のみをサポートしています Kerberos の
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 ユーザー)でクライアント セッションと因果整合性の保証を使用するには、ユーザー名を 10k バイトより大きくすることはできません。
MongoDB にユーザーを追加する方法と、そのユーザーとして認証する方法の例については、「 Linux で Kerberos 認証を使用して自己管理型 MongoDB を構成する 」および「 Windows で Kerberos 認証を使用して自己管理型 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
が必要です。
に別の値を指定するには、<service>
serviceName
mongod
またはmongos
(またはmongod.exe
またはmongos.exe
)の起動時に使用します。mongosh
または他のクライアントは、 serviceName
を使用して別のサービスプリンシパル名を指定することもできます。
サービスプリンシパル名は、サービスプリンシパル名の完全修飾ドメイン名(FQDN)部分を使用して、ネットワーク経由でアクセスできる必要があります。
デフォルトでは、Kerberos は DNS を使用してホストを解決する前に、 /etc/krb5.conf
ファイルを使用してホストを識別しようとします。
Windows で MongoDB をサービスとして実行している場合は、「 MongoDB Windows サービスへのサービスプリンシパル名の割り当て 」を参照してください。
Linux Keytab Files
Linux システムでは、サービス プリンシパルの Kerberos 認証キーをキータブファイルに保存できます。 Linux 上で実行中の各 Kerberos 化されたmongod
およびmongos
インスタンスは、サービス プリンシパルのキーを含むキータブ ファイルにアクセスできる必要があります。
キータブ ファイルを安全に保つには、 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 でのみ利用可能です。