リソースレベルのポリシー

他の設定を行わない限り、ポリシーはデフォルトでは API 全体に適用されます。ただし、条件に基づいてアクセスが制御されるポリシーの粒度レベルを追加して実装できます。この粒度のポリシーは​リソースレベルポリシー​と呼ばれます。

粒度のリソースレベルでは、ポリシーは条件に一致する要求のみに適用されます。 クロスオリジンリソース共有 (CORS) ポリシーを除くすべてのポリシーは、リソースレベルです。

Mule 4 では、リソースレベルポリシーは RAML API に加えて HTTP ベースの API もサポートします。 API 内のメソッド (数は無制限) に対して ​URI テンプレート正規表現​を使用することで、複数の条件を適用してリソースや HTTP メソッドを絞り込むことができます。

リソースレベルポリシーを実装するための使用シナリオ

リソースレベルのシナリオは多くの方法で使用できます。一例を紹介します。

  • 特定のリソースにポリシーを適用する。

  • API のサブセットを保護する。

  • 複数のリソースに異なる制限を設定する。

API に RAML または OAS 仕様が関連付けられている場合は、​[Preview Resource Matching (リソース一致をプレビュー)]​ オプションを使用して、検索条件の影響を受けるリソースを決定できます。

API Console にリソースとメソッドが表示されています。

リソースレベルポリシーは、Java 正規表現をサポートしています。たとえば、ワイルドカードを使用してポリシーを複数のリソースに適用できます。ポリシーを API に適用する場合は、適用対象のリソースを指定します。

rlp conditions

リソースレベルポリシーを実装するためのガイドライン

リソースレベルポリシーを実装する場合は、以下の点に注意してください。

  • 正規表現内で {userid} などのプレースホルダーを使用しないでください。

    式でプレースホルダーを使用すると、プレースホルダーが実際のノードに一致しないため、失敗します。プレースホルダー例の {userid} では、ノードは次のようになります。

    /api/users/671962fc-f076-4b19-bc38-45ba3a4e4095/permissions/1234

    671962fc-f076-4b19-bc38-45ba3a4e4095 がユーザー ID です。

    1234 は権限の ID です。

1 人のユーザーとすべてのリソースノードを表すリソース ​/api/users/{userid}​ にポリシーを適用するには、次の式を使用します。

userid​ は、1 人のユーザーとすべてのリソースノード ​/api/users/.*​ を表します。

権限リソース ​/api/users/{userId/permissions}​ と ​/api/users/{userid}/permissions/{permissionId}​ のみにポリシーを適用するには、次の式を使用します。

/api/users/./permissions.