アプリケーションをデプロイすると、アプリケーションによって公開された追跡対象のリソースが、セキュリティの短い空白時間のためにアクセス可能になる場合があります。これらのリソースにはポリシーがまだ適用されていないため、API は不要なトラフィックを受け取ることがあります。ゲートキーパーは、すべてのポリシーがエラーなく取得されて適用されるまで追跡対象リソースをブロックしてこの状況を回避します。
CloudHub 4.2.2 以降、ポリシーでコントラクトが必要な場合、およびゲートキーパーが有効になっている場合に、Mule Runtime Engine (Mule) は API のコントラクトが管理プレーンから正常にダウンロードされるまで API をブロックし続けます。ゲートキーパーは、API のブロックを解除するコントラクトが使用可能になるまで待機します。
以前のバージョンの Mule では、ランタイムがすべてのポリシーを正常に適用した後に API のブロックが解除されていました。たとえば、API にクライアント ID 適用ポリシーが適用されている場合、有効なログイン情報を含む要求が拒否されていました。
この CloudHub の更新は、strict および flexible ゲートキーパーモードと同じように動作します。Mule の再起動前後にコントラクトサービスからダウンロードされたコントラクトは、使用可能とみなされます。
コントラクトが必要な可能性がある標準のポリシーを次に示します。
ゲートキーパーの動作
ゲートキーパーメカニズムは、ランタイムを再起動した場合、または自動検出によって API インスタンスにリンクされた追跡対象リソースを再デプロイした場合にのみ適用されます。ゲートキーパーが適用されると、API Manager ですべての API インスタンスポリシーがエラーなく適用されるまで、追跡対象の各リソースがブロックされ、503 - Service Unavailable HTTP 状況コードが返されます。
自動検出時に API インスタンスにリンクされていないリソースは、ゲートキーパーでは無視されます。また、これらのリソースにはポリシーを適用することはできず、分析情報も生成されません。Mule インスタンスの再起動後または追跡対象の Mule アプリケーションの再デプロイ後に接続が失われると、ゲートキーパーが有効化されていない場合でも、キャッシュされているポリシー、設定、コントラクトが使用されます。
ゲートキーパーが適用され、追跡対象のリソースに不正なポリシーや定義が正しくないポリシーが適用されると、追跡対象のリソースがブロックされて 503 - Service Unavailable HTTP 状況コードが返されます。問題のポリシーが API Manager から削除されるまで、リソースはブロックされたままになります。Mule Runtime は、すべてのポリシーと、アクティブなコントラクトをローカルにキャッシュします。
セキュリティレベル
ゲートキーパー機能を有効または無効にするには、特定のセキュリティレベルで次のプロパティを設定します。
anypoint.platform.gatekeeper
たとえば、flexible セキュリティレベルを設定するには、次のプロパティを指定する必要があります。
anypoint.platform.gatekeeper=flexible
-
Mule 4 セキュリティレベルの有効な値
-
strict -
flexible -
disabled
-
-
Mule 3 セキュリティレベルの有効な値
-
true -
false -
strict -
flexible
-
Mule Runtime バージョン 4.8.0 以降の場合、ポリシー設定を編集するときはゲートキーパーによって要求がブロックされ、ポリシー順序を編集するときはゲートキーパーによって要求がブロックされません。編集中にゲートキーパーを無効にするには、anypoint.platform.gatekeeper プロパティを false に設定します。
anypoint.platform.gatekeeper.block_edit=false
セキュリティレベルの定義
下表に示すように、ゲートキーパーには false、disabled、true、strict、または flexible セキュリティレベルを適用できます。
セキュリティレベル |
Description (説明) |
Mule 3.x のレベル |
Mule 4.x のレベル |
|
ゲートキーパーは一切のセキュリティを適用せず、ポリシーがエラーなく完全に適用されるまでは API が不要なトラフィックを受け取る場合があります。 |
後方互換性のみを目的としています。 |
|
|
ゲートキーパーは一切のセキュリティを適用しません。この設定では、ポリシーが適用されている間に API が不要なトラフィックを受け取る場合があります。 |
使用不可 |
Available (使用可能) |
|
この設定では、デフォルトのセキュリティレベルが |
後方互換性のみを目的としています。代わりに |
使用不可 |
|
ゲートキーパーのセキュリティは最大レベルに設定されます。Mule インスタンスが再起動すると、追跡対象の各リソースにポリシーが正しく適用されるまで API が |
Available (使用可能) |
Available (使用可能) |
|
ゲートキーパーのセキュリティは中間レベルに設定されます。Mule インスタンスが再起動すると、API は |
v3.8.6 以降と v3.9.0 以降で使用可能 |
v4.1.0 以降で使用可能 |
Mule v3.x でのゲートキーパーの問題のトラブルシューティング
特定の種別のポリシーでゲートキーパーの問題が発生する場合があります。
リソースレベルのポリシーが適用されてもゲートキーパーが API のブロックを解除しない
Mule 3.x では、RAML プロキシまたは APIkit ルーターを含む API 実装に対してのみリソースレベルポリシーを適用できます。API にリソースレベルポリシーが適用されてもゲートキーパーが API を繰り返しブロックする場合は、次の理由が考えられます。
-
リソースレベルポリシーの設定時に選択した URI とメソッドの式が、RAML 定義で指定されているリソースと一致しない。
このエラーを回避するには、API Manager で特定のリソースレベルポリシーを設定するときに
Preview Resource Matching オプションを使用してください。 -
Mule アプリケーションで定義されている自動検出要素で
apikitRef 属性が指定されていない。この問題を修復するには、ルーターが使用している APIkit 設定の名前を
apikitRef 属性に追加してください。