Extensão de Prevenção contra perda de dados do Google Cloud

Você está lendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X
.info

Versão: 1.5.3

Use essa extensão para ocultar dados sensíveis de conteúdo e imagens. Por exemplo, é possível editar números de cartão de crédito, nomes e números de CPF ou CNPJ.

Pré-requisitos

Este conteúdo fornece uma referência para configurar e usar essa extensão. Antes de usar a extensão de um proxy de API usando a política ExtensionCallout, você precisa:

  1. Ativar a API DLP do Google Cloud para seu projeto.

  2. Conceder permissão para o nível de acesso que você quer para a extensão.

  3. Usar o console do GCP para gerar uma chave para a conta de serviço.

  4. Usar o conteúdo do arquivo JSON de chave resultante ao adicionar e configurar a extensão usando a referência de configuração.

Sobre o Cloud Data Loss Prevention (DLP)

O Cloud Data Loss Prevention (DLP) é uma API para inspecionar textos, imagens e outros dados para identificar e gerenciar dados sensíveis.

Para mais informações, consulte a visão geral do DLP. Para referência à API que essa extensão expõe, consulte API Cloud Data Loss Prevention (DLP).

Amostras

Os exemplos a seguir ilustram como configurar o suporte para ações de extensão do Cloud DLP usando a política ExtensionCallout.

Para facilitar o teste desse exemplo de código, esses exemplos usam uma política AssignMessage para definir valores de variáveis de fluxo e recuperar valores de resposta de extensão para exibição na ferramenta de trace.

Máscara com estrelas

Este exemplo usa a ação deidentifyWithMask para mascarar os tipos de texto especificados com um caractere especificado na política. Aqui, o caractere *.

A política AssignMessage a seguir define a variável request.content para fins de ilustração. Normalmente, você recupera o conteúdo da solicitação da solicitação do cliente.

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

A política ExtensionCallout a seguir recupera o valor da variável request.content e a transmite para uma extensão do Cloud DLP (aqui, chamada example-dlp). Essa extensão foi configurada para mascarar valores com base nos URL e 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>

A política AssignMessage a seguir recupera a saída da extensão para exibição na ferramenta de 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>

Confira abaixo um exemplo de saída desse código.

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

Máscara com nome

Este exemplo usa a ação deidentifyWithType para mascarar os tipos de texto especificados com o próprio nome do infoType. Por exemplo, ele substituiria o endereço de e-mail gladys@example.com por EMAIL_ADDRESS.

A política AssignMessage a seguir define a variável request.content para fins de ilustração. Normalmente, você recupera o conteúdo da solicitação da solicitação do cliente.

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

A política ExtensionCallout a seguir recupera o valor da variável request.content e a transmite para uma extensão do Cloud DLP (aqui, chamada example-dlp). Essa extensão foi configurada para mascarar valores com base nos URL e 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>deidentifyWithType</Action>
    <Input><![CDATA[{
        "text" : "{request.content}"
    }]]></Input>
    <Output>masked.output</Output>
</ConnectorCallout>

A política AssignMessage a seguir recupera a saída da extensão para exibição na ferramenta de 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>

Confira abaixo um exemplo de saída desse código.

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

Ações

deidentifyWithMask

Desidentifique os dados sensíveis do text e mascare os dados com o caractere mask. Essa ação mascara as partes do text especificadas pela propriedade infoTypes na configuração da extensão.

O mascaramento de dados sensíveis substitui caracteres por um símbolo, como um asterisco (*) ou um hash (#). Os tipos de dados sensíveis podem ser configurados na configuração da extensão.

Sintaxe

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

Exemplo

No exemplo a seguir, a entrada para mascarar é um endereço de e-mail armazenado em uma variável de fluxo input.email.address. Para oferecer suporte a esse exemplo específico, essa extensão precisa ter sido configurada para oferecer suporte ao infoType EMAIL_ADDRESS. Para uma lista de infoTypes, consulte Referência do detector de infoType.

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

A saída desse exemplo seria a seguinte:

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

Parâmetros de solicitação

Parâmetro Descrição Tipo Padrão Obrigatório
texto Texto a ser desidentificado. String Nenhum. Sim.
máscara Caractere a ser usado para mascarar dados sensíveis. String Nenhum. Sim.

Resposta

O texto de entrada com valores dos infoTypes especificados substituídos pelo caractere especificado. Por exemplo,

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

deidentifyWithTemplate

Desidentifique dados sensíveis em conteúdo de texto usando um modelo que configura qual texto desidentificar e como processá-lo.

Os modelos são úteis para desassociar a configuração. Por exemplo, o que você inspeciona e como desidentifica esse item da implementação de suas chamadas de API. Os modelos fornecem uma maneira de reutilizar a configuração e ter consistência entre usuários e conjuntos de dados.

No modelo, especifique infoTypes que representam o conteúdo a ser desidentificado. Para uma lista de infoTypes, consulte Referência do detector de infoType. O mascaramento desidentifica as partes do texto especificadas pela propriedade infoTypes no modelo.

Sintaxe

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

Exemplo

No exemplo a seguir, a entrada a ser desidentificada é o corpo da solicitação transmitido pela request.content variável de fluxo.

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

A saída desse exemplo seria o conteúdo da solicitação desidentificada.

Parâmetros de solicitação

Parâmetro Descrição Tipo Padrão Obrigatório
texto O texto a ser desidentificado. É isso que o processo de desidentificação opera. Objeto Nenhum. Sim.
templateName O modelo a ser usado. Esse será um caminho para o modelo no seguinte formato: projects or organizations/PROJECT_ID/deidentifyTemplates/TEMPLATE_ID. Ao criar o modelo com a API do Google, use o valor da propriedade name da resposta como templateName. String Nenhum. Sim.

Resposta

O texto de entrada com valores dos infoTypes especificados substituídos pelos nomes do infoType.

deidentifyWithType

Desidentifique dados sensíveis em conteúdo de texto, substituindo cada valor correspondente pelo nome do infoType. Para uma lista de infoTypes, consulte Referência do detector de infoType. Essa ação mascara as partes do text especificadas pela propriedade infoTypes na configuração da extensão.

No exemplo a seguir, o número de telefone é reconhecido pelo serviço e substituído pelo nome do próprio infoType.

  • Texto de entrada:

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

  • Texto de resultado:

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

Sintaxe

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

Exemplo

No exemplo a seguir, a entrada para mascarar é um endereço de e-mail armazenado em uma variável de fluxo input.email.address. Para oferecer suporte a esse exemplo específico, essa extensão precisa ter sido configurada para oferecer suporte ao infoType EMAIL_ADDRESS. Para uma lista de infoTypes, consulte Referência do detector de infoType.

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

A saída desse exemplo seria a seguinte:

{"text":"EMAIL_ADDRESS"}

Parâmetros de solicitação

Parâmetro Descrição Tipo Padrão Obrigatório
texto O texto a ser desidentificado. String Nenhum. Sim.

Resposta

O texto de entrada com valores dos infoTypes especificados substituídos pelos nomes do infoType. Por exemplo,

{"text":"EMAIL_ADDRESS"}

redactImage

Edite o texto que se enquadra em uma das categorias de infoType. O conteúdo editado é detectado e oculto com um retângulo opaco. Essa ação mascara as partes do image_data especificadas pela propriedade infoTypes na configuração da extensão.

Para uma lista de infoTypes, consulte Referência do detector de infoType.

Parâmetros de solicitação

<Action>redactImage</Action>
<Input><![CDATA[{
  "image_data" : "base64-encoded-image-to-analyze",
  "image_type" : "type-of-image"
}]]></Input>
Parâmetro Descrição Tipo Padrão Obrigatório
image_data Os dados de imagem codificados em base64. String Nenhum. Sim.
image_type Constante do tipo de imagem. Os valores disponíveis são IMAGE_JPEG, IMAGE_BMP, IMAGE_PNG, IMAGE_SVG. String Nenhum. Sim.

Resposta

A imagem com texto editado.

Referência de configuração

Use o seguinte ao configurar e implantar essa extensão para uso em proxies de API. Para conferir as etapas de configuração de uma extensão usando o console do Apigee, consulte Como adicionar e configurar uma extensão.

Propriedades comuns de extensão

As propriedades a seguir estão presentes para cada extensão.

Propriedade Descrição Padrão Obrigatório
name Nome que será dado a esta configuração da extensão. Nenhum Sim
packageName Nome do pacote de extensão fornecido pelo Apigee Edge. Nenhum Sim
version Número da versão do pacote de extensão a partir do qual você está configurando uma extensão. Nenhum Sim
configuration Valor de configuração específico da extensão que você está adicionando. Consulte Propriedades para este pacote de extensão. Nenhum Sim

Propriedades deste pacote de extensão

Especifique valores para as seguintes propriedades de configuração específicas dessa extensão.

Propriedade Descrição Padrão Obrigatório
projectId O ID do projeto do GCP para o qual a API Cloud Data Loss Prevention está ativada. Nenhum. Sim.
infoTypes Tipos de dados sensíveis. Se omitido, o serviço vai detectar todos os tipos integrados. Para uma lista de infoTypes com suporte do serviço Cloud DLP do Google, consulte Referência do detector de infoType. Nenhum. Não.
credenciais Quando inserido no console do Apigee Edge, esse é o conteúdo do arquivo de chave da conta de serviço. Quando enviado pela API Management, é um valor codificado em base64 gerado no arquivo de chave da conta de serviço. Nenhum. Sim.