Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Regulären benutzerdefinierten Wörterbuchdetektor erstellen

Benutzerdefinierte Wörterbücher bieten die einfache, aber leistungsstarke Möglichkeit, eine Liste von Wörtern oder Wortgruppen abzugleichen. Dies lässt sich als eigener einmaliger Detektor oder aber zum Erstellen einer Ausnahmeliste für integrierte Detektoren nutzen. Sie können auch benutzerdefinierte Wörterbücher verwenden, um integrierte infoType-Detektoren so zu ergänzen, dass zusätzliche Ergebnisse gefunden werden.

Anatomie eines benutzerdefinierten infoType-Wörterbuchdetektors

Wie in der API-Übersicht dargestellt, definieren Sie zum Erstellen eines benutzerdefinierten infoType-Wörterbuchdetektors ein Objekt CustomInfoType, das Folgendes enthält:

  • Der Name, den Sie dem benutzerdefinierten infoType-Detektor innerhalb eines InfoType-Objekts geben möchten.
  • Einen optionalen Wert Likelihood. Wenn Sie diesen auslassen, wird bei Übereinstimmungen mit den Wörterbuchelementen die Standardwahrscheinlichkeit POSSIBLE zurückgegeben.
  • Optionale Objekte DetectionRule oder Hotword-Regeln. Diese Regeln passen die Wahrscheinlichkeit von Ergebnissen innerhalb einer gegebenen Nähe von angegebenen Hotwords an. Weitere Informationen zu Hotword-Regeln finden Sie im Abschnitt Übereinstimmungswahrscheinlichkeit anpassen.
  • Ein Dictionary, entweder als WordList mit einer Liste von Wörtern, nach denen gesucht werden soll, oder als CloudStoragePath zu einer einzelnen Textdatei mit einer durch Zeilenumbruch getrennten Liste von Wörtern, nach denen gesucht werden soll.

Ein benutzerdefinierter infoType-Detektor für Wörterbücher, der alle optionalen Komponenten enthält, sieht als JSON-Objekt so aus: (Diese JSON-Datei enthält einen Pfad zu einer Wörterbuchtextdatei, die in Cloud Storage gespeichert ist. Eine Inline-Wortliste finden Sie weiter unten in diesem Thema im Abschnitt Beispiele.)

{
  "customInfoTypes":[
    {
      "infoType":{
        "name":"[CUSTOM_INFOTYPE_NAME]"
      },
      "likelihood":"[LIKELIHOOD_VALUE]",
      "detectionRules":[
        {
          "hotwordRule":{
            [HOTWORDRULE_OBJECT]
          }
        },
        ...
      ],
      "dictionary":
      {
        "cloudStoragePath":
        {
          "path": "gs://[PATH_TO_TXT_FILE]"
        }
      }
    }
  ],
  ...
}

Gespeicherte benutzerdefinierte Wörterbücher

Cloud DLP unterstützt außerdem gespeicherte benutzerdefinierte Wörterbücher zum Prüfen von Speicher-Repositories. Mit einem gespeicherten benutzerdefinierten Wörterbuch kann Cloud DLP beispielsweise nach mehreren hundert Millionen von Nutzernamen, E-Mail-Adressen oder anderen Strings suchen, wie unter "Details zum Wörterbuchabgleich" definiert. Darüber hinaus enthält Cloud DLP integrierte Funktionen, mit denen Sie Ihr gespeichertes benutzerdefiniertes Wörterbuch bei Bedarf programmatisch neu erstellen können.

Gespeicherte benutzerdefinierte Wörterbücher werden aus einer Sammlung von Wortgruppen erstellt, die sich entweder in einem Cloud Storage-Bucket oder in einer BigQuery-Tabelle befinden, die Ihrer Organisation gehört. Wenn Sie zum ersten Mal ein gespeichertes benutzerdefiniertes Wörterbuch erstellen, geben Sie die zu suchenden Wortgruppen in Cloud Storage oder BigQuery ein. Generieren Sie anschließend mithilfe von Cloud DLP das gespeicherte benutzerdefinierte Wörterbuch. Das benutzerdefinierte Wörterbuch wird in Cloud Storage gespeichert. Wenn Sie dem Cloud Storage-Bucket oder der BigQuery-Tabelle, in dem bzw. der Sie sie speichern, Wörter hinzufügen oder daraus entfernen, verwenden Sie Cloud DLP, um das gespeicherte benutzerdefinierte Wörterbuch neu zu erstellen.

Weitere Informationen zum Erstellen von gespeicherten benutzerdefinierten Wörterbüchern finden Sie unter Gespeicherten benutzerdefinierten Wörterbuchdetektor erstellen.

Details zum Wörterbuchabgleich

Im Folgenden finden Sie Hinweise dazu, wie Cloud DLP den Abgleich mit Wörtern und Wortgruppen im Wörterbuch vornimmt. Diese Punkte gelten sowohl für reguläre als auch für gespeicherte benutzerdefinierte Wörterbücher:

  • Bei Wörtern in Wörterbüchern wird nicht zwischen Groß- und Kleinschreibung unterschieden. Wenn Ihr Wörterbuch Abby enthält, wird es auf abby, ABBY, Abby usw. abgestimmt.
  • Alle Zeichen, ob in Wörterbüchern oder zu scannenden Inhalten, die nicht zu den Buchstaben und Ziffern zählen, die in der Unicode Basic Multilingual Plane enthalten sind, werden beim Scannen auf Übereinstimmungen wie Leerzeichen behandelt. Wenn Ihr Wörterbuch nach Abby Abernathy sucht, werden abby abernathy, Abby, Abernathy, Abby (ABERNATHY) usw. als Übereinstimmungen erkannt.
  • Die Zeichen in direkter Nachbarschaft zu einer Übereinstimmung müssen von einem anderen Typ sein (Buchstaben oder Ziffern) als die benachbarten Zeichen innerhalb des Worts. Wenn Ihr Wörterbuch nach Abi sucht, werden die ersten drei Zeichen von Abi904, aber nicht von Abigail als Übereinstimmung erkannt.
  • Wörter in Wörterbüchern, die eine große Anzahl von Zeichen enthalten, die keine Buchstaben oder Ziffern sind, können zu unerwarteten Ergebnissen führen, da diese Zeichen wie Leerzeichen behandelt werden.

Beispiele

Einfache Wortliste

Angenommen, Sie haben Daten, die angeben, in welchem Krankenhauszimmer ein Patient während eines Besuchs behandelt wurde. Diese Orte können in einem bestimmten Datensatz als vertraulich angesehen werden, sie werden jedoch nicht von den integrierten Detektoren von Cloud DLP erfasst.

Die Zimmer wurden aufgelistet als:

  • "RM-Orange"
  • "RM-Yellow"
  • "RM-Green"

Protokoll

Im folgenden JSON-Beispiel wird ein benutzerdefiniertes Wörterbuch erstellt, mit dem Sie benutzerdefinierte Zimmernummern de-identifizieren können.

JSON-Eingabe:

POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:deidentify?key={YOUR_API_KEY}

{
  "item":{
    "value":"Patient was seen in RM-YELLOW then transferred to rm green."
  },
  "deidentifyConfig":{
    "infoTypeTransformations":{
      "transformations":[
        {
          "primitiveTransformation":{
            "replaceWithInfoTypeConfig":{

            }
          }
        }
      ]
    }
  },
  "inspectConfig":{
    "customInfoTypes":[
      {
        "infoType":{
          "name":"CUSTOM_ROOM_ID"
        },
        "dictionary":{
          "wordList":{
            "words":[
              "RM-GREEN",
              "RM-YELLOW",
              "RM-ORANGE"
            ]
          }
        }
      }
    ]
  }
}

JSON-Ausgabe:

Wenn wir die JSON-Eingabe an content:deidentify senden, wird die folgende JSON-Antwort zurückgegeben:

{
  "item":{
    "value":"Patient was seen in [CUSTOM_ROOM_ID] then transferred to [CUSTOM_ROOM_ID]."
  },
  "overview":{
    "transformedBytes":"17",
    "transformationSummaries":[
      {
        "infoType":{
          "name":"CUSTOM_ROOM_ID"
        },
        "transformation":{
          "replaceWithInfoTypeConfig":{

          }
        },
        "results":[
          {
            "count":"2",
            "code":"SUCCESS"
          }
        ],
        "transformedBytes":"17"
      }
    ]
  }
}

Cloud DLP hat die in der Nachricht WordList des benutzerdefinierten Wörterbuchs angegebenen Zimmernummern korrekt identifiziert. Beachten Sie, dass Elemente auch dann übereinstimmen, wenn die Groß- und Kleinschreibung variiert und der Bindestrich (-) fehlt, wie im zweiten Beispiel bei "rm green".

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie hier.


import com.google.cloud.dlp.v2.DlpServiceClient;
import com.google.privacy.dlp.v2.ContentItem;
import com.google.privacy.dlp.v2.CustomInfoType;
import com.google.privacy.dlp.v2.CustomInfoType.Dictionary;
import com.google.privacy.dlp.v2.CustomInfoType.Dictionary.WordList;
import com.google.privacy.dlp.v2.DeidentifyConfig;
import com.google.privacy.dlp.v2.DeidentifyContentRequest;
import com.google.privacy.dlp.v2.DeidentifyContentResponse;
import com.google.privacy.dlp.v2.InfoType;
import com.google.privacy.dlp.v2.InfoTypeTransformations;
import com.google.privacy.dlp.v2.InfoTypeTransformations.InfoTypeTransformation;
import com.google.privacy.dlp.v2.InspectConfig;
import com.google.privacy.dlp.v2.LocationName;
import com.google.privacy.dlp.v2.PrimitiveTransformation;
import com.google.privacy.dlp.v2.ReplaceWithInfoTypeConfig;
import java.io.IOException;

public class DeIdentifyWithSimpleWordList {

  public static void main(String[] args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    String textToDeIdentify = "Patient was seen in RM-YELLOW then transferred to rm green.";
    deidentifyWithSimpleWordList(projectId, textToDeIdentify);
  }

  public static void deidentifyWithSimpleWordList(String projectId, String textToDeIdentify)
      throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (DlpServiceClient dlp = DlpServiceClient.create()) {

      // Specify what content you want the service to DeIdentify.
      ContentItem contentItem = ContentItem.newBuilder().setValue(textToDeIdentify).build();

      // Construct the word list to be detected
      Dictionary wordList =
          Dictionary.newBuilder()
              .setWordList(
                  WordList.newBuilder()
                      .addWords("RM-GREEN")
                      .addWords("RM-YELLOW")
                      .addWords("RM-ORANGE")
                      .build())
              .build();

      // Specify the word list custom info type the inspection will look for.
      InfoType infoType = InfoType.newBuilder().setName("CUSTOM_ROOM_ID").build();
      CustomInfoType customInfoType =
          CustomInfoType.newBuilder().setInfoType(infoType).setDictionary(wordList).build();
      InspectConfig inspectConfig =
          InspectConfig.newBuilder().addCustomInfoTypes(customInfoType).build();

      // Define type of deidentification as replacement.
      PrimitiveTransformation primitiveTransformation =
          PrimitiveTransformation.newBuilder()
              .setReplaceWithInfoTypeConfig(ReplaceWithInfoTypeConfig.getDefaultInstance())
              .build();

      // Associate deidentification type with info type.
      InfoTypeTransformation transformation =
          InfoTypeTransformation.newBuilder()
              .addInfoTypes(infoType)
              .setPrimitiveTransformation(primitiveTransformation)
              .build();

      // Construct the configuration for the Redact request and list all desired transformations.
      DeidentifyConfig deidentifyConfig =
          DeidentifyConfig.newBuilder()
              .setInfoTypeTransformations(
                  InfoTypeTransformations.newBuilder().addTransformations(transformation))
              .build();

      // Combine configurations into a request for the service.
      DeidentifyContentRequest request =
          DeidentifyContentRequest.newBuilder()
              .setParent(LocationName.of(projectId, "global").toString())
              .setItem(contentItem)
              .setInspectConfig(inspectConfig)
              .setDeidentifyConfig(deidentifyConfig)
              .build();

      // Send the request and receive response from the service
      DeidentifyContentResponse response = dlp.deidentifyContent(request);

      // Print the results
      System.out.println(
          "Text after replace with infotype config: " + response.getItem().getValue());
    }
  }
}

C#

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie hier.


using System;
using Google.Api.Gax.ResourceNames;
using Google.Cloud.Dlp.V2;

public class DeidentifyWithSimpleWordList
{
    public static DeidentifyContentResponse Deidentify(string projectId, string text)
    {
        // Instantiate a client.
        var dlp = DlpServiceClient.Create();

        var contentItem = new ContentItem { Value = text };

        var wordList = new CustomInfoType.Types.Dictionary.Types.WordList
        {
            Words = { new string[] { "RM-GREEN", "RM-YELLOW", "RM-ORANGE" } }
        };

        var infoType = new InfoType
        {
            Name = "CUSTOM_ROOM_ID"
        };

        var customInfoType = new CustomInfoType
        {
            InfoType = infoType,
            Dictionary = new CustomInfoType.Types.Dictionary
            {
                WordList = wordList
            }
        };

        var inspectConfig = new InspectConfig
        {
            CustomInfoTypes =
            {
                customInfoType,
            }
        };
        var primitiveTransformation = new PrimitiveTransformation
        {
            ReplaceWithInfoTypeConfig = new ReplaceWithInfoTypeConfig { }
        };

        var transformation = new InfoTypeTransformations.Types.InfoTypeTransformation
        {
            InfoTypes = { infoType },
            PrimitiveTransformation = primitiveTransformation
        };

        var deidentifyConfig = new DeidentifyConfig
        {
            InfoTypeTransformations = new InfoTypeTransformations
            {
                Transformations = { transformation }
            }
        };

        var request = new DeidentifyContentRequest
        {
            Parent = new LocationName(projectId, "global").ToString(),
            InspectConfig = inspectConfig,
            DeidentifyConfig = deidentifyConfig,
            Item = contentItem
        };

        // Call the API.
        var response = dlp.DeidentifyContent(request);

        // Inspect the results.
        Console.WriteLine($"Deidentified content: {response.Item.Value}");
        return response;
    }
}

Ausnahmeliste

Angenommen, Sie haben Log-Daten, die Kunden-IDs wie E-Mail-Adressen enthalten, und Sie möchten diese Informationen entfernen. Diese Logs enthalten jedoch auch die E-Mail-Adressen interner Entwickler, die Sie dabei nicht löschen möchten.

Protokoll

Im folgenden JSON-Beispiel wird ein benutzerdefiniertes Wörterbuch erstellt, das eine Teilmenge der E-Mail-Adressen aus der WordList-Nachricht (jack@example.org und jill@example.org) auflistet und diesen den benutzerdefinierten infoType-Namen DEVELOPER_EMAIL zuweist. Dieser JSON-Befehl weist Cloud DLP an, die angegebenen E-Mail-Adressen zu ignorieren, während alle anderen erkannten E-Mail-Adressen durch einen String ersetzt werden, der dem infoType entspricht (in diesem Fall EMAIL_ADDRESS):

JSON-Eingabe:

POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:deidentify?key={YOUR_API_KEY}

{
  "item":{
    "value":"jack@example.org accessed customer record of user5@example.com"
  },
  "deidentifyConfig":{
    "infoTypeTransformations":{
      "transformations":[
        {
          "primitiveTransformation":{
            "replaceWithInfoTypeConfig":{

            }
          },
          "infoTypes":[
            {
              "name":"EMAIL_ADDRESS"
            }
          ]
        }
      ]
    }
  },
  "inspectConfig":{
    "customInfoTypes":[
      {
        "infoType":{
          "name":"DEVELOPER_EMAIL"
        },
        "dictionary":{
          "wordList":{
            "words":[
              "jack@example.org",
              "jill@example.org"
            ]
          }
        }
      }
    ],
    "infoTypes":[
      {
        "name":"EMAIL_ADDRESS"
      }
    ]
    "ruleSet": [
      {
        "infoTypes": [
          {
            "name": "EMAIL_ADDRESS"
          }
        ],
        "rules": [
          {
            "exclusionRule": {
              "excludeInfoTypes": {
                "infoTypes": [
                  {
                    "name": "DEVELOPER_EMAIL"
                  }
                ]
              },
              "matchingType": "MATCHING_TYPE_FULL_MATCH"
            }
          }
        ]
      }
    ]
  }
}

JSON-Ausgabe:

Wenn wir diese JSON-Nachricht an content:deidentify senden, wird die folgende JSON-Antwort zurückgegeben:

{
  "item":{
    "value":"jack@example.org accessed customer record of [EMAIL_ADDRESS]"
  },
  "overview":{
    "transformedBytes":"17",
    "transformationSummaries":[
      {
        "infoType":{
          "name":"EMAIL_ADDRESS"
        },
        "transformation":{
          "replaceWithInfoTypeConfig":{

          }
        },
        "results":[
          {
            "count":"1",
            "code":"SUCCESS"
          }
        ],
        "transformedBytes":"17"
      }
    ]
  }
}

Die Ausgabe hat user1@example.com korrekt als übereinstimmend mit dem infoType-Detektor EMAIL_ADDRESS und jack@example.org als übereinstimmend mit dem benutzerdefinierten infoType-Detektor DEVELOPER_EMAIL erkannt. Beachten Sie, dass jack@example.org unverändert beibehalten wird, weil nur EMAIL_ADDRESS gepasst wurde.

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie hier.


import com.google.cloud.dlp.v2.DlpServiceClient;
import com.google.privacy.dlp.v2.ContentItem;
import com.google.privacy.dlp.v2.CustomInfoType;
import com.google.privacy.dlp.v2.CustomInfoType.Dictionary;
import com.google.privacy.dlp.v2.CustomInfoType.Dictionary.WordList;
import com.google.privacy.dlp.v2.DeidentifyConfig;
import com.google.privacy.dlp.v2.DeidentifyContentRequest;
import com.google.privacy.dlp.v2.DeidentifyContentResponse;
import com.google.privacy.dlp.v2.InfoType;
import com.google.privacy.dlp.v2.InfoTypeTransformations;
import com.google.privacy.dlp.v2.InfoTypeTransformations.InfoTypeTransformation;
import com.google.privacy.dlp.v2.InspectConfig;
import com.google.privacy.dlp.v2.LocationName;
import com.google.privacy.dlp.v2.PrimitiveTransformation;
import com.google.privacy.dlp.v2.ReplaceWithInfoTypeConfig;
import java.io.IOException;

public class DeIdentifyWithExceptionList {

  public static void main(String[] args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    String textToDeIdentify = "jack@example.org accessed customer record of user5@example.com";
    deIdentifyWithExceptionList(projectId, textToDeIdentify);
  }

  public static void deIdentifyWithExceptionList(String projectId, String textToDeIdentify)
      throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (DlpServiceClient dlp = DlpServiceClient.create()) {

      // Specify what content you want the service to DeIdentify.
      ContentItem contentItem = ContentItem.newBuilder().setValue(textToDeIdentify).build();

      // Construct the custom word list to be detected.
      Dictionary wordList =
          Dictionary.newBuilder()
              .setWordList(
                  WordList.newBuilder()
                      .addWords("jack@example.org")
                      .addWords("jill@example.org")
                      .build())
              .build();

      // Construct the custom dictionary detector associated with the word list.
      InfoType developerEmail = InfoType.newBuilder().setName("DEVELOPER_EMAIL").build();
      CustomInfoType customInfoType =
          CustomInfoType.newBuilder().setInfoType(developerEmail).setDictionary(wordList).build();

      // Specify the word list custom info type and build-in info type the inspection will look for.
      InfoType emailAddress = InfoType.newBuilder().setName("EMAIL_ADDRESS").build();
      InspectConfig inspectConfig =
          InspectConfig.newBuilder()
              .addInfoTypes(emailAddress)
              .addCustomInfoTypes(customInfoType)
              .build();

      // Define type of deidentification as replacement.
      PrimitiveTransformation primitiveTransformation =
          PrimitiveTransformation.newBuilder()
              .setReplaceWithInfoTypeConfig(ReplaceWithInfoTypeConfig.getDefaultInstance())
              .build();

      // Associate de-identification type with info type.
      InfoTypeTransformation transformation =
          InfoTypeTransformation.newBuilder()
              .addInfoTypes(emailAddress)
              .setPrimitiveTransformation(primitiveTransformation)
              .build();

      // Construct the configuration for the de-id request and list all desired transformations.
      DeidentifyConfig deidentifyConfig =
          DeidentifyConfig.newBuilder()
              .setInfoTypeTransformations(
                  InfoTypeTransformations.newBuilder().addTransformations(transformation))
              .build();

      // Combine configurations into a request for the service.
      DeidentifyContentRequest request =
          DeidentifyContentRequest.newBuilder()
              .setParent(LocationName.of(projectId, "global").toString())
              .setItem(contentItem)
              .setInspectConfig(inspectConfig)
              .setDeidentifyConfig(deidentifyConfig)
              .build();

      // Send the request and receive response from the service
      DeidentifyContentResponse response = dlp.deidentifyContent(request);

      // Print the results
      System.out.println(
          "Text after replace with infotype config: " + response.getItem().getValue());
    }
  }
}

C#

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie hier.


using System;
using Google.Api.Gax.ResourceNames;
using Google.Cloud.Dlp.V2;

public class DeidentifyWithExceptionList
{
    public static DeidentifyContentResponse Deidentify(string projectId, string text)
    {
        // Instantiate a client.
        var dlp = DlpServiceClient.Create();

        var contentItem = new ContentItem { Value = text };

        var wordList = new CustomInfoType.Types.Dictionary.Types.WordList
        {
            Words = { new string[] { "jack@example.org", "jill@example.org" } }
        };

        var exclusionRule = new ExclusionRule
        {
            MatchingType = MatchingType.FullMatch,
            Dictionary = new CustomInfoType.Types.Dictionary
            {
                WordList = wordList
            }
        };

        var infoType = new InfoType { Name = "EMAIL_ADDRESS" };

        var inspectionRuleSet = new InspectionRuleSet
        {
            InfoTypes = { infoType },
            Rules = { new InspectionRule { ExclusionRule = exclusionRule } }
        };

        var inspectConfig = new InspectConfig
        {
            InfoTypes = { infoType },
            RuleSet = { inspectionRuleSet }
        };
        var primitiveTransformation = new PrimitiveTransformation
        {
            ReplaceWithInfoTypeConfig = new ReplaceWithInfoTypeConfig { }
        };

        var transformation = new InfoTypeTransformations.Types.InfoTypeTransformation
        {
            InfoTypes = { infoType },
            PrimitiveTransformation = primitiveTransformation
        };

        var deidentifyConfig = new DeidentifyConfig
        {
            InfoTypeTransformations = new InfoTypeTransformations
            {
                Transformations = { transformation }
            }
        };

        var request = new DeidentifyContentRequest
        {
            Parent = new LocationName(projectId, "global").ToString(),
            InspectConfig = inspectConfig,
            DeidentifyConfig = deidentifyConfig,
            Item = contentItem
        };

        // Call the API.
        var response = dlp.DeidentifyContent(request);

        // Inspect the results.
        Console.WriteLine($"Deidentified content: {response.Item.Value}");
        return response;
    }
}

Integrierten infoType-Detektor erweitern

Stellen Sie sich ein Szenario vor, in dem ein integrierter infoType-Detektor nicht die korrekten Werte zurückgibt. Sie möchten beispielsweise Übereinstimmungen für Personennamen zurückgeben, aber der in Cloud DLP eingebundene PERSON_NAME-Detektor gibt keine Übereinstimmungen für einige Personennamen zurück, die in Ihrem Dataset häufig anzutreffen sind.

Mit Cloud DLP können Sie eingebundene infoType-Detektoren dadurch erweitern, dass Sie einen eingebundenen Detektor in die Deklaration für einen benutzerdefinierten infoType-Detektor einschließen, wie im folgenden Beispiel gezeigt. Dieses Code-Snippet veranschaulicht, wie Sie Cloud DLP so konfigurieren, dass der eingebundene infoType-Detektor PERSON_NAME zusätzlich den Abgleich gegen den Namen "Quasimodo" vornimmt:

...
  "inspectConfig":{
    "customInfoTypes":[
      {
        "infoType":{
          "name":"PERSON_NAME"
        },
        "dictionary":{
          "wordList":{
            "words":[
              "quasimodo"
            ]
          }
        }
      }
    ]
  }
...