第1章 承認サービスの概要
Red Hat Single Sign-On は粒度の細かい認証ポリシーをサポートしており、以下のような異なるアクセス制御メカニズムを組み合わせることができます。
- 属性ベースのアクセス制御 (ABAC)
- ロールベースアクセス制御 (RBAC)
- ユーザーベースのアクセス制御 (UBAC)
- コンテキストベースのアクセス制御 (CBAC)
ルールベースのアクセス制御
- JavaScript の使用
- 時間ベースのアクセス制御
- ポリシープロバイダーの SPI (Service Provider Interface) によるカスタムアクセス制御メカニズム (ACM) のサポート
Red Hat Single Sign-On は管理 UI と RESTful API のセットをベースとしており、必要な手段として保護されているリソースやスコープのパーミッションを作成し、それらのパーミッションを承認ポリシーに関連付け、アプリケーションやサービスで承認決定を強制します。
リソースサーバー (アプリケーションまたはサービス提供で保護されているリソース) は、通常、保護されたリソースにアクセスを付与すべきかどうかを決定するために、一定種類の情報に依存します。RESTful ベースのリソースサーバーの場合、その情報は通常はセキュリティートークンから取得され、通常はすべてのリクエストに対してベアラートークンとして送信されます。セッションに依存してユーザーを認証する web アプリケーションでは、その情報は通常、ユーザーのセッションに保存され、各リクエストに対してそこから取得されます。
多くの場合、リソースサーバーは、ロールベースのアクセス制御 (RBAC) に基づいて認証の決定のみを行います。ここでは、保護されたリソースにアクセスしようとするユーザーに付与されたロールが、これらの同じリソースにマップされたロールと照合されます。ロールには非常に便利ですが、アプリケーションにはいくつかの制限があります。
- リソースとロールが密接に結合され、ロール (アクセスコンテキストの追加、削除、または変更など) が複数のリソースに影響する可能性があります。
- セキュリティー要件を変更すると、アプリケーションコードへの深い変更を確認して、
- アプリケーションのサイズによっては、ロール管理が困難になり、
- 最も柔軟なアクセス制御メカニズムではありません。ロールは、コンテキスト情報がなく、コンテキスト情報がないユーザーを表すことはありません。ロールを付与している場合は、少なくともいくつかのアクセスがある。
今日、ユーザーが異なる地域に分散し、異なるローカルポリシーを持ち、異なるデバイスを使用し、情報共有の要求が高い異種環境を考慮する必要があることを考えると、Red Hat Single Sign-On Authorization Services は、以下を提供することで、アプリケーションやサービスの認証機能を向上させることができます。
- 詳細な承認ポリシーと異なるアクセス制御メカニズムを使用したリソース保護
- 一元化されたリソース、パーミッション、およびポリシー管理
- 集中ポリシー定義点
- REST ベースの承認サービスのセットに基づく REST セキュリティー
- 認証ワークフローおよびユーザー管理のアクセス
- プロジェクト全体でのコードの複製を回避するためのインフラストラクチャー (および再デプロイ) は、セキュリティー要件の変更に迅速に対応します。
1.1. アーキテクチャー リンクのコピーリンクがクリップボードにコピーされました!
設計の観点からは、Authorization Services はこれらの機能を提供する承認パターンの明確に定義された承認パターンのセットに基づいています。
ポリシー管理ポイント (PAP)
リソースサーバー、リソース、スコープ、パーミッション、ポリシーを管理するために、Red Hat Single Sign-On Administration Console をベースにした一連の UI を提供します。ここでは、保護 API を使用してリモートでも実行できます。
ポリシー決定ポイント (PDP)
分散可能なポリシーの意思決定ポイントを、承認要求が送信され、ポリシーを要求するパーミッションに応じて評価されます。詳しくは、パーミッションの取得 をご覧ください。
ポリシー実施ポイント (PEP)
リソースサーバー側で承認決定を強制するさまざまな環境の実装を提供します。Red Hat Single Sign-On は、一部の組み込み ポリシーエンフォーサー (Policy Enforcer) を提供します。
ポリシー情報ポイント (PIP)
Red Hat Single Sign-On Authentication Server をベースとしており、承認ポリシーの評価時にアイデンティティーおよびランタイム環境から属性を取得できます。
1.1.1. 承認プロセス リンクのコピーリンクがクリップボードにコピーされました!
3 つの主なプロセスでは、Red Hat Single Sign-On を使用してアプリケーションへのきめ細かな認証を可能にする方法を理解するために必要な手順を定義します。
- リソースの管理
- パーミッションおよびポリシーの管理
- ポリシーの強制
1.1.1.1. リソース管理 リンクのコピーリンクがクリップボードにコピーされました!
リソースの管理 には、保護されているものを定義するために必要なすべての手順が含まれます。
まず、保護する Red Hat Single Sign-On を指定する必要があります。これは通常、Web アプリケーションまたは 1 つ以上のサービスのセットを表します。リソースサーバーの詳細は Terminology を参照してください。
リソースサーバーは、Red Hat Single Sign-On の管理コンソールを使用して管理されます。登録済みのクライアントアプリケーションをリソースサーバーとして有効にし、保護するリソースおよびスコープの管理を開始することができます。
リソースは、Web ページ、RESTFul リソース、ファイルシステム内のファイル、EJB などになります。これらは、リソースのグループを表すことも (Java の Class のように)、単一の特定のリソースを表すこともできます。
たとえば、すべての銀行口座を表す Bank Account リソースがあり、それを使用してすべての銀行口座に共通の認証ポリシーを定義する場合があります。ただし、所有者だけが一部の情報へのアクセスや操作の実行を許可されている Alice Account (顧客に属するリソースインスタンス) に特定のポリシーを定義したい場合があります。
リソースは、Red Hat Single Sign-On 管理コンソールまたは 保護 API を使用して管理できます。後者の場合、リソースサーバーはリソースをリモートで管理できます。
スコープは、通常リソースで実行できるアクションを表しますが、これらに限定されません。スコープを使用してリソース内の 1 つまたは複数の属性を表すこともできます。
1.1.1.2. パーミッションおよびポリシーの管理 リンクのコピーリンクがクリップボードにコピーされました!
リソースサーバーと保護するすべてのリソースを定義した後に、パーミッションとポリシーを設定する必要があります。
このプロセスでは、リソースを管理するセキュリティーおよびアクセス要件を実際に定義するのに必要なすべてのステップが関係します。
ポリシーは、何か (リソースやスコープ) にアクセスしたり操作を実行したりする際に満たさなければならない条件を定義するものですが、何を保護しているかには縛られていません。これらは汎用的であり、パーミッションの構築やより複雑なポリシーの構築に使用できます。
例えば、"User Premium "というロールを付与されたユーザーにのみ、あるリソース群へのアクセスを許可するには、RBAC(Role-based Access Control) を使用します。
Red Hat Single Sign-On は、最も一般的なアクセス制御メカニズムをカバーするいくつかの組み込みポリシータイプ (およびそれぞれのポリシープロバイダー) を提供します。JavaScript を使用して記述されたルールに基づいてポリシーを作成することもできます。
ポリシーを定義したら、パーミッションの定義を開始できます。パーミッションは、保護しているリソースと結合されます。ここでは、許可を許可または拒否するために満たさなければならないポリシー (リソースまたはスコープ) およびポリシーを指定します。
1.1.1.3. ポリシーの強制 リンクのコピーリンクがクリップボードにコピーされました!
ポリシーの強制 には、リソースサーバーに認証の決定を実際に強制するために必要な手順が含まれます。これは、認証サーバーと通信できるリソースサーバーで ポリシー強制ポイント または PEP を有効にし、サーバーが返した決定とパーミッションに基づいて認証データと、保護リソースへのアクセスを制御することによって使用できます。
Red Hat Single Sign-On は、実行中のプラットフォームに応じてアプリケーションを保護するために使用できる組み込み ポリシーエンフォーサー 実装を提供します。
1.1.2. 認証サービス リンクのコピーリンクがクリップボードにコピーされました!
承認サービスは、以下の RESTFul エンドポイントで設定されます。
- トークンエンドポイント
- リソース管理エンドポイント
- パーミッション管理エンドポイント
これらのサービスごとに、承認プロセスに関係するさまざまなステップをカバーする特定の API を提供します。
1.1.2.1. トークンエンドポイント リンクのコピーリンクがクリップボードにコピーされました!
OAuth2 クライアント (フロントエンドアプリケーションなど) は、トークンエンドポイントを使用してサーバーからアクセストークンを取得し、その同じトークンを使用してリソースサーバー (バックエンドサービスなど) で保護されたリソースにアクセスすることができます。同様に、Red Hat Single Sign-On Authorization Services は OAuth2 の拡張機能を提供し、要求されたリソースまたはスコープに関連するすべてのポリシーの処理に基づいてアクセストークンを発行することができます。つまり、リソースサーバーは、サーバーによって付与されるパーミッションに基づいて保護されているリソースへのアクセスを強制でき、アクセストークンによって保持されます。Red Hat Single Sign-On の Authorization Services では、パーミッションのあるアクセストークンは Requesting Party Token または RPT for short と呼ばれます。
1.1.2.2. 保護 API リンクのコピーリンクがクリップボードにコピーされました!
保護 API は、リソースサーバーの一連の UMA 準拠 のエンドポイントで、それらに関連付けられたリソース、スコープ、パーミッション、およびポリシーの管理に役立ちます。この API へのアクセスはリソースサーバーのみです。また、uma_protection スコープも必要です。
保護 API が提供する操作は、以下の 2 つのグループに分類できます。
リソースの管理
- リソースの作成
- リソースの削除
- Id で検索
- クエリー
パーミッションの管理
- パーミッションチケットの発行
デフォルトでは、Remote Resource Management は有効になります。この変更は、Red Hat Single Sign-On の管理コンソールを使用して変更し、コンソール経由のリソース管理のみを許可することができます。
UMA プロトコルを使用する場合、保護 API による Permission Tickets の発行は、承認プロセス全体における重要な部分です。後続のセクションで説明されているように、クライアントは要求するパーミッションを表し、サーバーへ送信され、要求されるリソースおよびスコープに関連付けられたパーミッションおよびポリシーの評価時に付与されるすべてのパーミッションで最終的なトークンを取得します。