このガイドでは、Okta を IdP として使用して Workforce IdP を構成する方法について説明します。
Okta と Atlas を統合すると、ワークフォースは Okta の認証情報を使用して、 OIDC認証付きで Atlas クラスターにアクセスできます。
必要なアクセス権
フェデレーティッド認証を管理するには、インスタンスにフェデレーション設定を委任している 1 つ以上の組織に対するOrganization Ownerアクセス権が必要です。
前提条件
Okta を Atlas のIdPとして使用するには、次のものが必要です。
ルーティング可能なカスタムのドメイン名。
手順
以下の手順全体を通して、 Atlas フェデレーション管理コンソールには 1 つのブラウザ タブが開き、Okta アカウントには 1 つのタブが開いていると便利です。
ID プロバイダーとしての Okta の構成
Okta アカウントを使用して、Okta を OIDC IdP として構成します。
OIDCアプリケーションをOkta に登録するには、次の手順に従います。
New Native App Integration を設定します。
アプリ統合を作成すると、自動的に New Native App Integration 画面にリダイレクトされます。
App integration nameフィールドに、アプリケーションの名前 を入力します。
Grant typeフィールドで、付与タイプを選択します。
次の付与タイプを有効にします。
Authorization Code or Device Authorization
(任意) Refresh Token
更新トークンを有効にすると、ユーザー エクスペリエンスが向上します。 更新トークンが有効になっていない場合、ユーザーはアクセス トークンの有効期限が切れるとIdPで再認証する必要があります。
Sign-in redirect URIs セクションでURLを入力します。
次のURLを入力します:
http://localhost:27097/redirect。Assignments セクションで、Controlled access フィールドと Enable immediate access フィールドを構成します。
Controlled accessフィールドに Allow everyone in your organization to access を選択します。
Enable immediate accessフィールドで、Enable immediate access with Federation Broker Mode がオンになっていることを確認します。
[Save] をクリックします。
Groupsクレームを追加しました。
認可サーバー画面で、[Claims]タブにGo、[Add Claim をクリックします。
次の構成情報で Groups クレームを構成します。
フィールド値Name
クレームの名前を入力します。
Include in token type
[] ドロップダウンをクリックし、[]Access Token を選択します。
Value type
[] ドロップダウンをクリックし、[]Groups を選択します。
Filter
[] ドロップダウンをクリックし、[]Matches regex を選択します。ドロップダウンの横に、 Atlas認可に使用されるグループのみに一致する正規式を入力します。例、Atlas認可グループが共通の命名プレフィックスを使用する場合は、「 」と入力し、
^<mongodb-atlas-group-prefix>.*<mongodb-atlas-group-prefix>は選択したプレフィックスです。Disable claim
チェックしないでください。
Include in
Any scope を選択します。
[Create] をクリックします。
重要
フィルター値として .* を使用しないでください。 .*式は、 Atlas認可とは無関係なグループを含む、ユーザーに割り当てられたすべてのグループと一致します。大きなフィルターを使用すると、アクセス トークンのサイズが増加するため、トークンが preAuthMaximumMessageSizeBytes の制限(デフォルトでは 16 キー B)を超えると認証が失敗する可能性があります。
トークン サイズを縮小するには、Atlas認可グループ専用の命名規則を作成し、その規則でフィルタリングします。
配置で大規模なグループpreAuthMaximumMessageSizeBytes クレームが意図的に必要な場合は、クラスターの パラメータを増やすことができます。ただし、この制限を引き上げるとリソースとセキュリティに影響が生じるため、不必要に拡大するクレームの回避策としては使用しないでください。
詳細については、「 クレームの作成 」を参照してください。
アクセス ポリシーを作成します。
認可サーバー画面で、[Access Policies]タブにGo、[Add Policy をクリックします。
Nameフィールドにポリシー名を入力します。
Descriptionフィールドにポリシーの説明を入力します。
Assign toフィールドでAll clients [] を選択します。
[Create Policy] をクリックします。
詳細については、「 アクセス ポリシーの作成 」を参照してください。
アクセス ポリシーのルールを作成します。
Access Policiesタブの下にある Add Rule をクリックします。
Rule Nameフィールドにアクセス ポリシーの名前を入力します。
IF Grant Type is の場合は、付与タイプを選択します。
権限のタイプを設定するときは、クライアントの動作に基づいて適切なオプションを選択します。
クライアントが自分自身に代わって動作している場合は、Client Credentials を選択します。
クライアントがユーザーの代わりに動作している場合は、以下を選択します。
Authorization Code
Device Authorization
組織のセキュリティ ポリシーに基づいてルール構成を追加します。
Okta ルールの構成例:
フィールド値AND user is
Any user assigned to the app を選択します。
AND Scopes requested
Any scopes を選択します。
THEN Use this inline hook
なし(無効)
AND Access token lifetime is
1 Hours
AND Refresh token lifetime is
2 つ目のドロップダウンをクリックし、[]Unlimited を選択します。
but will expire if not used every
7 daysと入力します。
[Create Rule] をクリックします。
詳しくは、各アクセス ポリシーのルールの作成 を参照してください。
グループを作成します。
左側のナビゲーション ペインで、Directory → Groups にGo、Add Group をクリックします。
Nameフィールドに、ディレクトリ
OIDCと名付けます。(任意) Descriptionフィールドにルールの説明を入力します。
[Save] をクリックします。
詳細については、「 グループの作成 」を参照してください。
Okta のドキュメントに従って、ユーザーをグループに手動で割り当てます。
組織にユーザーを追加します 。
左側のナビゲーション ペインで、Directory → People にGo、Add Person をクリックします。
対応するフィールドに次の値を入力して、ユーザーの詳細を提供します。
フィールド値User type
User を選択します。
First name
必要に応じて名前を指定します。
Last name
必要に応じて名前を指定します。
Username
ユーザー名としてメールを入力します。
Primary email
メールを入力します。 メールはUsernameフィールドに使用するメールと同じである必要があります。
Secondary email
任意。
Groups
OIDCと入力します。
Activation
Activate Now を選択し、I will set password を確認します。
Password
パスワードを入力します。
User must change password on first login
選択する Optional
[Save] をクリックします。
詳細については、「 ユーザーの手動追加 」を参照してください。
Atlas で Workforce IdP を構成する
注意
前提条件
この手順では、 アクセス権が必要で、 IdPOrganization Owner で OIDCアプリケーションがすでに作成されていることを前提としています。 IdP を構成する方法については、「 ID プロバイダーとして Okta を構成する 」を参照してください。
Atlas でワークフォース IdP を設定するには、次の手順に従います。
In Atlas で、組織の Federation Management コンソールに移動します。
まだ表示されていない場合は、以下から目的の組織を選択しますナビゲーション バーのOrganizationsメニュー
サイドバーで、 Identity & Access見出しの下のFederationをクリックします。
[Open Federation Management App] をクリックします。
フェデレーション ページが表示されます。
次のワークフォース IdP のプロトコル設定を入力します。
設定 | 必要性 | 値 |
|---|---|---|
Configuration Name | 必須 | この構成を識別する、人間が判読できるラベル。 このラベルは、Atlas ユーザーに表示されます。 |
Configuration Description | 任意 | この構成を説明する、人間が判読できるラベル。 |
Issuer URI | 必須 | 登録された IdPアプリケーションによって提供される発行者値。この URI を使用して、 MongoDB は エンドポイントで利用可能なはずの OpenID |
Client ID | 必須 | 登録されたアプリケーションの一意の識別子です。 外部 IdP に登録したアプリの |
Audience | 必須 | 外部 ID プロバイダーがトークンを発行するエンティティ。 外部 IdP に登録したアプリの |
Requested Scopes | 任意 | ユーザーに認可エンドポイントからのデータをリクエストする権限を付与するトークン。 リフレッシュ トークンをサポートする場合は、このフィールドには値 追加する追加のスコープごとに、[ Add more scopes ] をクリックします。 |
Authorization Type | 必須 | IdP Group Membershipユーザー グループ メンバーシップに基づいて認可を付与するにはUser ID を選択し、個々のユーザーに認可を付与するには を選択します。 |
Customize Groups Claim | 必須 | プリンシパルの IdP ユーザー グループ メンバーシップ情報を含む要求の識別子。 IdP が別のクレームを使用している場合を除き、カスタム クレームが必要な場合を除き、デフォルト値を受け入れます。このフィールドは、Group Membership を選択した場合にのみ必要です。 デフォルト: |
Customize User Claim | 必須 | ユーザー プリンシパル ID を含む要求の識別子。 IdPが別の要求を使用しない限り、デフォルト値を受け入れます。 デフォルト: |
(任意)ドメインを Workforce IdP に関連付けます。
注意
この手順は、異なるドメインを持つ同じ組織に複数の Workforce IdP を接続する必要がある場合にのみ必要です。Atlas は、組織に接続された最大 2 つの Workforce IdP をサポートしています。1 つの OIDC IdP (データベースアクセス用)と 1 つの SAML IdP (UIアクセス用)。
Workforce IdP カードで、 Associate Domainsをクリックします。
Associate Domains with Identity Providerモーダルで、1 つ以上のドメインを選択します。
[Submit] をクリックします。
強制認証を使用したデータベースユーザーの追加
Atlas で、プロジェクトの Database & Network Access ページに移動します。
まだ表示されていない場合は、プロジェクトを含む組織をナビゲーション バーの Organizations メニューで選択します。
まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。
サイドバーで、 Security見出しの下のDatabase & Network Accessをクリックします。
データベース &上記の手順を完了すると、[ ネットワーク アクセス ] ページが表示されます。
Add New Database User or Group ダイアログ ボックスを開きます。
Add New Database User or Group をクリックします。
注意
Workforce IdP を Atlas に適用するまで、このボタンは Add New Database User と表示します。
Federated Auth を選択します。
Authentication Methodセクションで、[Federated Auth] を選択します。
注意
組織で Workforce IdP を有効にするまで、このボックスを選択することはできません。
ユーザーまたはグループの特権を割り当てます。
新しいユーザーまたはグループに特権を割り当てるには、次のタスクの 1 つ以上を実行します。
Built-in Role ドロップダウンメニューから組み込みロールを選択します。
Atlas UI では、データベースグループごとに 1 つの組み込みロールを選択できます。
デフォルト オプションを削除する場合は、 Add Built-in Roleをクリックして新しい組み込みロールを選択できます。
カスタムロール が定義されている場合は、 Custom Rolesセクションを展開し、 Custom Rolesドロップダウンメニューから 1 つ以上のロールを選択できます。
さらにカスタムロールを追加するには、 Add Custom Roleをクリックします。
プロジェクトのカスタムロールを表示するには、 Custom Rolesリンクをクリックします。
[ Specific Privilegesセクションを展開し、 Specific Privilegesドロップダウン メニューから 1 つ以上の 特権 を選択します。
さらに特権を追加するには、 Add Specific Privilegeをクリックします。 こうすることで、個々のデータベースとコレクションに対するグループ固有の特権が割り当てられます。
適用されたロールまたは特権を削除します。
- をクリックしますの横にあるDelete
- 削除するロールまたは特権。
注意
Atlas はオプションを 1 つだけ選択した場合は、 Built-in Role 、 Custom Role 、またはSpecific Privilege選択の横にDeleteアイコン。 選択したロールまたは特権は、別のロールまたは特権を適用すると、削除できます。
Atlas では、組み込みロール、複数のカスタムロール、および複数の特定の特権をデータベースグループに適用できます。
認可の詳細については、MongoDB マニュアルの「 ロールベースのアクセス制御」と「 組み込みロール 」を参照してください。
ユーザーまたはグループがアクセスできるプロジェクト内のリソースを指定します。
デフォルトでは、グループはプロジェクト内のすべてのクラスターと フェデレーティッドデータベースインスタンス にアクセスできます。 特定のクラスターとフェデレーティッドデータベースインスタンスへのアクセスを制限するには、次の手順に従います。
Restrict Access to Specific Clusters/Federated Database Instances を On に切り替えます。
Grant Access Toリストからグループにアクセスを許可するクラスターとフェデレーティッドデータベースインスタンスを選択します。
一時ユーザーまたはグループとして保存します。
Temporary UserまたはTemporary GroupをOnに切り替え、Atlas がユーザーまたはグループを削除できるようになるまでの時間を [ Temporary User DurationまたはTemporary Group Durationドロップダウンから選択します。 グループが存在する期間として、次のいずれかから選択できます。
6 時間
1 日
1 週間
[ Database Usersタブには、Atlas が一時ユーザーまたはグループを削除するまでの残り時間が表示されます。 Atlas がユーザーまたはグループを削除すると、一時ユーザーのまたはグループの認証情報を使用するクライアントやアプリケーションは、クラスターにアクセスできなくなります。
Workforce IdP を使用したクライアントのMongoDBへの接続
次は、 Workforce IdP認証を使用してクライアントをMongoDBに接続する方法を示しています。
Compass v1.38 +
MongoDB Shell v2.1.4+
注意
Device Authorization Flow を構成した場合は、mongosh で接続するときに --oidcFlows=device-auth フラグを渡す必要があります。(例: )。
mongosh "<connection-string>" \ --authenticationMechanism MONGODB-OIDC \ --oidcFlows=device-auth