Google Cloud Data Loss Prevention 拡張機能

バージョン: 1.3.0

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

前提条件

ここでは、この拡張機能の構成と使用に関するリファレンスを提供します。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_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>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":"*****************"}

リクエスト パラメータ

パラメータ 説明 デフォルト 必須
text 匿名化するテキスト。 文字列 なし
mask 機密データをマスクするために使用する文字。 文字列 なし

レスポンス

入力テキストの値は、指定された infoTypes から指定文字に置き換えられます。次に例を示します。

{"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>

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

リクエスト パラメータ

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

レスポンス

入力テキストの値は、指定された infoTypes から 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"}

リクエスト パラメータ

パラメータ 説明 デフォルト 必須
text 匿名化するテキスト。 文字列 なし

レスポンス

入力テキストの値は、指定された infoTypes から 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 Console で拡張機能を構成する手順については、拡張機能の追加と構成をご覧ください。

拡張機能の共通プロパティ

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

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

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

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

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