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

リソースレベルポリシーのサポートには、RAML と、Mule 4 からは HTTP ベースの API が含まれます。リソースレベルで適用されたポリシーは、リソース内のすべての HTTP メソッド (PUT、GET、POST など) または選択された HTTP メソッドに影響します。

methods resources

複数の条件を適用して、リソースや HTTP メソッドを絞り込むことができます。URI テンプレート正規表現は、API の 1 つ、複数、またはすべてのメソッドに適用できます。

CORS ポリシーをリソースに適用することはできません。

使用シナリオ

リソースレベルポリシーは想像できる限りのあらゆる用途に使用できます。例をいくつか示します。

  • 特定のリソースへのポリシーの適用

  • API のサブセットの保護

  • 複数のリソースへの異なる制限の設定

API に RAML/OAS 仕様が添付されている場合、[Preview Resource Matching (リソース一致をプレビュー)] をクリックして、検索条件が適用されるリソースを確認します。

概念

API の例:

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

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

rlp conditions

複数の条件を適用してリソースとメソッドを絞り込むことができます。URI テンプレート正規表現は、API の 1 つ、複数、またはすべてのメソッドに適用できます。

正規表現内で ​{userid}​ などのプレースホルダを使用​ しない ​でください。式でプレースホルダを使用すると、プレースホルダが実際のノードに一致しないため、失敗します。プレースホルダ例の ​{userid}​ の場合、ノードは実際には次のようになります。

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

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

  • 1234 は権限の ID です。

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

/api/users/.*

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

/api/users/.*/permissions.*

API のサブセットの保護

作成、更新、削除操作にセキュリティを追加し、参照のみの操作は保護しないままにすることができます。たとえば、特定のメソッドとリソースに HTTP 基本認証ポリシーを適用するとします。POST、PUT、PATCH、DELETE の各メソッドを選択し、次の式を使用して API のすべてのリソース URI を対象とします。

.*

この式は、書き込み操作にセキュリティを適用し、GET (参照のみ) は保護しないままにします。リソースのサブセットのみを対象とするには、より詳細な式を使用します。

複数のリソースへの異なる制限の設定

ユーザ固有の操作に、ユーザのアクションに応じて異なる制限を使用してレート制限を適用できます。たとえば、レート制限を複数回適用して、一部のリソースへの要求を他のリソースよりも厳しく制限することができます。たとえば、次のノードでユーザごとに参照、作成、削除操作に異なる制限を設定できます。

 /api/users/.*/.* →
   /api/users/{userId}/assignments;
   /api/users/{userId}/assignments/{param}/values;
   /api/users/{userId}/permissions;
   /api/users/{userId}/permissions/{permissionId}

まず、レート制限ポリシーを特定のメソッドとリソースに適用し、GET (参照) メソッドを選択して、次の正規表現を使用します。

/api/users/.*/.*

次に、ポリシーを設定して、たとえば 1 時間あたり 100 件の要求に制限します。

次に、もう一度レート制限ポリシーを特定のメソッドとリソースに適用し、今度は POST (作成) メソッドを選択して、前回と同じ正規表現を使用します。1 時間あたり 50 件の要求に設定します。

最後に、もう一度レート制限ポリシーを特定のメソッドとリソースに適用し、DELETE (削除) メソッドを選択します。今回も前回と同じ正規表現を使用します。そして、たとえば 2 時間あたり 25 件の要求に設定します。

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub