Google Cloud Data Loss Prevention 擴充功能

查看 Apigee Edge 說明文件。
前往 Apigee X說明文件
資訊

版本:1.5.1

你可以使用這項擴充功能遮蓋內容和圖片中的機密資料。舉例來說,您可以遮蓋信用卡號碼、姓名和身分證字號。

必要條件

這項內容提供設定與使用這項擴充功能的參考資源。透過 Extension 摘要政策使用 API Proxy 擴充功能之前,您必須:

  1. 為您的專案啟用 Google Cloud DLP API

  2. 針對您要為擴充功能指定的存取層級授予權限

  3. 使用 GCP 主控台為服務帳戶產生金鑰

  4. 使用設定參考資料新增及設定擴充功能時,請使用產生的金鑰 JSON 檔案內容。

關於 Cloud Data Loss Prevention (DLP)

Cloud Data Loss Prevention (DLP) API 可用來檢查文字、圖片和其他資料,識別及管理機密資料。

詳情請參閱「DLP 總覽」。如要瞭解這項擴充功能公開的 API,請參閱 Cloud Data Loss Prevention (DLP) API

範例

以下範例說明如何透過 Extension callout 政策,為 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>

下列 Extension callout 政策會擷取 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 政策會擷取擴充功能輸出內容,以便在追蹤工具中顯示。

<?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.com 替換為 EMAIL_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>

下列 Extension 摘要政策會擷取 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>deidentifyWithType</Action>
    <Input><![CDATA[{
        "text" : "{request.content}"
    }]]></Input>
    <Output>masked.output</Output>
</ConnectorCallout>

下列 AssignMessage 政策會擷取擴充功能輸出內容,以便在追蹤工具中顯示。

<?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>

本例的輸出內容為去識別化的要求內容。

要求參數

參數 說明 類型 預設 必填
文字 要去識別化的文字。這就是去識別化程序的運作。 物件 無。 是。
範本名稱 要使用的範本。這會是範本的路徑,格式如下: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 Proxy 時,請使用下列指令。如需使用 Apigee 控制台設定擴充功能的步驟,請參閱新增及設定擴充功能

常見擴充功能屬性

每個擴充功能都有下列屬性。

屬性 說明 預設 必要
name 您要為這項擴充功能設定的名稱。 相容
packageName Apigee Edge 指定的擴充功能套件名稱。 相容
version 擴充功能的擴充功能套件版本號碼。 相容
configuration 您要新增的擴充功能專屬的設定值。請參閱「這個擴充功能套件的屬性」一文 相容

這個擴充功能套件的屬性

指定這個擴充功能專用的下列設定屬性值。

屬性 說明 預設 必填
專案 ID 已啟用 Cloud Data Loss Prevention API 的 GCP 專案 ID。 無。 是。
infoTypes 機密資料的資訊類型。如果省略,服務會偵測所有內建類型。如需 Google Cloud DLP 服務支援的 infoType 清單,請參閱 InfoType 偵測工具參考資料 無。 編號
憑證 您在 Apigee Edge 控制台中輸入的服務帳戶金鑰檔案內容。透過 Management API 傳送時,這是從服務帳戶金鑰檔案產生的 Base64 編碼值。 無。 是。