メインコンテンツまでスキップ

アプリレベルのアクセス制御

アプリレベルのアクセス制御を利用すると、特定のアプリケーションにサインインできるユーザーを制限できます。Logto テナントに登録されているすべてのユーザーがすべてのアプリにアクセスできるのではなく、ユーザー、ユーザーロール、組織 (Organizations)、または組織ロールごとに各アプリケーションの許可ルールを作成できます。

アプリレベルのアクセス制御は、次のような場合に利用します:

  • 社内アプリを従業員や管理者のみに公開したい場合
  • Protected App を特定のユーザーグループのみに制限したい場合
  • 特定の顧客やパートナーだけが サードパーティ OIDC / OAuth アプリケーション にアクセスできるようにしたい場合
  • 新しいアプリケーションを全体公開する前にパイロットグループに展開したい場合

仕組み

アプリレベルのアクセス制御が無効な場合、Logto テナントに登録されているすべてのユーザーがそのアプリケーションにサインインできます。

有効にすると、ユーザーは少なくとも 1 つの設定済みルールに一致した場合のみアプリケーションにアクセスできます。ユーザーがいずれのルールにも一致しない場合、Logto はサインイン試行を拒否し、アプリケーションがトークンを受け取る前にアクセス拒否ページを表示します。

アプリレベルのアクセス制御は、認可 (Authorization) フローおよびトークンの更新時に評価されます。つまり:

  • アクセス権のないユーザーは、アプリケーションのサインインを完了する前にブロックされます。
  • 既存のアプリグラントは、リフレッシュトークンを使用して新しいトークンをリクエストする際に再度チェックされます。
  • ルールの更新は、ユーザーのグローバルな Logto セッションを変更することなく、今後の認可 (Authorization) およびトークン更新チェックに影響します。
注記:

アプリレベルのアクセス制御は ロールベースのアクセス制御 (RBAC) とは別物です。RBAC はアクセス トークン内の権限 (スコープ) を発行することで、認証 (Authentication) 後にユーザーが何をできるかを制御します。アプリレベルのアクセス制御は、ユーザーが特定のアプリケーションにそもそもアクセスできるかどうかを制御します。

ルールの種類

次の許可ルールを設定できます:

ルールの種類許可される内容
ユーザー特定のユーザーがアプリケーションにアクセスできます。
ユーザーロール選択したユーザーロールに割り当てられたユーザーがアプリケーションにアクセスできます。
組織 (Organizations)選択した組織 (Organizations) のすべての現在および将来のメンバーがアプリケーションにアクセスできます。
組織ロール選択した組織 (Organizations) 内で選択した組織ロールを持つメンバーがアプリケーションにアクセスできます。

ルールは加算式です。ユーザーは 1 つのルールに一致すればアプリケーションにアクセスできます。

たとえば、アプリケーションに「サポートチーム」ユーザーロールルールと「BigTree - 管理者」組織ロールルールの両方がある場合、ユーザーがサポートチームロールに割り当てられているか、BigTree 組織の管理者であればアプリケーションにアクセスできます。

アプリレベルのアクセス制御を設定する

  1. コンソール > アプリケーション に移動します。
  2. 制限したいアプリケーションを開きます。
  3. ルール タブに移動します。
  4. カスタム許可ルールルールを追加 をクリックします。
  5. ルールの種類を選択します:
    • ユーザー
    • ユーザーロール
    • 組織 (Organizations)
    • 組織ロール
  6. アプリケーションへのアクセスを許可するユーザー、ロール、組織 (Organizations)、または組織ロールを選択します。
  7. アクセス制御を有効化 をオンにします。
  8. 変更を保存 をクリックします。
important:

アクセス制御を有効にする前に、少なくとも 1 つの許可ルールを設定する必要があります。これにより、誰もアプリケーションにアクセスできない状態でアクセス制御を誤って有効化することを防ぎます。

ルールの編集または削除

アプリケーションの ルール タブから許可リストを更新できます。

  • ルールを追加するには、ルールテーブルの下にある さらに追加 をクリックします。
  • ルールを削除するには、ルール行の削除ボタンをクリックし、操作を確認します。
  • ルールを追加または削除した後、変更を保存 をクリックして更新を適用します。

アクセス制御が有効な場合、Logto は少なくとも 1 つのルールが設定されていることを要求します。すべてのルールを削除するには、まず アクセス制御を有効化 をオフにしてから変更を保存してください。

ルール変更がユーザーに与える影響

アプリレベルのアクセス制御は、ユーザーのグローバルな Logto セッションを終了しません。ユーザーは引き続き Logto や他のアプリケーションにサインインしたままの場合があります。

制限対象のアプリケーションについて:

  • いずれの許可ルールにも一致しなくなったユーザーは、次回そのアプリケーションの認可 (Authorization) フローを通過する際にブロックされます。
  • すでにアプリ関連のグラントを持っている場合、アプリケーションがリフレッシュトークンを使って新しいトークンをリクエストする際に再度ルールがチェックされます。ユーザーがアクセス権を失っていれば、Logto はトークンリクエストを拒否します。

これにより、アクセス判断がアプリケーション単位で行われ、他のアプリケーションへの不要な影響を避けられます。

サードパーティアプリの権限との関係

サードパーティアプリケーション では、アプリレベルのアクセス制御と権限管理は異なる課題を解決します:

  • アプリレベルのアクセス制御 は、ユーザーがサードパーティアプリケーションにサインインできるかどうかを決定します。
  • 権限管理 は、サードパーティアプリケーションが同意画面でリクエストできるユーザープロフィールスコープ、API リソーススコープ、組織スコープを決定します。

両方が設定されている場合、ユーザーはまずアプリレベルのアクセス制御を通過しなければサードパーティアプリケーションを認可 (Authorization) できません。

注記:

アプリレベルのアクセス制御は登録済みアプリケーションのみに適用されます。ダイナミックアプリ クライアントにはアプリケーションレコードがないため、この方法で制限できません。ダイナミックアプリへのアクセスは、付与した権限およびユーザーの同意によって制限されます。

Protected App との関係

Protected App では、アプリレベルのアクセス制御によって Logto の認証 (Authentication) レイヤーを通過し、保護されたオリジンサーバーに到達できるユーザーを制限します。

Protected App の認証 (Authentication) ルールは、どのルートに認証 (Authentication) が必要かを決定します。アプリレベルのアクセス制御は、認証 (Authentication) 済みの Logto ユーザーのうち、Protected App アプリケーションにアクセスできるユーザーを決定します。

ベストプラクティス

  • 可能な限りユーザーロールまたは組織ロールルールから始めましょう。個別ユーザーの長いリストよりも管理が簡単です。
  • 組織 (Organizations) 内の全員がアプリにアクセスすべき場合は、組織ルールを使いましょう。
  • 組織 (Organizations) の特定メンバーだけがアプリにアクセスすべき場合は、組織ロールルールを使いましょう。
  • ユーザーのロール変更、組織 (Organizations) への参加・離脱時にはアクセスルールを見直しましょう。
  • RBAC の権限とアプリレベルのアクセス制御は頭の中で分けて考えましょう:アプリレベルのアクセス制御は「このユーザーはこのアプリにアクセスできるか?」、RBAC は「このユーザーは API や組織機能にアクセスした後に何ができるか?」に答えます。