Microsoft Entra ID ドメイン サービスを使用したユーザー認証と承認の構成
項目一覧
注意
MongoDB 8.0 以降、LDAP による認証と承認は非推奨です。この機能は利用可能であり、MongoDB 8 の有効期間を通じて変更なく動作し続けます。LDAP は今後のメジャーリリースで削除される予定です。
詳しくは、「 LDAP 非推奨 」を参照してください。
注意
このガイドでは、Atlas で Microsoft Entra ID Domain Services のデータベースユーザー(Atlas ユーザーではない)の認証と認可を有効にする方法について説明します。 、サードパーティの LDAP プロバイダー。
LDAP 認証のみを有効にすることも、LDAP 認証と承認の両方を有効にすることもできます。
LDAP認証のみを有効にする場合は、Atlas に個々のユーザーを追加し、追加する各ユーザーにデータベース アクセス特権を割り当てます。
LDAP認証と認可を有効にする場合は、Atlas にユーザー グループを追加し、各グループにデータベース アクセス特権を割り当てます。 ユーザーは、属するLDAPグループからデータベース アクセス特権を継承します。
Atlas は、以下からのデータベースユーザーの認証と承認をサポートしています Microsoft Entra ID ドメイン サービス。
制限
LDAP統合を有効にするには、
M10
以上の Atlas クラスターを配置する必要があります。 LDAP統合は Atlas Enterprise の機能です。Atlas では、データベース ユーザーシングル サインオン統合をサポートしていません。 Atlas 管理ウェブ インターフェイスのシングルサインオン統合の詳細については、「フェデレーション認証の構成 」を参照してください。
必要なアクセス権
LDAPユーザーまたはグループを管理するには、Atlas に対するOrganization Owner
またはProject Owner
アクセス権が必要です。
前提条件
Microsoft Entra ID ドメイン サービスLDAPを Atlas と統合するには、次のものが必要です。
Azureのサブスクライブ。 サブスクリプションを申し込むには、 Microsoft Azure portal にアクセスしてください。
Contributor
LDAP 統合に必要なリソースを作成するには、 Azure サブスクリプションの特権以上が必要です。サブスクリプションに関連付けられた Microsoft Entra ID のテナント。 Microsoft Entra ID テナントを設定する方法の詳細については、「 Microsoft Entra ID ドキュメント 」を参照してください。
Global Administrator
権限(Microsoft Entra ID テナント)で、Microsoft Entra ID Domain Services を有効にするルーティング可能なカスタムのドメイン名。
手順
ドメイン用の Microsoft Entra ID ドメイン サービスの構成
安全な LDAP の SSL 証明書を取得します。
Microsoft Entra ID ドメイン サービスは SSL 証明書を使用して LDAP を保護します。 証明書は、 Azure ドキュメントに記載されている要件に準拠している必要があります。
証明書を取得するには、次のいずれかを行います。
組織が使用する公開認証局またはエンタープライズ認証局 (CA) から 1 つを取得します。
安全な LDAP が Microsoft Entra ID ドメイン サービスで正しく動作するようにするには、ワイルドカード証明書を取得する必要があります。
証明書のサブジェクト名は、Microsoft Entra ID ドメイン サービスの構成時に使用した
<managed-domain>
と一致する必要があります。例
*.aadds.example.com
自己署名証明書を生成します。 自己署名証明書は本番環境には推奨されません。
テスト 目的で MacOS または Linux システムで自己署名証明書を生成するには、次の手順に従います。
注意
macOS Catalina を使用している場合は、 openssl
の最新バージョンをインストールしてください。 Homebrew を使用して をインストールするには、次のコマンドを実行します。
brew install openssl
openssl
を使用して秘密キーを生成します。 次のコマンドは、<your-key-name>.key
という名前の秘密キーファイルを生成します。openssl genrsa -out <your-key-name>.key 2048 次の構成ファイルのテンプレートを編集します。 組織に関連する値で、
[dn-param]
セクションの属性を更新します。 サブジェクト名(CN
)が次のテンプレートと一致していることを確認します。*.<managed-domain>
例
*.aadds.example.com
openssl x509 extfile params extensions = extend [req] # openssl req params prompt = no distinguished_name = dn-param [dn-param] # DN fields C = US ST = NY L = New York O = MongoDB OU = Atlas CN = *.aadds.example.com [extend] # openssl extensions subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always keyUsage = digitalSignature,keyEncipherment,keyCertSign extendedKeyUsage=serverAuth,clientAuth ファイルを
<your-config-name>.cfg
として保存します。作成したキーと構成ファイルを使用して、証明書署名リクエストを生成します。 次のコマンドは、
<your-csr-name>.csr
という名前の証明書署名リクエストを生成します。openssl req -new -key <your-key-name>.key \ -out <your-csr-name>.csr -config <your-config-name>.cfg \ -extensions extend 作成したキー、構成、および証明書署名リクエスト ファイルを使用して、 自己署名証明書 を生成します。 次のコマンドは、
<your-cert-name>.crt
という名前の自己署名証明書ファイルを生成します。openssl x509 -req -sha256 -days 365 -in <your-csr-name>.csr \ -signkey <your-key-name>.key -out <your-cert-name>.crt \ -extfile <your-config-name>.cfg
テスト目的 で Windows システム上で自己署名証明書を生成する方法について詳しくは、 Azure のドキュメント を参照してください。
秘密キーを含む SSL 証明書を取得します。
Microsoft Entra ID ドメイン サービスは秘密キーを使用して安全な LDAP トラフィックを復号化します。 秘密キーを含む証明書はPKCS#12
形式を使用し、 .pfx
ファイル形式を使用します。 パブリック インターネット経由で送信された安全な LDAP トラフィックを復号化するには、この形式の証明書を Microsoft Entra ID ドメイン サービスにアップロードする必要があります。
MacOS または Linux システムで.pfx
証明書を生成するには:
公開鍵と SSL 証明書をローカル マシンに保存します。
注意
証明書には
PEM
形式を使用する必要があります。証明書に秘密キーが含まれていない場合は、秘密キーを
.key
形式ファイルに保存できます。秘密キーと
openssl
証明書を使用して.pfx
証明書を生成します。 次のコマンドは、<your-cert-name>.pfx
という名前の.pfx
証明書ファイルを生成します。openssl pkcs12 -export -out <your-cert-name>.pfx \ -inkey <your-key-name>.key -in <your-cert-name>.crt プロンプトが表示されたら、ファイルを暗号化するためのパスワードを入力して確認します。 このパスワードは、
.pfx
証明書を Microsoft Entra ID ドメイン サービスにアップロードするときに、秘密キーを復号化するために入力します。
.pfx
Windows システム上で 証明書を生成する方法について詳しくは、 Azure のドキュメント を参照してください。
Microsoft Entra ID ドメイン サービスで安全な LDAP を有効にします。
Microsoft Entra ID ドメイン サービスで安全な LDAP を有効にするには、 Azure のドキュメントを参照してください。
DNS プロバイダーを設定します。
Atlas とデータベース ノードが Microsoft Entra ID Domain Services が管理するカスタム ドメイン内の LDAP サーバーに接続できるように DNS プロバイダーを構成する必要があります。
<managed-domain>
のサブドメインを Microsoft Entra ID Domain Services LDAP サービスが使用する外部 IP アドレスに解決する LDAP トラフィックのホスト レコードを作成します。
LDAP IP アドレス | LDAP トラフィックのサブドメイン |
---|---|
|
|
Microsoft Entra ID Domain Services LDAP サービスが使用する外部 IP アドレスを見つけるには、 Azure のドキュメントを参照してください。
カスタム ドメインの Microsoft Entra ID への追加
カスタム ドメイン名を Microsoft Entra ID に追加して、追加したドメインに属するユーザーを作成します。ドメインを追加したら、TXT
レコードでお使いの DNS プロバイダーに Microsoft Entra ID の DNS 情報を追加して、構成を確認します。
カスタム ドメインの Microsoft Entra ID への追加方法について詳しくは、 Azure のドキュメント を参照してください。
インバウンド LDAP トラフィック用に Microsoft Entra ID ドメイン サービスを構成します。
Microsoft Entra ID ドメイン サービスを Atlas の LDAP プロバイダーとして使用するには、パブリック インターネットからポート636
へのすべてのポート経由のすべてのトラフィックを許可する必要があります。
ポート でインバウンド LDAP トラフィックを許可するインバウンド セキュリティ636
ルールを追加する方法について詳しくは、 Azure のドキュメント を参照してください。
バインド ユーザーを作成します。
バインド ユーザーを作成します。 バインド ユーザーは 、Atlas データベースに接続するときにデータベースユーザーの認証情報を認証するために使用する Microsoft Entra ID ユーザーです。 バインド ユーザーは、Microsoft Entra ID に追加したカスタム ドメインに属している必要があります。
Microsoft Entra ID ユーザーを作成する方法について詳しくは、 Azure のドキュメント を参照してください。
Microsoft Entra ID ドメイン サービスのバインド ユーザー アカウントを有効にします。
バインド ユーザーが Microsoft Entra ID ドメイン サービスを使用する前に、Kerberos および NTM 認証用のバインド ユーザーのパスワード ハッシュを生成する必要があります。 手順は、Microsoft Entra ID ユーザー アカウントの種類によって異なります。
ユーザーのパスワード ハッシュを生成する方法については、 Azure のドキュメントを参照してください。
バインド ユーザー アカウントにディレクトリ読み取りロールを割り当てます。
Microsoft Entra ID をクエリするには、バインド ユーザーは ディレクトリ リーダー によって付与される権限を持っている必要があります。 のロール。
バインド ユーザーにディレクトリ読み取りロールを割り当てる方法について詳しくは、 Azure のドキュメント を参照してください。
Microsoft Entra ID ユーザーの作成
ユーザがまだ存在しない場合は、Microsoft Entra ID ドメイン サービスでデータベース アクセスを許可するユーザーを作成します。 ユーザーは、Microsoft Entra ID に追加したカスタム ドメインに属している必要があります。
Microsoft Entra ID ユーザーを作成する方法について詳しくは、 Azure のドキュメント を参照してください。
LDAP 認証のための Atlas の構成
次の手順により、Atlas は Microsoft Entra ID Domain Services LDAPからデータベースユーザーを認証できるようになります。
AtlasGoAdvancedAtlas で、プロジェクトの ページにGoします。
まだ表示されていない場合は、プロジェクトを含む組織をナビゲーション バーの Organizations メニューで選択します。
まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。
サイドバーで、 Security見出しの下のAdvancedをクリックします。
詳細ページが表示されます。
LDAP Authentication の横にあるボタンを On に切り替えます。
注意
この機能を有効にすると、追加コストが発生する可能性があります。 「高度なセキュリティ 」を参照してください。
DN マッピングにユーザーを追加する。
次の例のようなユーザーと DN のマッピングを追加して、クライアントが Atlas データベースに接続するときに完全な DN の代わりにユーザー名を提供できるようにします。
[ { "match":"(.+)", "substitution":"CN={0},OU=AADDC Users,DC=<managed-domain>,DC=com" } ]
注意
Microsoft Entra ID ドメイン サービスの場合、識別名の属性は大文字である必要があります。
<managed-domain>
が 1 つ以上のサブドメインで構成されている場合は、それぞれの識別名にDC
(domainComponent)属性を追加する必要があります。
例
<managed-domain>
がaadds.example.com
の場合、ドメイン コンポーネントは次のようになります。
DC=aadds,DC=example,DC=com
AtlasGoDatabase AccessAtlas で、プロジェクトの ページにGoします。
まだ表示されていない場合は、プロジェクトを含む組織をナビゲーション バーの Organizations メニューで選択します。
まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。
サイドバーで、 Security見出しの下のDatabase Accessをクリックします。
[データベース アクセス ]ページが表示されます。
Atlas に LDAP ユーザーを追加します。
注意
LDAP 認可を有効にする場合は、この手順をスキップします。
Azure ADで管理されているユーザーを Atlas に追加します。
Add New Database User をクリックします。
[LDAP User] をクリックします。
次のいずれかを実行します。
User to DN Mappingを入力していない場合は、 LDAPユーザーの完全な DN を入力します。 このテンプレートに従います。
CN=<user-name>,OU=AADDC Users,DC=<managed>,DC=<domain>,DC=com たとえば、
<user-name>
がJane Doe
で、<managed-domain>
がaadds.example.com
の場合、ユーザーの DN は次のようになります。CN=Jane Doe,ou=AADDC Users,DC=aadds,DC=example,DC=com User to DN Mappingを入力した場合は、マッピングに必要なユーザー名を入力します。
ユーザーに付与するデータベースアクセスレベルを選択します。
[Add User] をクリックします。
データベース アクセス LDAP グループを Atlas に追加する
注意
LDAP 認可を有効にしない場合は、 このセクションをスキップし ます。
重要
承認を有効にする前に、 LDAP による認証を有効にする必要があります。
LDAP 承認を有効にして構成すると、LDAP 認証のみで構成されているデータベース ユーザーはデータベースにアクセスできなくなります。
Atlas LDAP 認証では、 LDAP グループを使用して、ユーザーにデータベース アクションの実行が許可されているかどうかを判断します。
ユーザーに付与するアクセス レベルごとに、個別の Microsoft Entra ID グループを作成します。 たとえば、1 つのデータベースへの読み取りアクセス用に 1 つのグループを作成し、読み取りおよび書込みアクセス用のグループを作成するなどします。 各ユーザーが必要とするアクセスのレベルに基づいて、ユーザーをグループに割り当てます。
Microsoft Entra ID データベースアクセス グループを作成し、ユーザーに割り当てる方法について詳しくは、 Azure のドキュメント を参照してください。
LDAP 認証のための Atlas の構成
注意
LDAP 認可を有効にしない場合は、 このセクションをスキップし ます。
次の手順では、Microsoft Entra ID Domain Services データベース アクセス グループを Atlas に追加し、Atlas でデータベース ユーザー認証を有効にします。
AtlasGoDatabase AccessAtlas で、プロジェクトの ページにGoします。
まだ表示されていない場合は、プロジェクトを含む組織をナビゲーション バーの Organizations メニューで選択します。
まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。
サイドバーで、 Security見出しの下のDatabase Accessをクリックします。
[データベース アクセス ]ページが表示されます。
データベース アクセス LDAP グループを Atlas に追加します。
作成した各 Azure データベース グループを Atlas に追加します。 追加したグループのノードには、グループに付与されたデータベースアクションを実行する権限が付与されます。
Add New Database User をクリックします。
[ LDAP Groupをクリックし、 User to DN Mappingを有効にした場合でも、データベースユーザーを含むグループの完全な DN を入力します。 このテンプレートに従います。
CN=<group-name>,OU=AADDC Users,DC=<managed-domain>,DC=com 注意
Microsoft Entra ID ドメイン サービスの場合、識別名の属性は大文字である必要があります。
<managed-domain>
が 1 つ以上のサブドメインで構成されている場合は、それぞれの識別名にDC
(domainComponent)属性を追加する必要があります。例
<managed-domain>
がaadds.example.com
の場合、ドメイン コンポーネントは次のようになります。DC=aadds,DC=example,DC=com
たとえば、
<group-name>
がAtlas read only
で、<managed-domain>
がaadds.example.com
の場合、ユーザーの DN は次のようになります。CN=Atlas read only,OU=AADDC Users,DC=aadds,DC=example,DC=com
このグループ内のユーザーに付与するデータベース アクセス レベルを選択します。
[Add User] をクリックします。
AtlasGoAdvancedAtlas で、プロジェクトの ページにGoします。
まだ表示されていない場合は、プロジェクトを含む組織をナビゲーション バーの Organizations メニューで選択します。
まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。
サイドバーで、 Security見出しの下のAdvancedをクリックします。
詳細ページが表示されます。
クエリ テンプレートを Query Template に入力します。
ユーザーがアクションを実行しようとすると、Atlas はLDAP クエリ テンプレートを実行して、認証されたユーザーが属する LDAP グループを取得します。 Atlas では、アクションの実行が許可されているグループが少なくとも 1 つクエリで返される場合、アクションは許可されます。 クエリがアクションを実行する権限を持つグループを返さない場合、Atlas ではアクションは許可されません。
Atlas はクエリを実行するときに、 {USER}
プレースホルダー内の認証されたユーザー名を置き換えます。 クエリは、 Server Hostnameで指定されたホストに対して相対的です。
クエリの形式は RFC4515 に準拠する必要があります。
ユーザーがメンバーであるグループを識別する場合は、デフォルトのQuery Templateを使用できます。
{USER}?memberOf?base
注意
他のクエリ テンプレートも機能する場合があります。
を使用してクラスターに接続する mongosh
次の手順では、 LDAP 認証(および有効になっている場合は LDAP 承認)が正しく構成されていることを確認します。
注意
LDAP認証が有効になっている場合、データベースユーザーはクライアントの接続文字列内の次のパラメーターを上書きする必要があります。
authSource
でなければなりません$external
authenticationMechanism
でなければなりませんPLAIN
AtlasGoClustersAtlas で、プロジェクトの ページにGoします。
まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー
まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。
まだ表示されていない場合は、サイドバーの [Clusters] をクリックします。
[ Clusters (クラスター) ] ページが表示されます。
mongosh
を使用して、Atlas に追加したユーザー認証情報でクラスターに接続します。
接続文字列をコピーする方法は、次のとおりです。
[Connect] をクリックします。
[ LDAPをクリックし、 Copyをクリックします。
ユーザー DN とパスワードを含む string を貼り付けて編集します。
注意
ユーザーから DN へのマッピングが有効になっていない場合は、ユーザーの完全な DN を使用してクラスターに接続します。
注意
Microsoft Entra ID ドメイン サービスの場合、識別名の属性は大文字である必要があります。
<managed-domain>
が 1 つ以上のサブドメインで構成されている場合は、それぞれの識別名にDC
(domainComponent)属性を追加する必要があります。
例
<managed-domain>
がaadds.example.com
の場合、ドメイン コンポーネントは次のようになります。
DC=aadds,DC=example,DC=com
ユーザーまたはユーザーの完全な DN 内のグループ名内のエスケープ スペース。
--username CN=Jane\ Doe,OU=AADDC\ Users,DC=aadds,DC=example,DC=com
注意
ユーザーの完全な DN を使用している場合は、 AADDC Users
OU(組織単位)のみを含めます。 ユーザーがメンバーである他の Microsoft Entra ID グループを含めないでください。
LDAP 接続の問題のトラブルシューティング
注意
Microsoft Entra ID ドメイン サービスでは、LDAP 検索を実行するにはバインド ユーザーがMicrosoft Entra ID DC Administrators
グループのメンバーである必要があります。 ldapsearch
を実行する前に、バインド ユーザーにこれらの特権があることを確認してください。
ldapsearch
を使用して、Atlas を構成したクエリ テンプレートが期待どおりにユーザー DN を返すかどうかを判断します。LDAP 認証が機能しても LDAP 承認が機能しない場合、クエリ テンプレートが正しいユーザー DN を返さない可能性があります。
次のldapsearch
テンプレートを使用します。
ldapsearch -H 'ldaps://ldap.<managed-domain>.com' -b 'DC=<managed>,DC=<domain>,DC=com' -s sub -D 'CN=<bind-user-dn>,OU=AADDC Users,DC=<managed>,DC=<domain>,DC=com' -w '<REDACTED>' '(&(objectCategory=user)(memberOf=CN=<group-name>,OU=AADDC Users,DC=<managed-domain>,DC=com))'
注意
Microsoft Entra ID ドメイン サービスの場合、識別名の属性は大文字である必要があります。
<managed-domain>
が 1 つ以上のサブドメインで構成されている場合は、それぞれの識別名にDC
(domainComponent)属性を追加する必要があります。
例
<managed-domain>
がaadds.example.com
の場合、ドメイン コンポーネントは次のようになります。
DC=aadds,DC=example,DC=com
たとえば、 bind-user-dn
がCN=LDAP Bind User,OU=AADDC Users,DC=aadds,DC=example,DC=com
、 <managed-domain>
がaadds.example.com
、 group-name
がAtlas read only
である場合は、次のコマンドを使用します。
ldapsearch -H 'ldaps://ldap.aadds.example.com' -b 'DC=aadds,DC=example,DC=com' -s sub -D 'CN=LDAP Bind User,OU=AADDC Users,DC=aadds,DC=example,DC=com' -w '<REDACTED>' '(&(objectCategory=user)(memberOf=CN=Atlas read only,OU=AADDC Users,DC=aadds,DC=example,DC=com))'
注意
他のクエリ テンプレートも機能する場合があります。