ゲートキーパーによるセキュリティ強化

アプリケーションをデプロイすると、アプリケーションによって公開された追跡対象のリソースが、セキュリティの短い空白時間のためにアクセス可能になる場合があります。これらのリソースにはポリシーがまだ適用されていないため、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 アプリケーションの再デプロイ後に接続が失われると、ゲートキーパーが有効化されていない場合でも、キャッシュされているポリシー、設定、コントラクトが使用されます。

ゲートキーパーが適用され、追跡対象のリソースに不正なポリシーや定義が正しくないポリシーが適用されると、問題のポリシーが API Manager から削除されるまで、追跡対象のリソースがブロックされて ​503 - Service Unavailable​ HTTP 状況コードが返されます。Mule Runtime Engine は、すべてのポリシーと、アクティブなコントラクトをローカルにキャッシュします。

セキュリティレベル

ゲートキーパー機能を有効または無効にするには、特定のセキュリティレベルで次のプロパティを設定します。

anypoint.platform.gatekeeper

たとえば、​flexible​ セキュリティレベルを設定するには、次のプロパティを指定する必要があります。

anypoint.platform.gatekeeper=flexible
  • Mule 4 セキュリティレベルの有効な値

    • strict

    • flexible

    • disabled

  • Mule 3 セキュリティレベルの有効な値

    • true

    • false

    • strict

    • flexible

セキュリティレベルの定義

下表に示すように、ゲートキーパーには ​false​、​disabled​、​true​、​strict​、または ​flexible​ セキュリティレベルを適用できます。

セキュリティレベル

Description (説明)

Mule 3.x のレベル

Mule 4.x のレベル

false

ゲートキーパーは一切のセキュリティを適用せず、ポリシーがエラーなく完全に適用されるまでは API が不要なトラフィックを受け取る場合があります。

後方互換性のみを目的としています。

disabled​ に置き換えられました。

disabled

ゲートキーパーは一切のセキュリティを適用しません。この設定では、ポリシーが適用されている間に API が不要なトラフィックを受け取る場合があります。

使用不可

Available (使用可能)

true

この設定では、デフォルトのセキュリティレベルが ​Strict​ に設定されます。

後方互換性のみを目的としています。代わりに ​strict​ または ​flexible​ を使用します。

使用不可

strict

ゲートキーパーのセキュリティは最大レベルに設定されます。Mule インスタンスが再起動すると、追跡対象の各リソースにポリシーが正しく適用されるまで API が ​503​ エラーでブロックされます。ゲートキーパーが適用されている状態で Anypoint Platform との接続が失われると、接続が再確立されるまで追跡対象リソースがブロックされます。

Available (使用可能)

Available (使用可能)

flexible

ゲートキーパーのセキュリティは中間レベルに設定されます。Mule インスタンスが再起動すると、API は ​503​ エラーでブロックされます。ゲートキーパーが適用されている状態で Anypoint Platform との接続が失われると、接続が失われている間はローカルキャッシュを使用してポリシーが適用されます。キャッシュが使用できない場合は、少なくとも接続が再確立されるまでは追跡対象リソースがブロックされます。

v3.8.6 以降と v3.9.0 以降で使用可能

v4.1.0 以降で使用可能

デフォルトのゲートキーパー設定

デフォルト値でのゲートキーパーの設定を下表に示します。

ランタイムバージョン

デフォルトセキュリティレベル

3.8.5

Strict

3.8.6 以降の 3.8.x

Flexible

3.9.0

Strict

3.9.1 以降の 3.9.x

Flexible

4.0.0

Strict

4.1.0 以降

Flexible

Mule v3.x でのゲートキーパーの問題のトラブルシューティング

特定の種別のポリシーでゲートキーパーの問題が発生する場合があります。

リソースレベルのポリシーが適用されてもゲートキーパーが API のブロックを解除しない

Mule 3.x では、RAML プロキシまたは APIkit ルーターを含む API 実装に対してのみリソースレベルポリシーを適用できます。API にリソースレベルポリシーが適用されてもゲートキーパーが API を繰り返しブロックする場合は、次の理由が考えられます。

  • リソースレベルポリシーの設定時に選択した URI とメソッドの式が、RAML 定義で指定されているリソースと一致しない。

    このエラーを回避するには、API Manager で特定のリソースレベルポリシーを設定するときに ​Preview Resource Matching​ オプションを使用してください。

  • Mule アプリケーションで定義されている自動検出要素で ​apikitRef​ 属性が指定されていない。

    この問題を修復するには、ルーターが使用している APIkit 設定の名前を ​apikitRef​ 属性に追加してください。