Extension Google Cloud Data Loss Prevention

Vous consultez la documentation d'Apigee Edge.
Consultez la documentation Apigee X.
en savoir plus

Version: 1.5.1

Utilisez cette extension pour masquer les données sensibles dans le contenu et les images. Par exemple, vous pouvez masquer les numéros de carte de crédit, les noms et les numéros de sécurité sociale.

Conditions préalables

Ce contenu fournit une documentation de référence sur la configuration et l'utilisation de cette extension. Avant d'utiliser l'extension à partir d'un proxy d'API avec la règle ExtensionCallout, vous devez:

  1. Activez l'API Google Cloud DLP pour votre projet.

  2. Accordez l'autorisation au niveau d'accès que vous souhaitez pour l'extension.

  3. Utilisez la console GCP pour générer une clé pour le compte de service.

  4. Utilisez le contenu du fichier JSON de clé obtenu lorsque vous ajoutez et configurez l'extension à l'aide des documents de référence de configuration.

À propos de Cloud Data Loss Prevention (DLP)

Cloud Data Loss Prevention (DLP) est une API qui permet d'inspecter du texte, des images et d'autres données afin d'identifier et de gérer les données sensibles.

Pour en savoir plus, consultez la Présentation de la protection contre la perte de données. Pour en savoir plus sur l'API exposée par cette extension, consultez la page API Cloud Data Loss Prevention (DLP).

Samples

Les exemples suivants montrent comment configurer la prise en charge des actions de l'extension Cloud DLP à l'aide de la règle ExtensionCallout.

Pour faciliter l'essai de cet exemple de code, ces exemples utilisent une règleAssignMessage pour définir les valeurs des variables de flux et récupérer les valeurs de réponse de l'extension à afficher dans l'outil de traçage.

Masque avec des étoiles

Cet exemple utilise l'action deidentifyWithMask pour masquer les types de texte spécifiés à l'aide d'un caractère spécifié dans la règle (ici, le caractère *).

La règle "AssignMessage" suivante définit la variable request.content à titre d'illustration. En règle générale, vous récupérez le contenu de la requête à partir de la requête du client.

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

La règle ExtensionCallout suivante récupère la valeur de la variable "request.content" et la transmet à une extension Cloud DLP (ici, appelée example-dlp). Cette extension a été configurée pour masquer les valeurs en fonction des infoTypes URL et 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>deidentifyWithMask</Action>
    <Input><![CDATA[{
        "text" : "{request.content}",
        "mask" : "*"
    }]]></Input>
    <Output>masked.output</Output>
</ConnectorCallout>

La règle "AssignMessage" suivante récupère la sortie de l'extension pour l'afficher dans l'outil 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>

Voici un exemple de sortie de ce code.

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

Masque avec nom

Cet exemple utilise l'action deidentifyWithType pour masquer les types de texte spécifiés à l'aide du nom de l'infoType lui-même. Par exemple, l'adresse e-mail gladys@example.com sera remplacée par EMAIL_ADDRESS.

La règle "AssignMessage" suivante définit la variable request.content à titre d'illustration. En règle générale, vous récupérez le contenu de la requête à partir de la requête du client.

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

La règle ExtensionCallout suivante récupère la valeur de la variable request.content et la transmet à une extension Cloud DLP (ici, appelée example-dlp). Cette extension a été configurée pour masquer les valeurs en fonction des infoTypes URL et 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>

La règle "AssignMessage" suivante récupère la sortie de l'extension pour l'afficher dans l'outil 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>

Voici un exemple de sortie de ce code.

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

Actions

deidentifyWithMask

Anonymisez les données sensibles dans text et masquez-les à l'aide du caractère mask. Cette action masque les parties de text spécifiées par la propriété infoTypes dans la configuration de l'extension.

Le masquage des données sensibles remplace les caractères par un symbole, comme l'astérisque (*) ou le hachage (#). Les types de données sensibles peuvent être configurés dans la configuration de l'extension.

Syntaxe

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

Exemple

Dans l'exemple suivant, l'entrée du masque est une adresse e-mail stockée dans une variable de flux input.email.address. Pour prendre en charge cet exemple spécifique, cette extension doit avoir été configurée pour prendre en charge l'infoType EMAIL_ADDRESS. Pour obtenir la liste des infoTypes, consultez la documentation de référence sur les détecteurs d'infoTypes.

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

La sortie de cet exemple serait la suivante:

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

Paramètres de requête

Paramètres Description Type Par défaut Obligatoire
text Texte à anonymiser. Chaîne Aucune Oui.
masque Caractère permettant de masquer les données sensibles. Chaîne Aucune Oui.

Réponse

Texte d'entrée avec les valeurs des infoTypes spécifiés remplacés par le caractère spécifié. Par exemple,

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

deidentifyWithTemplate

Anonymisez les données sensibles dans le contenu textuel à l'aide d'un modèle qui configure le texte à anonymiser et la façon de les gérer.

Les modèles sont utiles pour dissocier une configuration, par exemple pour identifier les éléments que vous inspectez et pour supprimer l'identification de celle-ci de l'implémentation de vos appels d'API. Les modèles permettent de réutiliser une configuration et d'assurer la cohérence entre les utilisateurs et les ensembles de données.

Dans votre modèle, vous allez spécifier les infoTypes représentant le contenu à anonymiser. Pour obtenir la liste des infoTypes, consultez la documentation de référence sur les détecteurs d'infoTypes. L'anonymisation masque les parties de texte spécifiées par la propriété infoTypes du modèle.

Syntaxe

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

Exemple

Dans l'exemple suivant, l'entrée à anonymiser est le corps de la requête porté par la variable de flux request.content.

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

Dans cet exemple, la sortie correspond au contenu de la requête anonymisé.

Paramètres de requête

Paramètres Description Type Par défaut Obligatoire
text Texte à anonymiser. C'est ce sur quoi agit le processus d'anonymisation. Objet Aucune Oui.
templateName Modèle à utiliser. Il s'agira d'un chemin d'accès au modèle au format suivant: projects or organizations/PROJECT_ID/deidentifyTemplates/TEMPLATE_ID. Lorsque vous créez le modèle avec l'API Google, utilisez la valeur de la propriété name de la réponse en tant que templateName. Chaîne Aucune Oui.

Réponse

Texte d'entrée avec les valeurs des infoTypes spécifiés remplacés par les noms des infoTypes.

deidentifyWithType

Anonymisez les données sensibles dans le contenu textuel, en remplaçant chaque valeur correspondante par le nom de l'infoType. Pour obtenir la liste des infoTypes, consultez la documentation de référence sur les détecteurs d'infoTypes. Cette action masque les parties de text spécifiées par la propriété infoTypes dans la configuration de l'extension.

Dans l'exemple suivant, le numéro de téléphone est reconnu par le service, puis remplacé par le nom de l'infoType lui-même.

  • Texte d'entrée:

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

  • Texte du résultat:

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

Syntaxe

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

Exemple

Dans l'exemple suivant, l'entrée du masque est une adresse e-mail stockée dans une variable de flux input.email.address. Pour prendre en charge cet exemple spécifique, cette extension doit avoir été configurée pour prendre en charge l'infoType EMAIL_ADDRESS. Pour obtenir la liste des infoTypes, consultez la documentation de référence sur les détecteurs d'infoTypes.

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

La sortie de cet exemple serait la suivante:

{"text":"EMAIL_ADDRESS"}

Paramètres de requête

Paramètres Description Type Par défaut Obligatoire
text Texte à anonymiser. Chaîne Aucune Oui.

Réponse

Texte d'entrée avec les valeurs des infoTypes spécifiés remplacés par les noms des infoTypes. Par exemple,

{"text":"EMAIL_ADDRESS"}

redactImage

Masquez le texte appartenant à l'une des catégories d'infoTypes. Le contenu masqué est détecté et masqué à l'aide d'un rectangle opaque. Cette action masque les parties de image_data spécifiées par la propriété infoTypes dans la configuration de l'extension.

Pour obtenir la liste des infoTypes, consultez la documentation de référence sur les détecteurs d'infoTypes.

Paramètres de requête

<Action>redactImage</Action>
<Input><![CDATA[{
  "image_data" : "base64-encoded-image-to-analyze",
  "image_type" : "type-of-image"
}]]></Input>
Paramètres Description Type Par défaut Obligatoire
image_data Données d'image encodées en base64. Chaîne Aucune Oui.
image_type Constante du type d'image. Les valeurs disponibles sont IMAGE_JPEG, IMAGE_BMP, IMAGE_PNG et IMAGE_SVG. Chaîne Aucune Oui.

Réponse

Image avec texte masqué.

Documentation de référence sur la configuration

Utilisez le code suivant lorsque vous configurez et déployez cette extension pour l'utiliser dans des proxys d'API. Pour savoir comment configurer une extension à l'aide de la console Apigee, consultez Ajouter et configurer une extension.

Propriétés d'extension courantes

Les propriétés suivantes sont présentes pour chaque extension.

Propriété Description Par défaut Obligatoire
name Nom que vous attribuez à cette configuration de l'extension. Aucune Oui
packageName Nom du package d'extension tel qu'indiqué par Apigee Edge. Aucune Oui
version Numéro de version du package d'extension à partir duquel vous configurez une extension. Aucune Oui
configuration Valeur de configuration spécifique à l'extension que vous ajoutez. Consultez Propriétés de ce package d'extension. Aucune Oui

Propriétés de ce package d'extension

Spécifiez les valeurs des propriétés de configuration suivantes spécifiques à cette extension.

Propriété Description Par défaut Obligatoire
projectId ID du projet GCP pour lequel l'API Cloud Data Loss Prevention est activée. Aucune Oui.
infoTypes Types d'informations des données sensibles. Si cette valeur est omise, le service détecte tous les types intégrés. Pour obtenir la liste des infoTypes acceptés par le service Google Cloud DLP, consultez la documentation de référence sur les détecteurs d'infoTypes. Aucune Non.
identifiants Une fois saisi dans la console Apigee Edge, il s'agit du contenu du fichier de clé de votre compte de service. Lorsqu'elle est envoyée via l'API de gestion, il s'agit d'une valeur encodée en base64 générée à partir du fichier de clé du compte de service. Aucune Oui.