Расширение Google Cloud Data Loss Prevention

Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X.
Информация

Версия: 1.5.2

Это расширение позволяет скрывать конфиденциальные данные в контенте и изображениях. Например, можно удалить номера кредитных карт, имена и номера социального страхования.

Требования

В нем приведена информация о том, как настроить и использовать это расширение. Прежде чем использовать расширение из прокси-сервера API с помощью правила ExtensionCallout, необходимо:

  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.

Примеры

В приведенных ниже примерах показано, как настроить поддержку действий расширения Cloud DLP с помощью правила ExtensionCallout.

Чтобы упростить использование этого примера кода, в нем применяется правило AssignMessage для установки значений переменных потока и получения значений ответов расширения для отображения в инструменте трассировки.

Маска со звездами

В этом примере действие 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). Это расширение настроено на маскировку значений на основе URL и EMAIL_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 используется для маскировки указанных типов текста с помощью названия инфотипа. Например, адрес электронной почты 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>

Следующее правило ExtensionCallout извлекает значение переменной request.content и передает его расширению Cloud DLP (в данном случае example-dlp). Это расширение настроено на маскировку значений на основе infoTypes URL и EMAIL_ADDRESS.

<?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. Это действие маскирует части text, указанные в свойстве infoTypes в конфигурации расширения.

Маскирование данных деликатного характера заменяет символы на другие, например звездочку (*) или решетку (#). Типы данных деликатного характера можно настроить в конфигурации расширения.

Синтаксис

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

Пример

В приведенном ниже примере входные данные для маскировки – это адрес электронной почты, хранящийся в переменной потока input.email.address. Чтобы поддерживать этот пример, расширение должно быть настроено на поддержку типа информации EMAIL_ADDRESS. Список типов данных можно найти в справочнике по детекторам типов данных.

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

В этом случае будет получен следующий результат:

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

Параметры запроса

Параметр Описание Тип По умолчанию Обязательно
Текст Текст, который нужно обезличить. Строка Нет. Да.
маска Символ, который будет использоваться для маскировки конфиденциальных данных. Строка Нет. Да.

Ответ

Входной текст, в котором значения указанных типов информации заменены на заданный символ. Пример:

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

deidentifyWithTemplate

Деидентифицируйте данные деликатного характера в текстовом контенте с помощью шаблона, в котором указано, какой текст нужно деидентифицировать и как это сделать.

Шаблоны позволяют отделить конфигурацию, например то, что вы проверяете и как обезличиваете, от реализации вызовов API. Шаблоны позволяют повторно использовать конфигурацию и обеспечивать единообразие для разных пользователей и наборов данных.

В шаблоне вы указываете infoTypes, которые нужно обезличить. Список типов данных приведен в справочнике по детекторам типов данных. Маска деидентификации скрывает части текста, указанные в свойстве 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. Строка Нет. Да.

Ответ

Входной текст, в котором значения указанных типов данных заменены на названия этих типов данных.

deidentifyWithType

Деидентифицирует данные деликатного характера в текстовом контенте, заменяя каждое найденное значение названием типа данных. Список типов данных приведен в справочнике по детекторам типов данных. Это действие маскирует части text, указанные в свойстве infoTypes в конфигурации расширения.

В следующем примере сервис распознает номер телефона, а затем заменяет его названием типа данных.

  • Введите текст:

    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. Список типов данных можно найти в справочнике по детекторам типов данных.

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

В этом случае будет получен следующий результат:

{"text":"EMAIL_ADDRESS"}

Параметры запроса

Параметр Описание Тип По умолчанию Обязательно
Текст Текст, который нужно обезличить. Строка Нет. Да.

Ответ

Входной текст, в котором значения указанных типов данных заменены на названия этих типов данных. Пример:

{"text":"EMAIL_ADDRESS"}

redactImage

Удалять текст, относящийся к одной из категорий infoType. Контент, который нужно удалить, обнаруживается и закрывается непрозрачным прямоугольником. Это действие маскирует части image_data, указанные в свойстве infoTypes в конфигурации расширения.

Список типов данных приведен в справочнике по детекторам типов данных.

Параметры запроса

<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 Значение конфигурации, относящееся к добавляемому расширению. См. Свойства этого пакета расширения. Никто Да

Свойства пакета расширения

Укажите значения для следующих свойств конфигурации, относящихся к этому расширению.

Свойство Описание По умолчанию Обязательно
Идентификатор проекта Идентификатор проекта GCP, для которого включен Cloud Data Loss Prevention API. Нет. Да.
infoTypes Типы данных деликатного характера. Если не указать тип, сервис обнаружит все встроенные типы. Список infoType, поддерживаемых сервисом DLP Google Cloud, приведен в справочнике по детекторам infoType. Нет. Нет.
учетные данные При вводе в консоли Apigee Edge это содержимое файла ключа сервисного аккаунта. При отправке через Management API это значение в кодировке base64, сгенерированное на основе файла ключа сервисного аккаунта. Нет. Да.