第9章 ポリシーエンフォーサー


Policy Enforcement Point (PEP: Policy Enforcement Point) は、異なる方法で実装できる設計パターンです。Red Hat Single Sign-On は、さまざまなプラットフォーム、環境、およびプログラミング言語に PEP を実装するのに必要な方法をすべて提供します。Red Hat Single Sign-On の認可サービスは RESTful API を提供し、一元化された認可サーバーを使用して詳細な認可に OAuth2 認可機能を活用します。

PEP overview

PEP は、保護されているリソースに関連付けられたポリシーを評価して、Red Hat Single Sign-On サーバーからアクセス決定を強制します。これは、保護されたリソースへの特定の要求を満たすかどうかをチェックするためにアプリケーションのフィルターやインターセプターとして機能します。この決定によって付与されるパーミッションに基づいて、保護されるリソースへの特定のリクエストを満たすことができるかどうかを確認します。

パーミッションは、使用しているプロトコルによって異なります。UMA を使用する場合、ポリシーエンフォーサーは、要求を提供できるかどうかを決定するために RPT をベアラートークンとして常に予想します。つまり、クライアントはまず Red Hat Single Sign-On から RPT を取得してからリソースサーバーに送信する必要があります。

ただし、UMA を使用していない場合は、通常のアクセストークンをリソースサーバーに送信することもできます。この場合、ポリシーエンフォーサーはサーバーから直接パーミッションの取得を試みます。

Red Hat Single Sign-On OIDC アダプターのいずれかを使用している場合は、keycloak.json ファイルに以下のプロパティーを追加して、ポリシーの強制機能を簡単に有効にできます。

keycloak.json

{
 "policy-enforcer": {}
}
Copy to Clipboard

ポリシーを有効にすると、アプリケーションに送信されたリクエストはすべてインターセプトされ、Red Hat Single Sign-On が要求するアイデンティティーに付与されるパーミッションに応じて、保護されるリソースへのアクセスが付与されます。

ポリシー強制は、Red Hat Single Sign-On 管理コンソールを使用して、リソースサーバーに作成したアプリケーションのパスおよび リソース に強くリンクします。デフォルトでは、リソースサーバーを作成すると、Red Hat Single Sign-On はリソースサーバーの デフォルト設定 を作成し、ポリシーの強制を迅速に有効にできるようにします。

9.1. 設定

アプリケーションのポリシーの強制を有効にするには、以下のプロパティーを keycloak.json ファイルに追加します。

keycloak.json

{
  "policy-enforcer": {}
}
Copy to Clipboard

または、保護されているリソースを手動で定義したい場合は、詳細を若干詳細します。

{
  "policy-enforcer": {
    "user-managed-access" : {},
    "enforcement-mode" : "ENFORCING",
    "paths": [
      {
        "path" : "/someUri/*",
        "methods" : [
          {
            "method": "GET",
            "scopes" : ["urn:app.com:scopes:view"]
          },
          {
            "method": "POST",
            "scopes" : ["urn:app.com:scopes:create"]
          }
        ]
      },
      {
        "name" : "Some Resource",
        "path" : "/usingPattern/{id}",
        "methods" : [
          {
            "method": "DELETE",
            "scopes" : ["urn:app.com:scopes:delete"]
          }
        ]
      },
      {
        "path" : "/exactMatch"
      },
      {
        "name" : "Admin Resources",
        "path" : "/usingWildCards/*"
      }
    ]
  }
}
Copy to Clipboard

各設定オプションの説明は次のとおりです。

  • policy-enforcer

    ポリシーを実際に実施する方法、およびオプションで保護するパスを定義する設定オプションを指定します。指定しなかった場合には、ポリシーエンフォーサーは、保護されているリソースサーバーに関連するすべてのリソースに対してサーバーをクエリーします。この場合は、保護するパスに一致する URIS プロパティーでリソースが適切に設定されていることを確認する必要があります。

    • user-managed-access

      アダプターが UMA プロトコルを使用することを指定します。指定されている場合、アダプターはサーバーに対してサーバーに対してクエリーを行い、UMA 仕様に従ってクライアントに戻ります。指定しない場合、ポリシーエンフォーサーは、通常のアクセストークンまたは RPTs に基づいてパーミッションを強制できます。この場合、トークンにパーミッションがない場合にリソースへのアクセスを拒否する前に、ポリシーエンフォーサーはサーバーから直接パーミッションの取得を試みます。

    • enforcement-mode

      ポリシーの適用方法を指定します。

      • ENFORCING

        (デフォルトモード) 指定されたリソースに関連付けられたポリシーがない場合でも、要求はデフォルトで拒否されます。

      • PERMISSIVE

        指定のリソースに関連付けられたポリシーがない場合でも、要求は許可されます。

      • DISABLED

        ポリシーの評価を完全に無効にし、すべてのリソースにアクセスできるようにします。enforcement-modeDISABLED である場合は、認可コンテキスト を介して Red Hat Single Sign-On によって付与されたすべてのパーミッションを取得できます。

    • on-deny-redirect-to

      "access denied" メッセージがサーバーから取得される際に、クライアントリクエストがリダイレクトされる URL を定義します。デフォルトでは、アダプターは 403 HTTP ステータスコードで応答します。

    • path-cache

      ポリシーエンフォーサーが、Red Hat Single Sign-On で定義したアプリケーションとリソース間の関連付けを追跡する方法を定義します。このキャッシュは、パスと保護リソース間の関連付けをキャッシュすることで、Red Hat Single Sign-On サーバーへの不要な要求を回避するために必要です。

      • lifespan

        エントリーの期限が切れる時間 (ミリ秒単位) を定義します。指定しないと、デフォルト値は 30000 になります。0 に等しい値を設定して、キャッシュを完全に無効にすることができます。-1 に等しい値を設定して、キャッシュの有効期限を無効にすることができます。

      • max-entries

        キャッシュに保持される必要があるエントリーの制限を定義します。指定しないと、デフォルト値は 1000 になります。

    • paths

      保護するパスを指定します。この設定はオプションです。定義されていない場合、ポリシーエンフォーサーは Red Hat Single Sign-On でアプリケーションに定義したリソースをフェッチしてすべてのパスを検出します。ここで、これらのリソースがアプリケーションのパスを表す URIS で定義されます。

      • name

        指定のパスに関連付けられるサーバー上のリソースの名前。path と併用される場合、ポリシーエンフォーサーはリソースの URIS プロパティーを無視し、代わりに指定したパスを使用します。

      • path

        (必須) アプリケーションのコンテキストパスに相対する URI。このオプションが指定されていると、ポリシーは、同じ値を持つ URI でリソースについて、サーバーに対してクエリーを実行します。現在、パス照合に非常に基本的なロジックがサポートされています。有効なパスの例は以下のとおりです。

        • ワイルドカード: /*
        • 接尾辞: /*.html
        • サブパス: /path/*
        • パスパラメーター: /resource/{id}
        • 完全一致: /resource
        • パターン: /{version}/resource, /api/{version}/resource, /api/{version}/resource/*
      • methods

        HTTP メソッド (GET、POST、PATCH など) は、サーバーの特定リソースのスコープとどのように関連付けされるかを指定します。

        • method

          HTTP メソッドの名前。

        • scopes

          メソッドに関連付けられたスコープを持つ文字列の配列。スコープを特定のメソッドに関連付ける際に、保護されたリソース (またはパス) へのアクセスを試みるクライアントが、リストで指定されたすべてのスコープにパーミッションを付与する RPT を提供する必要があります。たとえば、スコープ 作成 でメソッド POST を定義する場合、パスへの POST を実行する際に、RPT には create スコープへのアクセスを付与するパーミッションが含まれている必要があります。

        • scopes-enforcement-mode

          メソッドに関連付けられたスコープの強制モードを参照する文字列。値は、ALL または ANY にすることができます。ALL の場合は、このメソッドを使用してリソースにアクセスするために定義されたすべてのスコープが付与される必要があります。ANY の場合は、このメソッドを使用してリソースにアクセスするには、少なくとも 1 つのスコープを付与する必要があります。デフォルトでは、強制モードは ALL に設定されます。

      • enforcement-mode

        ポリシーの適用方法を指定します。

        • ENFORCING

          (デフォルトモード) 指定されたリソースに関連付けられたポリシーがない場合でも、要求はデフォルトで拒否されます。

        • DISABLED
      • claim-information-point

        これらの要求をポリシーで利用可能にするために解決し、Red Hat Single Sign-On サーバーにプッシュする必要のある 1 つ以上の要求のセットを定義します。詳細は、要求情報ポイント を参照してください。

    • lazy-load-paths

      アプリケーションがパスに関連付けられたリソースのサーバーを取得する方法を指定します。true の場合、ポリシーエンフォーサーは要求されるパスに応じてオンデマンドでリソースをフェッチします。この設定は、デプロイメント中にサーバーからすべてのリソースをフェッチする場合 (パス を指定しなかった場合) や、paths のサブセットのみが定義されていて、他のオンデマンドを取得する場合などに特に便利です。

    • http-method-as-scope

      スコープを HTTP メソッドにマッピングする方法を指定します。true に設定すると、ポリシーエンフォーサーは現在のリクエストから HTTP メソッドを使用して、アクセスを付与すべきかどうかを確認します。有効にすると、Red Hat Single Sign-On のリソースが保護している各 HTTP メソッドを表すスコープに関連付けられていることを確認します。

    • claim-information-point

      これらの要求をポリシーに利用可能にするために、解決して Red Hat Single Sign-On サーバーにプッシュする必要のある 1 つ以上の グローバル 要求のセットを定義します。詳細は、要求情報ポイント を参照してください。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat