Okta LDAP Interface によるユーザー認証と承認の構成
項目一覧
注意
MongoDB 8.0以降、 LDAP認証と認可は非推奨です。 この機能は利用可能であり、 MongoDB 8のサポート期間中に変更されずに動作し続けます。 LDAPは将来のメジャー リリースで削除される予定です。
詳しくは、「 LDAP 非推奨 」を参照してください。
注意
このガイドでは、Atlas が Okta からデータベースユーザー(Atlas ユーザーではない)の認証と認可を有効にする方法について説明します。 、サードパーティの LDAP プロバイダー。
LDAP 認証のみを有効にすることも、LDAP 認証と承認の両方を有効にすることもできます。
LDAP認証のみを有効にする場合は、Atlas に個々のユーザーを追加し、追加する各ユーザーにデータベース アクセス特権を割り当てます。
LDAP認証と認可を有効にする場合は、Atlas にユーザー グループを追加し、各グループにデータベース アクセス特権を割り当てます。 ユーザーは、属するLDAPグループからデータベース アクセス特権を継承します。
Atlas は以下をサポートします。
Okta Active Directory 同期からのデータベースユーザーの認証。
Okta からデータベースユーザーを認証します。
Okta グループでデータベースユーザーを認可する。
制限
LDAP統合を有効にするには、
M10
以上の Atlas クラスターを配置する必要があります。 LDAP統合は Atlas Enterprise の機能です。Atlas は、Okta Active Directory 同期グループでのデータベースユーザーの認証をサポートしていません。
Atlas では、データベース ユーザーシングル サインオン統合をサポートしていません。 Atlas 管理ウェブ インターフェイスのシングルサインオン統合の詳細については、「フェデレーション認証の構成 」を参照してください。
必要なアクセス権
LDAPユーザーまたはグループを管理するには、Atlas に対するOrganization Owner
またはProject Owner
アクセス権が必要です。
手順
LDAP 認証のための Okta の構成
次の手順では、Atlas での認証用に Okta を構成します。
Okta LDAP インターフェイスを設定します。
Okta LDAP インターフェイスの設定の詳細については、 Okta ドキュメント を参照してください。
<okta-instance-id>
に注目してください。 これは、構成プロセス中に複数の場所で指定する必要があります。インスタンス名は、Okta アカウントにサインインするために使用する URL にあります。
https://<okta-instance-id>.admin.okta.com
バインド ユーザーを作成します。
新しい Okta ユーザーを作成する Atlas バインド ユーザーとして を使用する。バインド ユーザーは、Atlas データベースに接続するときにアカウントをクエリし、データベース ユーザーの認証情報を認証するために使用する Okta ユーザーです。
重要
バインド ユーザーには自分のユーザー アカウントは使用 しない でください。
次のテンプレートを使用して、バインド ユーザーの完全な DN(Distinguished Name、識別名)を決定します。
uid=<bind-user-email>,dc=<okta-instance-id>,dc=okta,dc=com たとえば、
<bind-user-email>
がbind@example.com
で、<okta-instance-id>
がmdb-example
の場合、バインドユーザーの DN は次のようになります。uid=bind@example.com,ou=users,dc=mdb-example,dc=okta,dc=com
LDAP 認証のための Atlas の構成
次の手順により、Atlas は Okta LDAPからデータベースユーザーを認証できるようになります。
AtlasGoAdvancedAtlas で、プロジェクトの ページにGoします。
まだ表示されていない場合は、プロジェクトを含む組織をナビゲーション バーの Organizations メニューで選択します。
まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。
サイドバーで、 Security見出しの下のAdvancedをクリックします。
詳細ページが表示されます。
LDAP Authentication の横にあるボタンを On に切り替えます。
注意
この機能を有効にすると、追加コストが発生する可能性があります。 「高度なセキュリティ 」を参照してください。
AtlasGoDatabase AccessAtlas で、プロジェクトの ページにGoします。
まだ表示されていない場合は、プロジェクトを含む組織をナビゲーション バーの Organizations メニューで選択します。
まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。
サイドバーで、 Security見出しの下のDatabase Accessをクリックします。
[データベース アクセス ]ページが表示されます。
Atlas に LDAP ユーザーを追加します。
注意
LDAP 認可を有効にする場合は、この手順をスキップします。
Okta LDAPで管理されているユーザーを Atlas に追加します。
Add New Database User をクリックします。
[LDAP User] をクリックします。
次のいずれかを実行します。
User to DN Mappingを入力していない場合は、 LDAPユーザーの完全な DN を入力します。 このテンプレートに従います。
uid=<user-name>,ou=users,dc=<okta-instance-id>,dc=okta,dc=com たとえば、
<user-name>
がjane@example.com
で、<okta-instance-id>
がmdb-example
の場合、ユーザーの DN は次のようになります。uid=jane@example.com,ou=users,dc=mdb-example,dc=okta,dc=com User to DN Mappingを入力した場合は、マッピングに必要なユーザー名またはメールアドレスを入力します。
ユーザーに付与するデータベースアクセスレベルを選択します。
[Add User] をクリックします。
LDAP 認証のための Okta の構成
注意
LDAP 認可を有効にしない場合は、 このセクションをスキップし ます。
次の手順では、Okta LDAPデータベース アクセス グループに属するユーザーを認可するように Atlas を構成します。
重要
承認を有効にする前に、 LDAP による認証を有効にする必要があります。
LDAP 承認を有効にして構成すると、LDAP 認証のみで構成されているデータベース ユーザーはデータベースにアクセスできなくなります。
Okta データベース アクセス グループを作成します。
Atlas LDAP 認証では、 LDAP グループを使用して、ユーザーにデータベース アクションの実行が許可されているかどうかを判断します。
ユーザーに付与するアクセスのレベルごとに、個別の Okta グループを作成します。 たとえば、1 つのデータベースへの読み取りアクセス用に 1 つのグループを作成し、読み取りおよび書込みアクセス用のグループを作成するなどします。
Directoryをクリックし、次にGroupsをクリックして、Okta Groupsページに移動します。
[Add Group] をクリックします。
グループ名を入力します(例:
db-read
。[Add Group] をクリックします。
バインド ユーザーに特権を割り当てます。
バインド ユーザーには、特定の Okta グループに対してユーザーを認証し、LDAP 検索を実行するためのRead Only Administrator
特権が必要です。 バインド ユーザーRead Only Administrator
特権を割り当てるには、次の手順に従います。
Securityをクリックし、次にAdministratorsをクリックして、Okta Administratorsページに移動します。
[Add Administrator] をクリックします。
バインドユーザーを検索し、 Read Only Administratorロールを選択します。
[Add Administrator] をクリックします。
LDAP 認証のための Atlas の構成
注意
LDAP 認可を有効にしない場合は、 このセクションをスキップし ます。
次の手順では、Okta データベース アクセス グループを Atlas に追加し、Atlas でデータベースユーザーの認証を有効にします。
AtlasGoDatabase AccessAtlas で、プロジェクトの ページにGoします。
まだ表示されていない場合は、プロジェクトを含む組織をナビゲーション バーの Organizations メニューで選択します。
まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。
サイドバーで、 Security見出しの下のDatabase Accessをクリックします。
[データベース アクセス ]ページが表示されます。
データベース アクセス LDAP グループを Atlas に追加します。
作成した各 Okta データベース グループを Atlas に追加します。 追加したグループのノードには、グループに付与されたデータベースアクションを実行する権限が付与されます。
Add New Database User をクリックします。
[ LDAP Groupをクリックし、 User to DN Mappingを有効にした場合でも、データベースユーザーを含むグループの完全な DN を入力します。 このテンプレートに従います。
cn=<group-name>,ou=groups,dc=<okta-instance-id>,dc=okta,dc=com たとえば、
<group-name>
がdb-read
で、<okta-instance-id>
がmdb-example
の場合、バインドユーザーの DN は次のようになります。cn=db-read,ou=groups,dc=mdb-example,dc=okta,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を使用できます。
ou=groups,dc=<okta-instance-id>,dc=okta,dc=com?dn?sub?(&(objectClass=groupofUniqueNames)(uniqueMember={USER}))
注意
他のクエリ テンプレートも機能する場合があります。 デフォルトのテンプレート{USER}?memberOf?base
を使用すると、検索時間が長くなる可能性があります。
を使用してクラスターに接続する mongosh
次の手順では、 LDAP 認証(および有効になっている場合は LDAP 承認)が正しく構成されていることを確認します。
注意
LDAP認証が有効になっている場合、データベースユーザーはクライアントの接続文字列内の次のパラメーターを上書きする必要があります。
authSource
でなければなりません$external
authenticationMechanism
でなければなりませんPLAIN
AtlasGoClustersAtlas で、プロジェクトの ページにGoします。
まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー
まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。
まだ表示されていない場合は、サイドバーの [Clusters] をクリックします。
[ Clusters (クラスター) ] ページが表示されます。
Atlas に追加したユーザー認証情報を使用してクラスターに接続します。
mongosh
を使用してクラスターに接続します。 接続文字列をコピーする方法は、次のとおりです。
[Connect] をクリックします。
[ LDAPをクリックし、 Copyをクリックします。
ユーザー DN とパスワードを含む string を貼り付けて編集します。
注意
ユーザーから DN へのマッピングが有効になっていない場合は、ユーザーの完全な DN を使用してクラスターに接続します。
LDAP 接続の問題のトラブルシューティング
注意
Okta では、バインド ユーザーは LDAP 検索を実行するためにRead Only Administrator
特権を持っている必要があります。 ldapsearch
を実行する前に、バインド ユーザーにこれらの特権があることを確認してください。
ldapsearch
を使用して、Atlas を構成したクエリ テンプレートが期待どおりにユーザー DN を返すかどうかを判断します。LDAP 認証が機能しても LDAP 承認が機能しない場合、クエリ テンプレートが正しいユーザー DN を返さない可能性があります。
次のldapsearch
テンプレートを使用します。
ldapsearch -H 'ldaps://<okta-instance-id>.ldap.okta.com' -D "<bind-user-dn>" -w "<bind-user-pwd>" -b 'ou=groups,dc=<okta-instance-id>,dc=okta,dc=com' '(&(objectClass=groupofUniqueNames)(uniqueMember=<bind-user-dn or group-dn>))
たとえば、 bind-user-dn
がuid=jane@example.com,ou=users,dc=mdb-example,dc=okta,dc=com
で、 <okta-instance-id>
がmdb-example
の場合は、次のコマンドを使用します。
ldapsearch -H 'ldaps://mdb-example.ldap.okta.com' -D "uid=jane@example.com,dc=mdb-example,dc=okta,dc=com" -w "REDACTED" -b 'ou=groups,dc=mdb-example,dc=okta,dc=com' '(&(objectClass=groupofUniqueNames)(uniqueMember=uid=jane@example.com,ou=users,dc=mdb-example,dc=okta,dc=com))'
注意
他のクエリ テンプレートも機能する場合があります。 デフォルトのテンプレート{USER}?memberOf?base
を使用すると、検索時間が長くなる可能性があります。