MCPサーバー応答における機密データのマスキング
Liferay DXP 2026.Q3+ リリース機能
MCPサーバー応答でデータをマスキングするには、 リリース機能フラグ (LPD-63311)が必要です。仮想インスタンスに対しても、この機能を有効にする必要があります。詳細については、 MCP サーバーの有効化 を参照してください。
データマスクは、MCPサーバーツールの応答内のパターンを検出し、一致するテキストを代替値に置き換えます。これらを使用して、個人識別情報(PII)など、AIアプリケーションに渡ってほしくない情報を削除します。 Liferay DXPは、電子メールアドレス、電話番号、国民識別番号などの一般的な形式に対応する9種類のシステムマスクを提供します。システムマスクはLiferay DXPに同梱されており、作成、更新、削除することはできません。また、編集や削除が可能なカスタムマスクを作成することもできます。
マスクはインスタンス全体ではなく、MCPサーバープロファイルごとに適用されるため、レスポンスに適用されるマスクは、リクエストを処理するプロファイルに紐づけられたマスクになります。エンドポイントパスによって、どのプロファイルがリクエストを処理するかが決まります。 http://localhost:8080/o/mcp へのリクエストでは defaultという名前のプロファイルが使用され、 http://localhost:8080/o/mcp/<profile-name> へのリクエストではその名前のプロファイルが使用されます。存在しないプロファイルを指定するリクエストは、 404を返します。これは、無効化された MCP サーバーが返すステータスと同じです。
MCPサーバープロファイルを作成すると、すべてのシステムマスクがそれに紐付けられ、実行順序に従って1から番号が付けられます。それらをすべて取り外して、代わりにカスタムマスクを取り付けることができます。 MCP サーバー プロファイルは、 コントロール パネル → オブジェクト → MCP サーバー プロファイルにあり、同じリリース機能フラグの背後にあります。そこでプロファイルを開くと、その外部参照コードを読むことができます。 Liferay DXP は、名前 default および外部参照コード L_MCP_SERVER_DEFAULT_PROFILE を持つ 1 つのプロファイルを提供します。
カスタムデータマスクの作成
-
コントロール パネル → オブジェクト → データ マスク に移動します。

-
データマスクを追加 をクリックします。
-
(任意)マスクが何を検出するのかの説明を入力してください。
-
検出パターンには、値を識別する正規表現を入力してください。
-
マスクタイプについては、フィールドを カスタム に設定したままにします。
-
PIIカテゴリには、マスクの名前を入力してください。この値は一意でなければなりません。
-
(オプション)置換パターンには、一致するたびに実行される正規表現を入力します。
-
置換値には、一致する部分を置き換えるテキストを入力してください。

-
をクリックして保存します。
システムマスクを基にカスタムマスクを作成するには、システムマスクを開き、その検出パターン、置換パターン、および置換値を新しいデータマスクにコピーします。
検出パターンまたは置換パターンがコンパイルされない場合、保存は失敗します。エラーメッセージは、フォームラベルの代わりに、内部フィールド detectionRegex または replacementRegexの名前を指定します。
プロファイルにデータマスクを添付する
-
コントロール パネル → オブジェクト → MCP サーバー プロファイル データ マスク に移動します。
-
MCPサーバープロファイルデータマスクを追加 をクリックします。
-
データマスクには、適用するマスクの外部参照コードを入力してください。
-
削除理由には、課題が削除された理由を入力してください。
この項目は課題作成時には任意入力ですが、削除するにはまず値を入力する必要があります。
-
(オプション)実行順序には、プロファイル上の他のマスクとの相対的な実行順序を決定する数値を入力します。
値が低いほど優先されます。
-
MCPサーバープロファイル外部参照コードには、マスクを適用するプロファイルの外部参照コードを入力してください。

-
をクリックして保存します。
マスクが設定されていないプロファイルの場合、応答は変更されません。
マスクの装着方法
マスクはプロファイル上で実行順に実行され、番号が最も小さいものから順に実行されます。マスクは連鎖を形成し、それぞれのマスクは前のマスクが既に変更したテキストを受け取ります。後から挿入されたマスクは、以前のマスクが挿入した置換値と一致させることができます。
検出パターンは、シリアル化されたレスポンスボディをフィールドごとではなく、1つの文字列として処理します。 Liferay DXP は本文中のどこにあっても一致する箇所をすべて置換し、 ^ および $ は本文全体を参照します。
検出パターンと置換パターンは、Java 正規表現であり、 java.util.regex.Pattern によって評価されます。 Liferay DXP はフラグなしでコンパイルするため、マッチングは大文字と小文字を区別し、 . となります。改行文字とは一致しません。大文字小文字を区別しないマッチングを行うには、パターンに (?i) のようなインラインフラググループを含めます。名前付きキャプチャ グループも機能します。置換パターンでグループを定義し、置換値で ${name} のように参照します。
2つのパターンは、次の2つの方法のいずれかで組み合わされます。
-
置換パターンが空の場合、置換値は検出された値全体を置き換えます。 Liferay DXP は置換値を文字通り挿入するため、
$1は文字$1として表示されます。 -
置換パターンが設定されている場合、Liferay DXP は検出された各一致箇所でそのパターンを実行します。置換値は、
$1スタイルの後方参照を使用できます。これらは、検出パターンではなく、置換パターンのグループに対して解決されます。
システムデータマスク
Liferay DXPは9種類のシステムマスクを提供します。外部参照コードを使用して、プロファイルに1つを添付します。
| PIIカテゴリ | 外部参照コード | 交換価値 |
|---|---|---|
| 銀行口座番号(IBAN) | L_DATA_MASK_IBAN | [BANK_ACCOUNT_NUMBER] |
| クレジットカード番号 | L_DATA_MASK_CREDIT_CARD_NUMBER | [CREDIT_CARD_NUMBER] |
| 電子メールアドレス | L_DATA_MASK_EMAIL_ADDRESS | [EMAIL_ADDRESS] |
| IPv4アドレス | L_DATA_MASK_IPV4 | .0/24 |
| IPv6アドレス | L_DATA_MASK_IPV6 | ::/48 |
| 国民ID(BSN) | L_DATA_MASK_NATIONAL_ID_BSN | [NATIONAL_ID] |
| 国民ID(DNIおよびNIF) | L_DATA_MASK_NATIONAL_ID_DNI_NIF | [NATIONAL_ID] |
| 国民識別番号(社会保障番号) | L_DATA_MASK_NATIONAL_ID_SSN | [NATIONAL_ID] |
| 電話番号 | L_DATA_MASK_PHONE_NUMBER | [PHONE_NUMBER] |
これらがそれらの検出パターンです。
| PIIカテゴリ | 検出パターン |
|---|---|
| 銀行口座番号(IBAN) | \b[A-Z]{2}\d{2}(?:\s?[A-Z0-9]){11,30}\b |
| クレジットカード番号 | \b(?:\d[ \-]?){13,19}\b |
| 電子メールアドレス | \b[A-Za-z0-9._%+\-]+@[A-Za-z0-9.\-]+\.[A-Za-z]{2,}\b |
| IPv4アドレス | \b(?:\d{1,3}\.){3}\d{1,3}\b |
| IPv6アドレス | (?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}\|(?:[0-9a-fA-F]{1,4}:)*[0-9a-fA-F]{0,4}::(?:[0-9a-fA-F]{1,4}:)*[0-9a-fA-F]{0,4} |
| 国民ID(BSN) | \b[1-9]\d{8}\b |
| 国民ID(DNIおよびNIF) | \b\d{8}[A-Z]\b |
| 国民識別番号(社会保障番号) | \b\d{3}-\d{2}-\d{4}\b |
| 電話番号 | (?<!\d)\+\d[\d\s\-().]{6,19}(?!\d) |
IPv4アドレスマスクとIPv6アドレスマスクを除き、すべてのシステムマスクは一致する部分全体をトークンに置き換えます。これらの2つのマスクは置換パターンも設定するため、ネットワークプレフィックスはそのまま残ります。 IPv4 アドレス マスクは置換パターン \.\d{1,3}$ を使用し、各アドレスをその /24 サブネットに置き換えます。 IPv6 アドレス マスクは、拡張アドレスと圧縮アドレスを検出し、それぞれを /48 プレフィックスに置き換えます。
銀行口座番号(IBAN)マスクは、あらゆる国のIBAN形式の銀行口座番号を検出します。この3種類の国民IDマスクは、それぞれ異なる国に対応している。オランダのBSN、スペインのDNIとNIF、そしてアメリカ合衆国のSSNである。
システムマスクは作成、更新、削除できません。また、カスタムマスクをシステムマスクに変換することもできません。
マスキング制限
マスクは、検出パターンに一致する部分のみを削除するため、一致しない値は変更されずにそのまま通過します。以下の5つの制限事項が適用されます。
-
電話番号マスクは国際形式にのみ一致します。そのパターンでは先頭に
+が必要です。国番号が記載されていない番号は、伏字処理されません。 -
クレジットカード番号マスクは、パターンに基づいて数字のグループのみを照合します。 Luhnチェックサムを実行しないため、カード番号ではない長い数字列にも一致してしまう可能性があります。
-
3種類の国民IDマスクは、オランダ、スペイン、アメリカ合衆国のみを対象としている。
-
メディアタイプがJSONまたはプレーンテキスト以外のレスポンスは、変更されずに返されます。
-
置換値が参照するキャプチャグループが、その置換パターンで定義されていない場合、応答がマスキングされる際にそのマスクはスキップされ、一致したデータはマスクされずに通過します。 Liferay DXPはリクエストを失敗させるのではなく警告をログに記録し、マスクを保存するとそれを受け入れます。これは、2つのパターンのみを検証するためです。両方のパターンを使用するマスクを、実際に使用する前にテストしてください。
マスキングはMCPサーバーツールの応答に適用されます。 Liferay DXPは、MCPサーバーが転送ツール呼び出しとともに送信するマスクリストがリクエストに含まれている場合にマスクを適用するため、Liferay DXPのREST APIを呼び出すユーザーはマスクされていないデータを直接受け取ることができます。マスキングはアクセス制御ではなく、プロファイルが呼び出せるツールを制限するものでもありません。
監査データマスクの変更
データマスクの作成、更新、削除は、プロファイルへのマスクの添付と削除と同様に、 監査ログに記録されます。
カスタムデータマスクを削除すると、それが関連付けられていたすべてのプロファイルから削除され、Liferay DXP はデータマスクが削除された理由を記録します。 削除された割り当てごとに。その理由は、削除に関する監査ログのエントリに記載されています。 MCPサーバープロファイルを削除すると、そのプロファイルの割り当ても同様に削除されます。削除理由は「 MCPサーバープロファイルが削除されました。」です。システムマスクは削除できないため、これはカスタムマスクにのみ適用されます。