HTTPS API プロキシの構築

API Manager 2.x を使用すると、シークレットグループに保存したシークレットを使用して、CloudHub またはハイブリッドデプロイメント用の HTTPS ベースの API を構築できます。 インバウンドおよびアウトバウンドトラフィックの TLS コンテキストを設定することで、トラフィックのセキュリティを確保できます。

シークレットマネージャーインテグレーションは、CloudHub、ハイブリッド、およびスタンドアロンのデプロイメント上で Mule 4 を実行する API プロキシでのみサポートされます。 TLS コンテキストでサポートされるキーストアは JCEKS、PKCS12、および JKS です。

Mule 3 または Runtime Fabric デプロイメント対象で HTTPS プロキシを構築する場合は、​「HTTPS サービスの構築」​を参照してください。

始める前に

シークレットグループに保存されたシークレットを使用して HTTPS API プロキシを設定するには、次の要件を満たす必要があります。

  • Anypoint Platform 管理者に以下の権限を要求してある:

    • シークレットマネージャー権限
      API プロキシ用の既存の TLS コンテキストを設定するには、「​シークレットメタデータの読み取り​」権限が必要です。 詳細は、​「シークレットマネージャー権限」​リファレンスを参照してください。

    • API Manager の権限
      API Manager で TLS コンテキストを API プロキシに適用するには、​「Manage API Configuration (API 設定の管理)」​権限が必要です。 詳細は、「製品別の権限」ページの​「API Manager」​のセクションを参照してください。

  • シークレットグループを作成してある

    [Secret Group Downloadable (シークレットグループをダウンロード可能)]​ チェックボックスをオンにします。

  • TLS コンテキストを追加してある

    TLS コンテキストの対象を ​[Mule]​ に設定します。

HTTPS API プロキシを設定する

HTTPS API プロキシを設定するには、以下の手順を完了します。

  1. [Anypoint Platform]​ > ​[API Manager]​ に移動します。

  2. [API Administration (API 管理)]​ で、​[Add API (API を追加)]​ をクリックし、​[Add new API (新しい API を追加)]​ をクリックします。

  3. ランタイムとして ​[Mule Gateway (Mule ゲートウェイ)]​ を選択します。

  4. [Proxy type (プロキシ種別)]​ で ​[Deploy a proxy application (プロキシアプリケーションをデプロイ)]​ を選択します。

  5. プロキシアプリケーションのデプロイを選択した場合は、以下のオプションから​対象種別​を選択します。

    • CloudHub 2.0​: コンテナベースのクラウドインフラストラクチャで MuleSoft によってホストされている Mule Runtime を使用する場合は、このオプションを選択します。CloudHub 2.0 プロキシには、デフォルトで 0.1 vCore の CPU が含まれています。

      1. スペースを選択します。

        スペースについての詳細は、​共有スペース and 非公開スペース​を参照してください。

      2. [Runtime version (ランタイムバージョン)]​ を選択します。

      3. [Proxy app name (プロキシアプリケーション名)]​ を入力します。

    • CloudHub:​ MuleSoft によってクラウドでホストされている Mule Runtime を使用する場合は、このオプションを選択します。CloudHub プロキシには、デフォルトで 0.1 vCore の CPU と 500 MB のメモリが含まれています。

      1. [Runtime version (ランタイムバージョン)]​ を選択します。

      2. [Proxy app name (プロキシアプリケーション名)]​ を入力します。

    • Hybrid (ハイブリッド):​ 使用するオンプレミスサーバーで Mule Runtime を実行している場合、[Hybrid (ハイブリッド)] を選択します。 詳細は、​「Runtime Manager でのサーバーの登録」​を参照してください。

      自己管理型サーバーで API を実行している場合、​従来の API 作成フロー​を使用して API を管理します。

      1. リストから接続先を選択するか、​[Add server (サーバーを追加)]​ をクリックします。

      2. [Proxy app name (プロキシアプリケーション名)]​ を入力します。

    • Runtime Fabric:​ Runtime Fabric で管理された Mule Runtime Engine に API プロキシをデプロイする場合、[Runtime Fabric] を選択します。 詳細は、​「Runtime Fabric への API プロキシのデプロイ」​を参照してください。

      1. リストから対象を選択します。

      2. [Runtime version (ランタイムバージョン)]​ を選択します。

      3. [Proxy app name (プロキシアプリケーション名)]​ を入力します。

  6. 以下のオプションから API を選択します。

    • 管理する API を Exchange を介して共有している場合、​[Select API from Exchange (Exchange から API を選択)]​ をクリックします。

      1. [Select API (API を選択)]​ の下のリストから API をクリックします。必要に応じて、特定の API を検索できます。

      2. 最新バージョンを使用していない場合は、​[Asset type (アセットタイプ)]​、​[API version (API バージョン)]​、および ​[Asset version (アセットバージョン)]​ を更新します。

        Exchange でのバージョンについての詳細は、アセットバージョンを参照してください。

      3. [RAML/OAS]​ アセットタイプを選択した場合は、API の ​[Conformance Status (準拠状況)]​ を表示して、API が準拠していることを確認します。​[Conformance Status (準拠状況)]​ が非準拠の場合、デプロイ後に​ガバナンスレポート​を表示して、準拠の問題を見つけて修正します。​ガバナンスレポート​についての詳細は、API インスタンスの管理を参照してください。

    • [Create new API (新しい API を作成)]​ をクリックします。

      1. 新しい API アセットの​名前​を入力します。

      2. 以下のオプションから​アセットタイプ​を選択します。

        • REST API:​ アセットに含める RAML または OAS API 定義ファイルがある場合は、このオプションを選択します。

          REST API の RAML または OAS ファイルをアップロードします。バージョン 2.0.0 以降ではネイティブ OAS サポートが追加されるので、OAS または RAML 仕様に推奨されるバージョンです。OAS API 仕様を API プロキシバージョン 1.0 以前にアップロードすると、API 仕様は RAML に変換されます。

        • HTTP API:​ アセットに含める API 定義ファイルがない場合は、このオプションを選択します。

        • SOAP API:​ WSDL API 定義ファイルまたはファイルへの外部リンクがある場合は、このオプションを選択します。

          SOAP API の WSDL ファイルをアップロードするか、ファイルへのリンクを追加します。
          このオプションは、現時点では Flex Gateway ランタイムでは使用できません。

      3. 最新バージョンを使用していない場合は、​[Asset type (アセットタイプ)]​、​[API version (API バージョン)]​、および ​[Asset version (アセットバージョン)]​ を更新します。

        Exchange でのバージョンについての詳細は、アセットバージョンを参照してください。

      4. [RAML/OAS]​ アセットタイプを選択した場合は、API の ​[Conformance Status (準拠状況)]​ を表示して、API が準拠していることを確認します。[Conformance Status (準拠状況)] が非準拠の場合、デプロイ後に​ガバナンスレポート​を表示して、準拠の問題を見つけて修正します。​ガバナンスレポート​についての詳細は、API インスタンスの管理を参照してください。

  7. [Next (次へ)]​ をクリックします。

  8. ダウンストリーム設定を定義します。

    設定を確認するには展開します。
    項目名 説明 必須 注意事項

    Protocol (プロトコル)

    検証に HTTP と HTTPS のどちらを使用するかを指定します。

    はい

    HTTPS を選択する場合、インバウンドトラフィックの TLS コンテキストを指定します。

    Inbound TLS (インバウンド TLS)

    インバウンドトラフィックを保護するための TLS コンテキストを指定します。

    いいえ

    Mule 4 以降でのみ使用できます。コンテキストを表示できない場合は、適切な権限があることを確認してください。Mule 3 環境で HTTPS を有効にするには、​「Mule 3x での HTTPS の有効化」​を参照してください。

    Port (ポート)

    表示されたポートが正しくない場合に使用する番号を指定します。

    はい

    Base Path (ベースパス)

    ホストルートに相対的なすべての API パスの URL プレフィックスを指定します。スラッシュ ​/​ で始まる必要があります。

    はい

    Instance label (インスタンス表示ラベル)

    API の表示ラベルを指定します。

    いいえ

    同じ API の複数の管理インスタンスがある場合、各インスタンスを他のインスタンスと区別するための表示ラベルを追加します。

    Advanced Options (詳細オプション)

    Consumer endpoint (コンシューマーエンドポイント)

    コンシューマーが要求の送信に使用するプロキシアプリケーションのアドレスを指定します。

    いいえ

    Client provider (クライアントプロバイダー)

    API のクライアントプロバイダーを指定します。

    はい

    Anypoint Platform はデフォルトではクライアントプロバイダーとして機能します。外部クライアントプロバイダーを設定するには、​「クライアントプロバイダー」​を参照してください。

    Request Timeout (要求タイムアウト)

    要求がタイムアウトするまでの期間を指定します。

    いいえ

    Proxy Version (プロキシバージョン)

    エンドポイントに使用するプロキシのバージョンを指定します。

    いいえ

    Service Name (サービス名)

    WSDL サービスの名前。

    はい

    WSDL API でのみ使用できます。

    Service Port (サービスポート)

    WSDL サービスのポート。

    はい

    WSDL API でのみ使用できます。

    Service Namespace (サービス名前空間)

    WSDL サービスの名前空間。

    はい

    WSDL API でのみ使用できます。

    Enable Console (コンソールを有効化)

    API 仕様を公開およびテストできるかどうかを指定します。

    いいえ

    [Console Path (コンソールパス)]​ に別のパス (​/spec/*​ など) を指定できます。関連付けられた API 定義がある場合にのみ使用できます。Mule 3 以降でのみ使用できます。

    Validations (検証)

    提供された仕様に対してインバウンド要求を検証するかどうかを指定します。

    いいえ

    関連付けられた API 定義がある場合にのみ使用できます。Mule 3 以降でのみ使用できます。

    厳格な検証 (省略可能)

    クエリパラメーターに対してインバウンド要求を検証するかどうかを指定します。

    いいえ

    関連付けられた API 定義がある場合にのみ使用できます。Mule 3 以降でのみ使用できます+

    User Domain (ユーザードメイン)

    API ゲートウェイドメインを使用するかどうかを指定します。

    いいえ

    設定で以前にプロキシデプロイメント対象として ​[Hybrid (ハイブリッド)]​ を選択した場合は、必ずこのオプションを選択してください。Mule 3.8 以降の API ゲートウェイドメインをインストールする必要があります。

    HTTPS プロキシを設定するには、​[HTTPS]​ を選択し、​[Inbound TLS (インバウンド TLS)]​ を設定する必要があります。
  9. [Next (次へ)]​ をクリックします。

  10. アップストリーム設定を定義します。

    設定を確認するには展開します。
    項目名 説明 必須 注意事項

    Upstream URL (アップストリーム URL)

    プロキシまたは API にアクセスするための URL。

    はい

    たとえば、Exchange の API アセットの URL を使用できます。

    Outbound TLS (アウトバウンド TLS)

    アウトバウンドトラフィックを保護するための TLS コンテキストを指定します。

    いいえ

    Mule 4 以降でのみ使用できます。コンテキストを表示できない場合は、適切な権限があることを確認してください。

  11. [Next (次へ)]​ をクリックします。

  12. 選択内容を確認し、必要に応じて編集します。

  13. デプロイする準備ができたら、​[Save & Deploy (保存してデプロイ)]​ をクリックします。または、​[Save (保存)]​ を選択して API インスタンスを保存し、後でデプロイします。

API プロキシデプロイメント

API プロキシを CloudHub、ハイブリッド、またはスタンドアロンサーバーにデプロイできます。

CloudHub へのデプロイ

API プロキシを設定し、​[Proxy deployment target (プロキシデプロイメント対象)]​ として ​[CloudHub]​ を選択したら、シークレットがすでに設定された状態で API プロキシが自動的にデプロイされます。

シークレットは ​mule-artifact.json​ の ​SecureProperties​ でセキュアプロパティプレースホルダーとして設定されます。
提供されるプロパティの数は、選択した設定によって異なります。

inbound.keystore.keyPassword_281324
inbound.keystore.password_281324

inbound.truststore.password_281324

outbound.keystore.keyPassword_281324
outbound.keystore.password_281324

outbound.truststore.password_281324

この場合、​281324​ サフィックスは API プロキシの API インスタンス ID です。

API プロキシの XML を調べると、これらのプロパティがトラストストア/キーストアの設定で使用されていることがわかります。

<tls:trust-store path="outbound-truststore.jks" password="${outbound.truststore.password_281324}" type="JKS" insecure="true"  />

ハイブリッドへのデプロイ

API プロキシを設定し、​[Proxy deployment target (プロキシデプロイメント対象)]​ として ​[Hybrid (ハイブリッド)]​ を選択したら、シークレットがすでに設定された状態で API プロキシが自動的にデプロイされます。

シークレットは ​mule-artifact.json​ の ​SecureProperties​ でセキュアプロパティプレースホルダーとして設定されます。

+ 提供されるプロパティの数は、選択した設定によって異なります。

inbound.keystore.keyPassword_281324
inbound.keystore.password_281324

inbound.truststore.password_281324

outbound.keystore.keyPassword_281324
outbound.keystore.password_281324

outbound.truststore.password_281324

この場合、​281324​ サフィックスは API プロキシの API インスタンス ID です。

API プロキシの XML を調べると、これらのプロパティがトラストストア/キーストアの設定で使用されていることがわかります。

<tls:trust-store path="outbound-truststore.jks" password="${outbound.truststore.password_281324}" type="JKS" insecure="true"  />

スタンドアロンサーバーへのデプロイ

スタンドアロンサーバーに API プロキシをデプロイするには、TLS コンテキストごとにセキュアプロパティを提供します。

  1. API プロキシをダウンロードします。

    1. API Manager で、ダウンロードする API プロキシのバージョンを選択します。

    2. 画面の右上隅にある ​[Actions (アクション)]​ ボタンをクリックし、​[Download Proxy (プロキシをダウンロード)]​ を選択します。

  2. [API Instance ID (API インスタンス ID)]​ の下にある API インスタンス ID をメモします。

  3. スタンドアロン Mule インスタンスを実行する場合、API プロキシの API インスタンス ID と共にキーストアとキーのパスフレーズを -D 引数として提供する必要があります。
    たとえば、API インスタンス ID が 15464957 の場合、次の引数を渡す必要があります。

    ./bin/mule \
    -M-Dinbound.keystore.keyPassword_15464957=pass123 \
    -M-Dinbound.keystore.password_15464957=pass123 \
    -M-Dinbound.truststore.password_15464957=pass123 \
    -M-Doutbound.keystore.keyPassword_15464957=pass123 \
    -M-Doutbound.keystore.password_15464957=pass123 \
    -M-Doutbound.truststore.password_15464957=pass123