Google Cloud Data Loss Prevention 拡張機能

現在、Apigee Edge のドキュメントを表示しています。
Apigee X のドキュメントをご確認ください
情報

バージョン: 1.5.1

この拡張機能を使用すると、コンテンツや画像から機密データを見えにくくできます。たとえば、クレジット カード番号、名前、社会保障番号を秘匿化できます。

前提条件

ここでは、この拡張機能の構成と使用について説明します。ExtensionCallout ポリシーで API プロキシから拡張機能を使用する前に、次のことを行う必要があります。

  1. プロジェクトで Google Cloud DLP API を有効にします

  2. 拡張機能に必要なアクセスレベルに権限を付与します。

  3. GCP Console を使用してサービス アカウント キーを生成します

  4. 構成リファレンスを使用して拡張機能を追加および構成するときは、生成されたキー JSON ファイルの内容を使用します。

Cloud Data Loss Prevention(DLP)について

Cloud Data Loss Prevention(DLP)は、テキストや画像などのデータを検査して機密データを識別、管理するための API です。

詳細については、DLP の概要をご覧ください。この拡張機能が公開する API については、Cloud Data Loss Prevention(DLP)API をご覧ください。

サンプル

次の例は、ExtensionCallout ポリシーを使用して Cloud DLP 拡張機能アクションのサポートを構成する方法を示しています。

このサンプルコードを簡単に試せるように、以下の例では、AssignMessage ポリシーを使用して、フロー変数の値を設定し、Trace ツールに表示する拡張機能のレスポンス値を取得しています。

星でマスク

この例では、deidentifyWithMask アクションを使用して、指定されたタイプのテキストをポリシーで指定された文字(ここでは * 文字)でマスクします。

次の AssignMessage ポリシーは、説明のために request.content 変数を設定します。通常は、クライアントのリクエストからリクエストの内容を取得します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Set-Variable">
    <DisplayName>Set Variable</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <AssignVariable>
        <Name>request.content</Name>
        <Value>Visit my site at https://example.com. Or contact me at gladys@example.com.</Value>
    </AssignVariable>
</AssignMessage>

次の ExtensionCallout ポリシーは、request.content 変数の値を取得して、Cloud DLP 拡張機能(ここでは example-dlp)に渡します。この拡張機能は、URLEMAIL_ADDRESS infoTypes に基づいて値をマスクするように構成されています。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Data-Loss-Extension-Callout">
    <DisplayName>Data Loss Prevention Extension Callout</DisplayName>
    <Connector>example-dlp</Connector>
    <Action>deidentifyWithMask</Action>
    <Input><![CDATA[{
        "text" : "{request.content}",
        "mask" : "*"
    }]]></Input>
    <Output>masked.output</Output>
</ConnectorCallout>

次の AssignMessage ポリシーは、Trace ツールに表示する拡張機能の出力を取得します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Get-DLP-Output">
    <DisplayName>Get DLP Output</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{masked.output}</Payload>
    </Set>
</AssignMessage>

このコードの出力例を次に示します。

{"text":"Visit my site at ******************* Or contact me at *****************."}

名前でマスク

この例では、deidentifyWithType アクションを使用して、指定したタイプのテキストを infoType 名自体でマスクします。たとえば、メールアドレス gladys@example.comEMAIL_ADDRESS に置き換えます。

次の AssignMessage ポリシーは、説明のために request.content 変数を設定します。通常は、クライアントのリクエストからリクエストの内容を取得します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Set-Variable">
    <DisplayName>Set Variable</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <AssignVariable>
        <Name>request.content</Name>
        <Value>Visit my site at https://example.com. Or contact me at gladys@example.com.</Value>
    </AssignVariable>
</AssignMessage>

次の ExtensionCallout ポリシーは、request.content 変数値を取得して Cloud DLP 拡張機能(ここでは example-dlp と呼びます)に渡します。この拡張機能は、URLEMAIL_ADDRESSinfoTypes に基づいて値をマスクするように構成されています。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Data-Loss-Extension-Callout">
    <DisplayName>Data Loss Prevention Extension Callout</DisplayName>
    <Connector>example-dlp</Connector>
    <Action>deidentifyWithType</Action>
    <Input><![CDATA[{
        "text" : "{request.content}"
    }]]></Input>
    <Output>masked.output</Output>
</ConnectorCallout>

次の AssignMessage ポリシーは、Trace ツールに表示する拡張機能の出力を取得します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Get-DLP-Output">
    <DisplayName>Get DLP Output</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{masked.output}</Payload>
    </Set>
</AssignMessage>

このコードの出力例を次に示します。

{"text":"Visit my site at [URL] Or contact me at [EMAIL_ADDRESS]."}

アクション

deidentifyWithMask

text の機密データを匿名化し、そのデータを mask 文字でマスクします。このアクションは、拡張機能の構成infoTypes プロパティで指定された text の部分をマスクします。

機密データのマスキングでは、文字がアスタリスク(*)やハッシュ(#)などの記号に置き換えられます。機密データの種類は、拡張機能の構成で構成できます。

構文

<Action>deidentifyWithMask</Action>
<Input><![CDATA[{
  "text" : "text-to-deidentify",
  "mask" : "masking-character"
}]]></Input>

次の例では、マスクする入力は input.email.address フロー変数に格納されたメールアドレスです。この特定の例をサポートするには、この拡張機能が EMAIL_ADDRESS infoType をサポートするように構成されている必要があります。infoType のリストについては、infoType 検出器リファレンスをご覧ください。

<Action>deidentifyWithMask</Action>
<Input><![CDATA[{
    "text" : "{input.email.address}",
    "mask" : "*"
}]]></Input>
<Output>masked.output</Output>

この例の出力は次のようになります。

{"text":"*****************"}

リクエスト パラメータ

パラメータ 説明 種類 デフォルト 必須
指定しています 匿名化するテキスト。 文字列 なし。 はい、できます。
マスク 機密データのマスキングに使用する文字。 文字列 なし。 はい、できます。

レスポンス

指定された infoType の値を含む入力テキストが、指定された文字に置き換えられます。たとえば

{"text":"*********"}

deidentifyWithTemplate

匿名化するテキストとその処理方法を構成するテンプレートを使用して、テキスト コンテンツ内のセンシティブ データを匿名化します。

テンプレートは、検査対象や匿名化の方法などの構成を API 呼び出しの実装から分離するのに役立ちます。テンプレートを使用すると、構成を再利用して、ユーザーとデータセット間の整合性を保つことができます。

テンプレートには、匿名化するコンテンツを表す infoTypes を指定します。infoType のリストについては、infoType 検出器リファレンスをご覧ください。匿名化により、テンプレートの infoTypes プロパティで指定されたテキスト部分がマスクされます。

構文

<Action>deidentifyWithTemplate</Action>
<Input><![CDATA[{
  "text" : "text-to-deidentify"
  "templateName" : "path-to-template"
}]]></Input>

次の例では、匿名化する入力は request.content フロー変数で処理されるリクエスト本文です。

<Action>deidentifyWithTemplate</Action>
<Input><![CDATA[{
    "text" : "{request.content}"
    "templateName" : "projects/[PROJECT_ID]/deidentifyTemplates/1231258663242"
}]]></Input>

この例の出力は匿名化されたリクエスト コンテンツです。

リクエスト パラメータ

パラメータ 説明 種類 デフォルト 必須
指定しています 匿名化するテキスト。匿名化プロセスはこの対象で行われます。 オブジェクト なし。 はい、できます。
templateName 使用するテンプレート。これはテンプレートへのパスで、形式は projects or organizations/PROJECT_ID/deidentifyTemplates/TEMPLATE_ID です。Google APIテンプレートを作成する場合は、レスポンスの name プロパティ値を templateName として使用します。 文字列 なし。 はい、できます。

レスポンス

指定された infoType の値を含む入力テキストが、infoType 名に置き換えられます。

deidentifyWithType

テキスト コンテンツ内のセンシティブ データを匿名化し、一致した各値を infoType の名前に置き換えます。infoType のリストについては、infoType 検出器リファレンスをご覧ください。このアクションは、拡張機能の構成infoTypes プロパティで指定された text の部分をマスクします。

次の例では、電話番号がサービスによって認識され、infoType 自体の名前に置き換えられます。

  • 入力テキスト:

    John Smith, 123 Main St, Seattle, WA 98122, 206-555-0123.

  • 結果テキスト:

    John Smith, 123 Main St, Seattle, WA 98122, PHONE_NUMBER.

構文

<Action>deidentifyWithType</Action>
<Input><![CDATA[{
  "text" : "text-to-deidentify"
}]]></Input>

次の例では、マスクする入力は input.email.address フロー変数に格納されたメールアドレスです。この特定の例をサポートするには、この拡張機能が EMAIL_ADDRESS infoType をサポートするように構成されている必要があります。infoType のリストについては、infoType 検出器リファレンスをご覧ください。

<Action>deidentifyWithType</Action>
<Input><![CDATA[{
    "text" : "{input.email.address}"
}]]></Input>

この例の出力は次のようになります。

{"text":"EMAIL_ADDRESS"}

リクエスト パラメータ

パラメータ 説明 種類 デフォルト 必須
指定しています 匿名化するテキスト。 文字列 なし。 はい、できます。

レスポンス

指定された infoType の値を含む入力テキストが、infoType 名に置き換えられます。たとえば

{"text":"EMAIL_ADDRESS"}

redactImage

infoType カテゴリのいずれかに該当するテキストを秘匿化します。秘匿化されたコンテンツが検出され、不透明な長方形で隠されます。このアクションは、拡張機能の構成infoTypes プロパティで指定された image_data の部分をマスクします。

infoType のリストについては、infoType 検出器リファレンスをご覧ください。

リクエスト パラメータ

<Action>redactImage</Action>
<Input><![CDATA[{
  "image_data" : "base64-encoded-image-to-analyze",
  "image_type" : "type-of-image"
}]]></Input>
パラメータ 説明 種類 デフォルト 必須
image_data base64 でエンコードされた画像データ。 文字列 なし。 はい、できます。
image_type 画像タイプの定数。有効な値は、IMAGE_JPEG、IMAGE_BMP、IMAGE_PNG、IMAGE_SVG です。 文字列 なし。 はい、できます。

レスポンス

テキストを秘匿化した画像。

構成リファレンス

API プロキシで使用するためにこの拡張機能を構成およびデプロイする場合は、以下を使用します。Apigee コンソールを使用して拡張機能を構成する手順については、拡張機能の追加と構成をご覧ください。

共通の拡張プロパティ

すべての拡張機能には次のプロパティがあります。

プロパティ 説明 デフォルト 必須
name この拡張機能に付ける名前。 なし
packageName Apigee Edge から提供された拡張機能パッケージの名前。 なし
version 拡張機能を構成する拡張機能パッケージのバージョン番号。 なし
configuration 追加する拡張機能に固有の構成値。この拡張機能パッケージのプロパティをご覧ください。 なし

この拡張機能パッケージのプロパティ

この拡張機能に固有の次の構成プロパティの値を指定します。

プロパティ 説明 デフォルト 必須
projectId Cloud Data Loss Prevention API が有効になっている GCP プロジェクトの ID。 なし。 はい、できます。
infoTypes 機密データの情報タイプ。省略すると、サービスはすべての組み込みタイプを検出します。Google Cloud DLP サービスでサポートされる infoTypes の一覧については、infoType 検出器リファレンスをご覧ください。 なし。 違います
証明書 これは、Apigee Edge コンソールで入力する場合、サービス アカウント キーファイルの内容です。Management API 経由で送信される場合は、サービス アカウント キー ファイルから生成された、Base64 エンコードの値です。 なし。 はい、できます。