機能

URLとパスの書き換え

バックエンドを変えずにパスを変える — クライアントはURLを保持しながら、内部では新しいアーキテクチャが動作します。

TR7 URLとパスの書き換えは、単純なURL修正ユーティリティではありません。アプリケーションモダナイゼーション、APIバージョニング、B2Bパートナー互換性、透過的なサービス移行プロジェクトのための基盤となる書き換えレイヤーです。クライアントは既知の外部パス(例:`/api/v1/...`)を使い続けながら、TR7がリクエストをバックエンドが理解する内部パス構造に変換します。 TR7のリクエスト書き換えレイヤーは、set_path、set_pathq、normalize_uriアクションでパスを変更し、クエリ文字列の保持、URIの正規形式への変換、FX式言語のSTRREPLACEおよびSTRREPLACEALLによる検索置換パターンの適用が可能です。すべてのルールはFX/ACL条件でスコープされ、一致するHost、メソッド、IP、クッキー、ヘッダー、変数値にのみ適用されます。 最も強力な使い方は、レスポンス書き換えレイヤーと組み合わせた双方向マッピングです。クライアントは`/api/v1/orders`を見て、バックエンドは`/internal/orders`で動作し、レスポンスボディの内部リンクとJSONフィールドは外部パス形式に書き戻されます。クライアントはバックエンドの実際のパス構造を知ることがありません。 結果:TR7はバックエンドもクライアントも同時に変更することなくパスアーキテクチャを変換できます — インクリメンタル移行、パートナー固有のURL互換性、透過バックエンドパスリマップパターン、すべてを単一のルールアーキテクチャで実現します。

3
コア書き換えアクション:set_path、set_pathq、normalize_uri
9
normalize_uriサブオプション:スラッシュマージ、ドットセグメント除去など
3
modifyResponseモード — replace、htmlTag、mask

アプリケーションをモダナイズするたびにバックエンドのパスレイアウトを再構築することはできません。

モダンなアプリケーションアーキテクチャは常に進化しています。API v1として生まれたエンドポイントがv3に到達し、マイクロサービス分割後にモノリス背後のパス構造が変わり、B2Bパートナーが異なるURLスキームに慣れており、またはモダナイゼーションプロジェクトが新しいパスレイアウトを課します。変更のたびにクライアントまたはバックエンドをゼロから再設定する必要があれば、プロジェクトは技術的なタスクではなく長期的な調整作業になります。

従来のアプローチは2つの悪い選択肢を提供します。1つ目はバックエンドに新しいパスサポートを追加することです — 古いエンドポイントを維持しながら新しいエンドポイントも書くことはコードの複雑性とテスト負荷を倍増させます。2つ目はクライアントやパートナーに新しいパスへの移行を強いることです — これは社会的・運用上の摩擦を生み、B2B契約の再交渉が必要なことが多く、モバイルアプリのアップデートを待ち、移行スケジュールが延びます。

正しいモデルは、リクエスト-レスポンスフローに制御された書き換えレイヤーを導入することです。このレイヤーはクライアントが送るパスをバックエンドが理解するパスに変換し、必要に応じてレスポンスボディの内部パスをクライアントが期待する外部パスに書き戻します。バックエンドは内部でモダナイズされ、クライアントやパートナーは既知のURLスキームで動作し続けます。

このレイヤーが効果的であるためには3つの条件が必要です。第1は柔軟な検索置換ロジック:固定パス、プレフィックス置換、クエリ保持、FXベースの文字列変換をすべてサポートする必要があります。第2は条件付き適用:ルールはすべてのリクエストにではなく、正しいHost、メソッド、IP、クッキー、ヘッダー、またはFX条件が一致した場合にのみ適用される必要があります。第3はレスポンスボディとの双方向マッピング:そうでなければバックエンドが返す内部リンクはクライアント側で壊れたURLになります。

TR7 URLとパスの書き換えはこのモデルを提供します:set_path、set_pathq、normalize_uriアクション;FX STRREPLACE / STRREPLACEALLパターン;FX/ACL条件付き適用;modifyResponseによる双方向パスマッピングが、透過バックエンドパスリマップアーキテクチャの基盤を形成します。

アプローチ

TR7のURL書き換えレイヤーは、単純なパス置換をはるかに超えて、アプリケーションアーキテクチャレイヤー間に制御されたブリッジを構築します。

パス書き換えが外部URLを内部パスに変換

`/api/v1/users/123`へのリクエストをバックエンドが期待する`/internal/v3/users/123`パスに変換できます。set_pathはパスのみを変更し、set_pathqはパスとクエリ文字列を一緒に書き換えます。クライアントは既存のURLを送り続け、バックエンドは新しいアーキテクチャで動作します。

FX検索置換パターンで動的変換を実現

固定パス置換では不十分な場合、FX式言語が引き継ぎます。STRREPLACEとSTRREPLACEALLはパス内の特定セグメント(プレフィックス、サフィックス、またはパス中間部)を変換します。オペレーターは変数、検索置換フィールド、条件を同一のルールモデル内で組み合わせられます。

条件付き適用ですべてのリクエストへの影響を防ぐ

すべての書き換えルールにFX/ACL条件でスコープを設定できます。ルールは一致するHost、メソッド、ソースIP、クッキー、ヘッダー、またはFX変数値にのみ適用されます。同一vService配下で異なる条件を持つ異なるパス変換を並行して実行できます。

レスポンス書き換えで双方向パスマッピングを完成

リクエストパスの変更だけでは不十分なことが多く、バックエンドがレスポンスボディに内部パスを返すことがあります。modifyResponseを使用することで、HTMLリンク、JSON hrefフィールド、または内部パスを含むテキストが外部パス形式に書き戻されます。クライアントの視点から完全に透過的なバックエンドパスリマップアーキテクチャが実現します。

機能

URLパス書き換えは単一のアクションではなく、移行、互換性、双方向パス隠蔽パターンのための基盤となる構成要素です。

set_pathがリクエストパスを固定値または動的値に変換

set_pathはリクエストのパス部分を新しいパス値で置き換えます。新しい値は静的に書くか、`%HOST`、`%PATH`、`%METHOD`、`%SRCIP`などのスマートコンテンツ変数で動的にできます。set_path使用時クエリ文字列は保持されません;クエリデータを保持する必要がある場合はset_pathqが推奨されます。このアクションは古い外部URL構造を新しい内部サービスレイアウトにマッピングするために使用されます。

set_pathqがパスとクエリ文字列を一緒に書き換え

set_pathqはパスとクエリ文字列を単一の書き換えアクションで管理します。オペレーターは新しいパスに既存の`%QUERY`値を含めてクライアントが送ったパラメータを保持できます。新しいパラメータを追加することも可能です — 例えば`/api/v1/users?id=42`を`/internal/v3/users?id=42&version=v3-from-v1`に変換できます。これはAPIバージョニングとパートナー互換性のための実用的な移行メカニズムです。

normalize_uriがパスを正規の安全な形式に

normalize_uriはパスとURIコンポーネントを標準形式に正規化します。オプションには、複数スラッシュのマージ、ドットセグメントの除去、`../`トラバーサルの解決、RFC 3986に従った安全文字のデコード、パーセントエンコードシーケンスの大文字化、フラグメントの処理、クエリパラメータのアルファベット順ソートが含まれます。この正規化はキャッシュキーの一貫性、監査の可読性、セキュリティバイパス試みへの耐性に重要です。WAAPおよびその他のセキュリティコントロールが同一の正規パスで決定を下すことにも役立ちます。

FX STRREPLACEとSTRREPLACEALLでパス内の正確な検索置換を適用

STRREPLACEは最初の一致を置換し、STRREPLACEALLはすべての一致を置換します。オペレーターは`%PATH.STRREPLACE("/old/", "/new/")`のような式を書いてパス内の特定セグメントを変換できます。このアプローチはプレフィックス置換、パス中間セグメントの置換、レガシーURLセグメントを新しいサービスレイアウトに移動するために使用されます。UIヘルパーフィールドにより検索置換値の入力がより制御しやすくなります。

FX/ACL条件が書き換えを精密にスコープ

すべてのパス書き換えルールを条件付きで実行できます。条件はHostヘッダーの一致、HTTPメソッドの制約、ソースIPレンジチェック、クッキーまたはヘッダー値の比較、またはFXエンジンが生成するtrueまたはfalseの式を使用できます。同一のvService配下で、パートナー固有、テナント固有、またはメソッド固有のパス変換が異なる条件で共存できます。一致しないリクエストは影響を受けずに通常のフローで続行されます。

modifyResponseが透過バックエンドパスリマップを双方向で完成

set_pathまたはset_pathqがリクエストパスを内部パスに変換すると、バックエンドはレスポンスボディに内部パスを返すことがあります。modifyResponseのreplaceモードがその内部パスを外部形式に書き戻します。例えば:クライアントが`/api/v1/orders`をリクエストし、バックエンドは`/internal/orders`で動作し、レスポンスJSONの`"href":"/internal/users/42"`が`"href":"/api/v1/users/42"`として返されます。クライアントはバックエンドの実際のURL構造を見ることなく動作します。

レスポンス書き換えがreplace、htmlTag、maskモードをカバー

modifyResponseはパスリマップだけに限定されず、レスポンスボディに対する異なる変換をサポートします。replaceモードはregexまたはプレーンテキストパターンをマッチして置換し、パスリマップの主要ツールです。htmlTagモードはHTMLタグに制御されたコンテンツを注入します。maskモードは機密データを隠蔽します。URLとパスの書き換えコンテキストでは、この機能は特に双方向パスマッピングのために位置づけられます。

書き換えはWAAP検査前に実行され、正しいパスを後段に提供

パス書き換えはリクエストフェーズで、後段のセキュリティコントロールがリクエストを評価する前に適用されます。つまり、Virtual Patching、WAAPシグネチャマッチング、レート制限キー、トラフィックルールはすべて書き換えられたパスで動作します。正規化または再配置されたパスは後続のすべての決定レイヤーの共通入力になります。外部URLと内部サービスパスのギャップはポリシーの不一致を生じさせなくなります。

監査ログが元のパスと書き換え後のパスを可視化

パス変換は運用上観察可能でなければなりません。TR7は元のリクエストパスと書き換えられたパス値を監査ログストリームに記録できます。SIEMサイドで「クライアントはどのパスをリクエストしたか、システムはどのパスをバックエンドに送ったか」という問いに答えられるようになります。この可視性は移行プロジェクトとセキュリティレビューで重要です。

チェーンルールで複雑な変換を組み合わせ可能なステップに分解

同一のvService配下で複数のパスルールを順番に実行できます。最初のルールがURIを正規化し、2番目がプレフィックス置換を行い、3番目が特定の条件下でクエリ文字列を充実させたりサフィックスを追加したりします。各ルールは前のルールの出力で動作します。このモデルにより、単一の大きくてリスクのあるルールではなく、読みやすく、テスト可能で、インクリメンタルな変換チェーンが実現します。

運用の深み

URLパス書き換えは、スマートコンテンツ変数、FX統合、条件言語、パフォーマンス特性、エラー動作、レスポンス書き換えパターンと共に運用されます。

01

スマートコンテンツ変数

新しいパス定義には`%PATH`、`%QUERY`、`%HOST`、`%METHOD`、`%SRCIP`、`%PORT`およびカスタム変数を使用できます。これらの変数はset_pathとset_pathqアクションの値フィールドで組み合わせて動的パスを生成します。FX関数はこれらの変数に適用できます。

02

FXエンジン統合

URLパス書き換えはTR7 FX式エンジンのコンシューマーの1つです。オペレーターはパス変換のために別の言語を習得する必要はなく、同じ式ロジック内でSTRREPLACE、STRREPLACEALLおよびその他のFX関数を使用します。この共有モデルにより、トラフィックルール、ログテンプレート、条件定義にわたって一貫した管理アプローチが提供されます。

03

条件式言語

FX/ACL条件が書き換えスコープを絞り込みます。`%HOST == "partner.example.com"`、`%METHOD in ["POST","PUT"]`、`%SRCIP in MAP_IP("partner_ips")`、`%HEADER("X-Tenant") == "tenant-a"`などの式がすべて有効です。複数の条件はAND/ORロジックで組み合わせられます。

04

パフォーマンスとリソースコスト

パス書き換えはリクエストごとのオーバーヘッドが低く、文字列ベースの変換には追加のソケットやファイル読み取り操作は不要です。STRREPLACEとSTRREPLACEALLはメモリ上で実行されます。レスポンスボディ書き換えはボディバッファリングとregex処理が必要なためより高コストです。パスリマップシナリオが真に必要な場合にのみ使用してください。

05

エラー動作とフォールバック

書き換え中にFXパースエラー、変数欠落、regexミスマッチが発生した場合、リクエストは安全なフォールバックを通じて通常のフローを続行できます — ドロップされません。エラーは監査ログに書き込まれ、オペレーターは後で設定の問題を調査できます。この動作により設定ミスのあるルールによって本番アクセスが中断されることを防ぎます。

06

透過バックエンドパスリマップ

透過パスリマップの推奨パターンには2つの部分があります:リクエスト側で外部パスを内部パスに変換し、レスポンス側でレスポンスボディの内部パスを外部パスに書き戻します。これらの2つのルールは同一のvService配下で一致したペアとして動作します。このパターンはAPIゲートウェイシナリオ、B2Bパートナー統合、モノリスからマイクロサービスへの移行プロジェクトの標準構造になります。

利用シナリオ

API v1からv3への透過的な移行

既存のクライアントは`/api/v1/...`エンドポイントを使い続け、TR7はリクエストを内部で`/api/v3/...`構造に変換します。レスポンスボディのv3リンクはmodifyResponseによってv1形式に書き戻されます。クライアントコードを変更することなくモダンなバックエンドが有効化されます。

B2Bパートナー URL互換性の維持

パートナーが長年`/services/payments/...`というURLスキームを使用している一方、内部チームが`/v2/payment-api/...`に移行している場合があります。パートナーのHostヘッダーにスコープされたパートナー固有のset_pathルールが変換を処理します。パートナーは古いURLで動作し続け、新しいサービスアーキテクチャが内部で動作します。

モノリスからマイクロサービスへのインクリメンタル移行

レガシーモノリスが`/app/orders`、`/app/users`、`/app/inventory`パスを提供し、それぞれが別のバックエンドサービスに移動されています。TR7はプレフィックスベースのルーティングとパスリマップを適用し、クライアントに分割を公開しません。ユーザーは同じURLスキームを使い続け、バックグラウンドでサービスが分離されます。

URL正規化によるセキュリティバイパス試みの軽減

攻撃者はパーセントエンコードされたパス、ドットセグメントトラバーサル、またはスラッシュの混乱を使ってWAAPシグネチャマッチングを回避しようとする場合があります。normalize_uriはパスを正規形式にし、後続のWAAPコントロールはこのクリーンな値で動作します。異なる書き方でも同じリソースをターゲットにするURLバリアントがより一貫して評価されます。

よくある質問

set_pathとset_pathqの違いは何ですか?
set_pathはリクエストのパス部分のみを置き換えます;クエリ文字列は保持されずドロップされます。set_pathqはパスとクエリ文字列を単一のアクションで一緒に書き換えます。既存のクエリパラメータを新しいパスで保持する必要がある場合はset_pathqを使用し、`%QUERY`変数を新しいパス値に含めます。
normalize_uriはどのURIの問題に対処しますか?
normalize_uriは9つのサブオプションを提供します:複数スラッシュのマージ、ドットセグメントの除去、`../`トラバーサルの解決、RFC 3986に従った安全文字のデコード、パーセントエンコードシーケンスの大文字化、フラグメントの除去またはエンコード、クエリパラメータのアルファベット順ソート。これらのオプションはキャッシュキーの一貫性、監査の可読性、セキュリティバイパス試みへの耐性に使用されます。
レスポンスボディの内部リンクはどのように変換されますか?
modifyResponseアクションのreplaceモードはレスポンスボディ内のregexまたはプレーンテキストパターンをマッチして置換できます。set_pathがリクエスト側で外部パスを内部パスに変換した後、modifyResponseはバックエンドがレスポンスで返す内部パスを外部パス形式に書き戻します。クライアントはバックエンドの実際のURL構造を見ることがありません。
書き換えルールを特定のパートナーやテナントのみに適用できますか?
はい。すべてのルールはFX/ACL条件でスコープできます。`%HOST == "partner-bank.example.com"`のようなHostヘッダー条件、または`%HEADER("X-Tenant") == "tenant-a"`のようなヘッダー値マッチを使用できます。条件が満たされない場合、ルールは適用されず、リクエストは通常のフローで続行されます。
パス書き換えとWAAPの関係は何ですか?
パス書き換えはリクエストフェーズで、WAAP検査の前に適用されます。したがってWAAPシグネチャマッチング、Virtual Patching、レート制限はすべて書き換えられ正規化されたパスで動作します。外部URLと内部サービスパスのギャップはセキュリティコントロールでポリシーの不一致を生じさせません。
書き換えルールでエラーが発生した場合、リクエストはドロップされますか?
いいえ。FXパースエラー、変数欠落、またはregexミスマッチが発生した場合、リクエストは安全なフォールバックを通じて通常のフローで続行されます — 終了されません。エラーは監査ログに書き込まれ、オペレーターは後で設定の問題をレビューできます。この動作により本番アクセスが保護されます。

バックエンドを変更せずにパスアーキテクチャを変換する

APIバージョニング、B2Bパートナー互換性、透過バックエンドパスリマップ — お客様自身のサービスでのライブセットアップをご案内します。