infoTypes und infoType-Detektoren

Beim Schutz sensibler Daten wird mithilfe von Informationstypen oder infoTypes definiert, wonach gescannt wird. Ein infoType ist ein Typ sensibler Daten wie Name, E-Mail-Adresse, Telefonnummer, Sozialversicherungsnummer, Kreditkartennummer und andere. Ein infoType-Detektor ist der entsprechende Erkennungsmechanismus, der mit den Abgleichskriterien eines infoType übereinstimmt.

So verwenden Sie infoTypes

Der Schutz sensibler Daten verwendet in der Konfiguration für seine Scans infoType-Detektoren, um zu bestimmen, wonach gesucht werden soll und wie Ergebnisse transformiert werden. Die infoType-Namen werden auch für die Anzeige von Scanergebnissen oder in entsprechenden Berichten verwendet.

Wenn Sie beispielsweise nach E-Mail-Adressen in einem Textblock suchen möchten, geben Sie den infoType-Detektor EMAIL_ADDRESS in der Inspektionskonfiguration an. Wenn Sie E-Mail-Adressen aus dem Textblock entfernen möchten, geben Sie sowohl in der Inspektionskonfiguration als auch in der De-Identifikationskonfiguration EMAIL_ADDRESS an, um anzugeben, wie dieser Typ entfernt oder angepasst werden soll.

Darüber hinaus können Sie eine Kombination aus integrierten und benutzerdefinierten infoType-Detektoren verwenden, um einen Teil der E-Mail-Adressen aus den Scanergebnissen auszuschließen. Erstellen Sie zuerst einen benutzerdefinierten infoType namens INTERNAL_EMAIL_ADDRESS und konfigurieren Sie ihn so, dass interne Test-E-Mail-Adressen ausgeschlossen werden. Anschließend können Sie Ihren Scan so einrichten, dass Ergebnisse für EMAIL_ADDRESS eingeschlossen werden. Sie können aber eine Ausschlussregel hinzufügen, die alle Ergebnisse ausschließt, die mit INTERNAL_EMAIL_ADDRESS übereinstimmen. Weitere Informationen zu Ausschlussregeln und andere Features von benutzerdefinierten infoType-Detektoren finden Sie unter Benutzerdefinierte infoType-Detektoren erstellen.

Der Schutz sensibler Daten bietet eine Reihe von integrierten infoType-Detektoren, die Sie namentlich angeben und die alle in der infoType-Detektorreferenz aufgeführt sind. Diese Detektoren nutzen eine Vielzahl von Techniken, um jeden Typ zu erkennen und zu klassifizieren. Einige Typen erfordern beispielsweise einen Musterabgleich, einige haben mathematische Prüfsummen, einige haben spezielle Ziffernbeschränkungen und andere können bestimmte Präfixe oder Kontexte um die Ergebnisse enthalten.

Beispiele

Wenn Sie den Schutz sensibler Daten zum Scannen Ihrer Inhalte einrichten, schließen Sie die zu verwendenden infoType-Detektoren in der Scankonfiguration ein.

Die folgenden JSON- und Codebeispiele zeigen beispielsweise eine einfache Scananfrage an die DLP API. Der Detektor PHONE_NUMBER ist in inspectConfig angegeben. Damit wird der Schutz sensibler Daten angewiesen, den angegebenen String nach einer Telefonnummer zu scannen.

C#

Informationen zum Installieren und Verwenden der Clientbibliothek für den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

Richten Sie Standardanmeldedaten für Anwendungen ein, um sich beim Schutz sensibler Daten zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


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

public class InspectPhoneNumber
{
    public static InspectContentResponse Inspect(
        string projectId,
        string text,
        Likelihood minLikelihood = Likelihood.Possible)
    {
        // Instantiate a client.
        var dlp = DlpServiceClient.Create();

        // Set content item.
        var contentItem = new ContentItem { Value = text };

        // Construct inspect config.
        var inspectConfig = new InspectConfig
        {
            InfoTypes = { new InfoType { Name = "PHONE_NUMBER" } },
            IncludeQuote = true,
            MinLikelihood = minLikelihood
        };

        // Construct a request.
        var request = new InspectContentRequest
        {
            ParentAsLocationName = new LocationName(projectId, "global"),
            InspectConfig = inspectConfig,
            Item = contentItem,
        };

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

        // Inspect the results.
        var resultFindings = response.Result.Findings;

        Console.WriteLine($"Findings: {resultFindings.Count}");

        foreach (var f in resultFindings)
        {
            Console.WriteLine("\tQuote: " + f.Quote);
            Console.WriteLine("\tInfo type: " + f.InfoType.Name);
            Console.WriteLine("\tLikelihood: " + f.Likelihood);
        }

        return response;
    }
}

Go

Informationen zum Installieren und Verwenden der Clientbibliothek für den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

Richten Sie Standardanmeldedaten für Anwendungen ein, um sich beim Schutz sensibler Daten zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

import (
	"context"
	"fmt"
	"io"

	dlp "cloud.google.com/go/dlp/apiv2"
	"cloud.google.com/go/dlp/apiv2/dlppb"
)

// inspectPhoneNumber demonstrates a simple scan request to the Cloud DLP API.
// Notice that the PHONE_NUMBER detector is specified in inspectConfig,
// which instructs Cloud DLP to scan the given string for a phone number.
func inspectPhoneNumber(w io.Writer, projectID, textToInspect string) error {
	// projectID := "my-project-id"
	// textToInspect := "My phone number is (123) 555-6789"

	ctx := context.Background()

	// Initialize a client once and reuse it to send multiple requests. Clients
	// are safe to use across goroutines. When the client is no longer needed,
	// call the Close method to cleanup its resources.
	client, err := dlp.NewClient(ctx)
	if err != nil {
		return err
	}
	// Closing the client safely cleans up background resources.
	defer client.Close()

	// Create and send the request.
	req := &dlppb.InspectContentRequest{
		Parent: fmt.Sprintf("projects/%s/locations/global", projectID),
		Item: &dlppb.ContentItem{
			DataItem: &dlppb.ContentItem_Value{
				Value: textToInspect,
			},
		},
		InspectConfig: &dlppb.InspectConfig{
			// Specify the type of info the inspection will look for.
			// See https://cloud.google.com/dlp/docs/infotypes-reference
			// for complete list of info types
			InfoTypes: []*dlppb.InfoType{
				{Name: "PHONE_NUMBER"},
			},
			IncludeQuote: true,
		},
	}

	// Send the request.
	resp, err := client.InspectContent(ctx, req)
	if err != nil {
		fmt.Fprintf(w, "receive: %v", err)
		return err
	}

	// Process the results.
	result := resp.Result
	fmt.Fprintf(w, "Findings: %d\n", len(result.Findings))
	for _, f := range result.Findings {
		fmt.Fprintf(w, "\tQuote: %s\n", f.Quote)
		fmt.Fprintf(w, "\tInfo type: %s\n", f.InfoType.Name)
		fmt.Fprintf(w, "\tLikelihood: %s\n", f.Likelihood)
	}
	return nil
}

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

Richten Sie Standardanmeldedaten für Anwendungen ein, um sich beim Schutz sensibler Daten zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


import com.google.cloud.dlp.v2.DlpServiceClient;
import com.google.privacy.dlp.v2.ContentItem;
import com.google.privacy.dlp.v2.Finding;
import com.google.privacy.dlp.v2.InfoType;
import com.google.privacy.dlp.v2.InspectConfig;
import com.google.privacy.dlp.v2.InspectContentRequest;
import com.google.privacy.dlp.v2.InspectContentResponse;
import com.google.privacy.dlp.v2.Likelihood;
import com.google.privacy.dlp.v2.LocationName;
import java.io.IOException;

public class InspectPhoneNumber {

  public static void main(String[] args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    String textToInspect = "My name is Gary and my email is gary@example.com";
    inspectString(projectId, textToInspect);
  }

  // Inspects the provided text.
  public static void inspectString(String projectId, String textToInspect) 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 the type and content to be inspected.
      ContentItem item = ContentItem.newBuilder().setValue(textToInspect).build();

      // Specify the type of info the inspection will look for.
      // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types
      InfoType infoType = InfoType.newBuilder().setName("PHONE_NUMBER").build();

      // Construct the configuration for the Inspect request.
      InspectConfig config =
          InspectConfig.newBuilder()
              .setIncludeQuote(true)
              .setMinLikelihood(Likelihood.POSSIBLE)
              .addInfoTypes(infoType)
              .build();

      // Construct the Inspect request to be sent by the client.
      InspectContentRequest request =
          InspectContentRequest.newBuilder()
              .setParent(LocationName.of(projectId, "global").toString())
              .setItem(item)
              .setInspectConfig(config)
              .build();

      // Use the client to send the API request.
      InspectContentResponse response = dlp.inspectContent(request);

      // Parse the response and process results
      System.out.println("Findings: " + response.getResult().getFindingsCount());
      for (Finding f : response.getResult().getFindingsList()) {
        System.out.println("\tQuote: " + f.getQuote());
        System.out.println("\tInfo type: " + f.getInfoType().getName());
        System.out.println("\tLikelihood: " + f.getLikelihood());
      }
    }
  }
}

Node.js

Informationen zum Installieren und Verwenden der Clientbibliothek für den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

Richten Sie Standardanmeldedaten für Anwendungen ein, um sich beim Schutz sensibler Daten zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

// Imports the Google Cloud Data Loss Prevention library
const DLP = require('@google-cloud/dlp');

// Instantiates a client
const dlp = new DLP.DlpServiceClient();

// The project ID to run the API call under
// const projectId = 'my-project';

// The string to inspect
// const string = 'My email is gary@example.com and my phone number is (223) 456-7890.';

// The minimum likelihood required before returning a match
// const minLikelihood = 'LIKELIHOOD_UNSPECIFIED';

// The maximum number of findings to report per request (0 = server maximum)
// const maxFindings = 0;

// The infoTypes of information to match
// See https://cloud.google.com/dlp/docs/concepts-infotypes for more information
// about supported infoTypes.
// const infoTypes = [{ name: 'PHONE_NUMBER' }];

// The customInfoTypes of information to match
// const customInfoTypes = [{ infoType: { name: 'DICT_TYPE' }, dictionary: { wordList: { words: ['foo', 'bar', 'baz']}}},
//   { infoType: { name: 'REGEX_TYPE' }, regex: {pattern: '\\(\\d{3}\\) \\d{3}-\\d{4}'}}];

// Whether to include the matching string
// const includeQuote = true;

async function inspectPhoneNumber() {
  // Construct item to inspect
  const item = {value: string};

  // Construct request
  const request = {
    parent: `projects/${projectId}/locations/global`,
    inspectConfig: {
      infoTypes: infoTypes,
      customInfoTypes: customInfoTypes,
      minLikelihood: minLikelihood,
      includeQuote: includeQuote,
      limits: {
        maxFindingsPerRequest: maxFindings,
      },
    },
    item: item,
  };

  // Run request
  const [response] = await dlp.inspectContent(request);
  const findings = response.result.findings;
  if (findings.length > 0) {
    console.log('Findings:');
    findings.forEach(finding => {
      if (includeQuote) {
        console.log(`\tQuote: ${finding.quote}`);
      }
      console.log(`\tInfo type: ${finding.infoType.name}`);
      console.log(`\tLikelihood: ${finding.likelihood}`);
    });
  } else {
    console.log('No findings.');
  }
}
inspectPhoneNumber();

PHP

Informationen zum Installieren und Verwenden der Clientbibliothek für den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

Richten Sie Standardanmeldedaten für Anwendungen ein, um sich beim Schutz sensibler Daten zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

use Google\Cloud\Dlp\V2\Client\DlpServiceClient;
use Google\Cloud\Dlp\V2\ContentItem;
use Google\Cloud\Dlp\V2\InfoType;
use Google\Cloud\Dlp\V2\InspectConfig;
use Google\Cloud\Dlp\V2\InspectContentRequest;
use Google\Cloud\Dlp\V2\Likelihood;

/**
 * Inspect data for phone numbers
 * Demonstrates a simple scan request to the Cloud DLP API. Notice that the PHONE_NUMBER detector is specified in inspectConfig, which instructs Cloud DLP to scan the given string for a phone number.
 *
 * @param string $projectId         The Google Cloud project id to use as a parent resource.
 * @param string $textToInspect     The string to inspect.
 */
function inspect_phone_number(
    // TODO(developer): Replace sample parameters before running the code.
    string $projectId,
    string $textToInspect = 'My name is Gary and my phone number is (415) 555-0890'
): void {
    // Instantiate a client.
    $dlp = new DlpServiceClient();

    $parent = "projects/$projectId/locations/global";

    // Specify what content you want the service to Inspect.
    $item = (new ContentItem())
        ->setValue($textToInspect);

    $inspectConfig = (new InspectConfig())
        // The infoTypes of information to match
        ->setInfoTypes([
            (new InfoType())->setName('PHONE_NUMBER'),
        ])
        // Whether to include the matching string
        ->setIncludeQuote(true)
        ->setMinLikelihood(Likelihood::POSSIBLE);

    // Run request
    $inspectContentRequest = (new InspectContentRequest())
        ->setParent($parent)
        ->setInspectConfig($inspectConfig)
        ->setItem($item);
    $response = $dlp->inspectContent($inspectContentRequest);

    // Print the results
    $findings = $response->getResult()->getFindings();
    if (count($findings) == 0) {
        printf('No findings.' . PHP_EOL);
    } else {
        printf('Findings:' . PHP_EOL);
        foreach ($findings as $finding) {
            printf('  Quote: %s' . PHP_EOL, $finding->getQuote());
            printf('  Info type: %s' . PHP_EOL, $finding->getInfoType()->getName());
            printf('  Likelihood: %s' . PHP_EOL, Likelihood::name($finding->getLikelihood()));
        }
    }
}

Python

Informationen zum Installieren und Verwenden der Clientbibliothek für den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

Richten Sie Standardanmeldedaten für Anwendungen ein, um sich beim Schutz sensibler Daten zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

import google.cloud.dlp

def inspect_phone_number(
    project: str,
    content_string: str,
) -> None:
    """Uses the Data Loss Prevention API to analyze strings for protected data.
    Args:
        project: The Google Cloud project id to use as a parent resource.
        content_string: The string to inspect phone number from.
    """

    # Instantiate a client.
    dlp = google.cloud.dlp_v2.DlpServiceClient()

    # Prepare info_types by converting the list of strings into a list of
    # dictionaries (protos are also accepted).
    info_types = [{"name": "PHONE_NUMBER"}]

    # Construct the configuration dictionary.
    inspect_config = {
        "info_types": info_types,
        "include_quote": True,
    }

    # Construct the `item`.
    item = {"value": content_string}

    # Convert the project id into a full resource id.
    parent = f"projects/{project}"

    # Call the API.
    response = dlp.inspect_content(
        request={"parent": parent, "inspect_config": inspect_config, "item": item}
    )

    # Print out the results.
    if response.result.findings:
        for finding in response.result.findings:
            print(f"Quote: {finding.quote}")
            print(f"Info type: {finding.info_type.name}")
            print(f"Likelihood: {finding.likelihood}")
    else:
        print("No findings.")

REST

JSON-Eingabe:

POST https://dlp.googleapis.com/v2/projects/[PROJECT-ID]/content:inspect?key={YOUR_API_KEY}

{
  "item":{
    "value":"My phone number is (415) 555-0890"
  },
  "inspectConfig":{
    "includeQuote":true,
    "minLikelihood":"POSSIBLE",
    "infoTypes":{
      "name":"PHONE_NUMBER"
    }
  }
}

Wenn Sie die vorherige Anfrage an den angegebenen Endpunkt senden, gibt der Schutz sensibler Daten Folgendes zurück:

JSON-Ausgabe:

{
  "result":{
    "findings":[
      {
        "quote":"(415) 555-0890",
        "infoType":{
          "name":"PHONE_NUMBER"
        },
        "likelihood":"VERY_LIKELY",
        "location":{
          "byteRange":{
            "start":"19",
            "end":"33"
          },
          "codepointRange":{
            "start":"19",
            "end":"33"
          }
        },
        "createTime":"2018-10-29T23:46:34.535Z"
      }
    ]
  }
}

Wenn Sie präzise steuern und vorhersehbar machen möchten, welche Detektoren ausgeführt werden, sollten Sie bestimmte infoTypes in der Referenz angeben. Andernfalls verwendet der Schutz sensibler Daten eine Standardliste, die sich im Laufe der Zeit ändern kann. Je nach Menge der zu scannenden Inhalte kann das Scannen nach Standard-infoTypes zu zeitaufwendig oder teuer sein.

Weitere Informationen zur Verwendung von infoType-Detektoren zum Scannen von Inhalten finden Sie in den Anleitungen zu den Themen Prüfung, Entfernung und De-Identifikation.

Sicherheit und Tests

Die Ergebnisse werden mit dem Sicherheitsfaktor Wahrscheinlichkeit gemeldet. Der Wahrscheinlichkeitswert gibt an, mit welcher Wahrscheinlichkeit ein Ergebnis mit dem entsprechenden Typ übereinstimmt. Ein Typ kann beispielsweise eine geringere Wahrscheinlichkeit zurückgeben, wenn er nur mit dem Muster übereinstimmt, und eine höhere Wahrscheinlichkeit, wenn er mit dem Muster übereinstimmt und von einem positiven Kontext umgeben ist. Deshalb stellen Sie möglicherweise fest, dass ein einzelnes Ergebnis mit geringerer Wahrscheinlichkeit zu mehreren Typen passt. Außerdem wird ein Ergebnis möglicherweise nicht angezeigt oder hat eine geringere Wahrscheinlichkeit, wenn es nicht richtig übereinstimmt oder von einem negativen Kontext umgeben ist. Beispielsweise wird ein Ergebnis möglicherweise nicht gemeldet, wenn es mit der Struktur für den angegebenen infoType übereinstimmt, aber bei der Prüfsumme des infoType fehlschlägt. Oder ein Ergebnis könnte mit mehr als einem infoType übereinstimmen, aber einen Kontext haben, der einen davon verbessert, und somit nur für diesen Typ gemeldet wird.

Wenn Sie verschiedene Detektoren testen, stellen Sie möglicherweise fest, dass falsche Daten oder Beispieldaten nicht gemeldet werden, da sie nicht genügend Prüfungen bestehen.

Arten von infoType-Detektoren

Der Schutz sensibler Daten umfasst mehrere Arten von infoType-Detektoren, die hier zusammengefasst werden:

  • Integrierte infoType-Detektoren sind in den Schutz sensibler Daten eingebunden. Dazu gehören Detektoren für länder- oder regionsspezifische sensible Datentypen sowie global anwendbare Datentypen.
  • Benutzerdefinierte infoType-Detektoren sind Detektoren, die Sie selbst erstellen. Es gibt drei Arten von benutzerdefinierten infoType-Detektoren:
    • Kleine benutzerdefinierte Wörterbuchdetektoren sind einfache Wortlisten, in denen beim Schutz sensibler Daten nach Übereinstimmungen gesucht wird. Verwenden Sie kleine benutzerdefinierte Wörterbuchdetektoren, wenn Sie eine Liste mit mehreren Zehntausend Wörtern oder Wortgruppen haben. Kleine benutzerdefinierte Wörterbuchdetektoren werden bevorzugt, wenn Sie nicht erwarten, dass sich Ihre Wortliste erheblich ändert.
    • Große benutzerdefinierte Wörterbuchdetektoren werden vom Schutz sensibler Daten mithilfe umfangreicher Listen von Wörtern oder Wortgruppen generiert, die entweder in Cloud Storage oder BigQuery gespeichert sind. Verwenden Sie große benutzerdefinierte Wörterbuchdetektoren, wenn Sie eine große Liste mit (bis zu zehn Millionen) Wörtern oder Wortgruppen haben.
    • Detektoren regulärer Ausdrücke (Regex-Detektoren) ermöglichen dem Schutz sensibler Daten, Übereinstimmungen anhand eines regulären Ausdrucksmusters zu erkennen.

Darüber hinaus umfasst der Schutz sensibler Daten das Konzept der Prüfregeln, mit denen Sie die Scanergebnisse auf folgende Weise optimieren können:

  • Ausschlussregeln können Sie einem integrierten oder benutzerdefinierten infoType-Detektor hinzufügen, um die Anzahl der Ergebnisse einzugrenzen.
  • Hotword-Regeln können Sie einem integrierten oder benutzerdefinierten infoType-Detektor hinzufügen, um die Anzahl der Ergebnisse zu erhöhen oder den Wahrscheinlichkeitswert der Ausgabe zu ändern.

Integrierte infoType-Detektoren

Integrierte infoType-Detektoren sind in den Schutz sensibler Daten integriert. Sie umfassen Detektoren für länderspezifische oder regionsspezifische sensible Datentypen wie die Numéro d'Inscription au Répertoire (NIR) ( (FRANCE_NIR {/7}entsprechende Identifikationsnummer für den FRANCE_NIR sicheren Daten- und Identifikations- und Identifikationsnummern) des US-amerikanischen Führerscheins ( FRANCE_NIR diese AdressenUK_DRIVERS_LICENSE_NUMBERUS_SOCIAL_SECURITY_NUMBERPERSON_NAMEPHONE_NUMBEREMAIL_ADDRESSCREDIT_CARD_NUMBER

Die Liste der integrierten infoType-Detektoren wird kontinuierlich aktualisiert. Eine vollständige Liste der derzeit unterstützten integrierten infoType-Detektoren finden Sie in der InfoType-Detektorreferenz.

Sie können auch die vollständige Liste aller integrierten infoType-Detektoren anzeigen lassen. Dazu rufen Sie die Methode infoTypes.list des Schutzes sensibler Daten auf.

Integrierte infoType-Detektoren bieten keine hundertprozentig genaue Erkennungsmethode. Sie können zum Beispiel nicht die Einhaltung von gesetzlichen Vorschriften garantieren. Sie müssen entscheiden, welche Daten sensibel sind und wie sie am besten geschützt werden. Google empfiehlt, dass Sie Ihre Einstellungen testen, um zu prüfen, ob die Konfiguration Ihren Anforderungen entspricht.

Sprachunterstützung

Länderspezifische infoTypes unterstützen die englische Sprache und die Sprachen des jeweiligen Landes. Die meisten globalen infoTypes funktionieren mit mehreren Sprachen. Testen Sie den Schutz sensibler Daten mit Ihren Daten, um zu prüfen, ob sie Ihren Anforderungen entsprechen.

Benutzerdefinierte infoType-Detektoren

Es gibt drei Arten von benutzerdefinierten infoType-Detektoren:

Darüber hinaus umfasst der Schutz sensibler Daten Prüfregeln, mit denen Sie die Scanergebnisse optimieren können. Dazu fügen Sie den vorhandenen Detektoren Folgendes hinzu:

Kleine benutzerdefinierte Wörterbuchdetektoren

Verwenden Sie kleine benutzerdefinierte Wörterbuchdetektoren (auch als "reguläre benutzerdefinierte Wörterbuchdetektoren" bezeichnet), um eine kurze Liste mit (bis zu zehntausenden) Wörtern oder Wortgruppen abzugleichen. Ein kleines benutzerdefiniertes Wörterbuch kann als eigener eindeutiger Detektor verwendet werden.

Benutzerdefinierte Wörterbuchdetektoren sind nützlich, wenn Sie Inhalte auf Übereinstimmungen mit einer Liste von Wörtern oder Ausdrücken prüfen möchten, die mit einem regulären Ausdruck oder einem integrierten Detektor nicht leicht gefunden werden können. Nehmen Sie zum Beispiel an, Sie möchten nach Konferenzräumen suchen, die nicht mit Raumnummern gekennzeichnet, sondern nach Namen von Ländern oder Regionen, Sehenswürdigkeiten oder fiktiven Figuren benannt sind. Hier können Sie einen kleinen benutzerdefinierten Wörterbuchdetektor erstellen, der eine Liste dieser Raumnamen enthält. Der Schutz sensibler Daten kann Ihre Inhalte nach jedem der Raumnamen scannen und eine Übereinstimmung zurückgeben, wenn er im Kontext auf einen davon stößt. Weitere Informationen dazu, wie der Schutz sensibler Daten nach Wörtern und Wortgruppen aus Wörterbüchern sucht, finden Sie unter Regulären benutzerdefinierten Wörterbuchdetektor erstellen im Abschnitt Details zum Wörterbuchabgleich.

Weitere Informationen zur Funktionsweise von kleinen benutzerdefinierte infoType-Wörterbuchdetektoren sowie Beispiele in der Praxis finden Sie unter Regulären benutzerdefinierten Wörterbuchdetektor erstellen.

Große benutzerdefinierte Wörterbuchdetektoren

Verwenden Sie große benutzerdefinierte Wörterbuchdetektoren (auch als "gespeicherte benutzerdefinierte Wörterbuchdetektoren" bezeichnet), wenn Sie nach mehreren Wörtern oder Wortgruppen scannen möchten oder wenn sich Ihre Liste mit Wörtern oder Wortgruppen häufig ändert. Große benutzerdefinierte Wörterbuchdetektoren können Dutzende Millionen von Wörtern oder Wortgruppen abgleichen.

Große benutzerdefinierte Wörterbuchdetektoren werden anders erstellt als benutzerdefinierte Detektoren für reguläre Ausdrücke und kleine benutzerdefinierte Wörterbuchdetektoren. Jedes große benutzerdefinierte Wörterbuch umfasst zwei Komponenten:

  • Eine Liste von Wortgruppen, die Sie erstellen und definieren. Die Liste wird entweder als Textdatei in Cloud Storage oder als Spalte in einer BigQuery-Tabelle gespeichert.
  • Die generierten Wörterbuchdateien, die vom Schutz sensibler Daten basierend auf Ihrer Wortgruppenliste erstellt werden. Die Wörterbuchdateien werden in Cloud Storage gespeichert und bestehen aus einer Kopie der Quellwortgruppen sowie Bloomfiltern, die beim Suchen und Abgleichen helfen. Sie können diese Dateien nicht direkt bearbeiten.

Nachdem Sie eine Wortliste erstellt und dann mithilfe des Schutzes sensibler Daten ein benutzerdefiniertes Wörterbuch erstellt haben, starten oder planen Sie einen Scan mit einem großen benutzerdefinierten Wörterbuchdetektor auf ähnliche Weise wie mit anderen infoType-Detektoren.

Weitere Informationen zur Funktionsweise von großen benutzerdefinierten Wörterbuchdetektoren sowie Beispiele in der Praxis finden Sie unter Gespeicherten benutzerdefinierten Wörterbuchdetektor erstellen.

Reguläre Ausdrücke

Mit einem benutzerdefinierten infoType-Detektor für reguläre Ausdrücke (Regex) können Sie eigene infoType-Detektoren erstellen, die den Schutz sensibler Daten ermöglichen, um Übereinstimmungen anhand eines Regex-Musters zu erkennen. Nehmen Sie beispielsweise an, Sie haben Krankenaktennummern im Format ###-#-#####. Sie könnten ein Regex-Muster wie das Folgende definieren:

[1-9]{3}-[1-9]{1}-[1-9]{5}

Der Schutz sensibler Daten würde dann Elemente wie diese abgleichen:

123-4-56789

Außerdem können Sie jeder benutzerdefinierten infoType-Übereinstimmung eine Wahrscheinlichkeit zuweisen. Wenn der Schutz sensibler Daten mit der von Ihnen angegebenen Sequenz übereinstimmt, weist er also die von Ihnen angegebene Wahrscheinlichkeit zu. Das ist nützlich, denn wenn der benutzerdefinierte reguläre Ausdruck eine Sequenz definiert, die allgemein genug ist, dass sie leicht mit einer anderen zufälligen Sequenz übereinstimmen könnte, soll der Schutz sensibler Daten nicht jede Übereinstimmung mit VERY_LIKELY kennzeichnen. Dies würde nämlich die Zuverlässigkeit der Scanergebnisse beeinträchtigen und möglicherweise dazu führen, dass die falsche Information de-identifiziert wird.

Weitere Informationen zu regulären infoType-Detektoren für reguläre Ausdrücke sowie Praxisbeispiele finden Sie unter Benutzerdefinierten Regex-Detektor erstellen.

Inspektionsregeln

Inspektionsregeln werden verwendet, um die von vorhandenen, regulären oder benutzerdefinierten, infoType-Detektoren zurückgegebenen Ergebnisse zu verfeinern. Prüfregeln können nützlich sein, wenn die Ergebnisse, die der Schutz sensibler Daten zurückgibt, in irgendeiner Weise erweitert werden müssen, indem Sie sie entweder dem vorhandenen infoType-Detektor hinzufügen oder von diesem ausschließen.

Die zwei Arten von Prüfregeln sind:

  • Ausschlussregeln
  • Hotword-Regeln

Weitere Informationen zu Inspektionsregeln finden Sie unter infoType-Detektoren zum Verfeinern von Scanergebnissen anpassen.

Ausschlussregeln

Durch Ausschlussregeln können Sie die Anzahl oder die Genauigkeit von zurückgegebenen Ergebnissen eingrenzen. Fügen Sie dafür einem integrierten oder benutzerdefinierten infoType-Detektor Regeln hinzu. Ausschlussregeln tragen dazu bei, die Ausgabe falscher positiver Ergebnisse oder anderer unerwünschter Ergebnisse durch einen infoType-Detektor zu reduzieren.

Wenn Sie beispielsweise eine Datenbank nach E-Mail-Adressen scannen, können Sie eine Ausschlussregel in Form eines benutzerdefinierten Regex einfügen, der den Schutz sensibler Daten anweist, alle Ergebnisse auszuschließen, die auf „@beispiel.de“ enden.

Weitere Informationen zu Ausschlussregeln finden Sie unter infoType-Detektoren zum Verfeinern von Scanergebnissen anpassen.

Hotword-Regeln

Durch Hotword-Regeln können Sie die Anzahl oder die Genauigkeit von zurückgegebenen Ergebnissen erhöhen. Fügen Sie dafür einem integrierten oder benutzerdefinierten infoType-Detektor Regeln hinzu. Mit Hotword-Regeln werden die Regeln vorhandener infoType-Detektoren gelockert.

Angenommen, Sie möchten in einer medizinischen Datenbank Patientennamen suchen. Sie können zwar den integrierten infoType-Detektor PERSON_NAME für den Schutz sensibler Daten verwenden, dies führt jedoch dazu, dass der Schutz sensibler Daten bei allen Personennamen, nicht nur bei Namen von Patienten, übereinstimmt. Zur Behebung dieses Problems können Sie eine Hotword-Regel in Form eines regulären Ausdrucks als benutzerdefinierten infoType einfügen, die in einem bestimmten Zeichenabstand vom ersten Zeichen möglicher Übereinstimmungen nach dem Wort "Patient" sucht. Ergebnissen, die diesem Muster entsprechen, können Sie dann eine Wahrscheinlichkeit von "sehr wahrscheinlich" zuweisen, da sie Ihren speziellen Kriterien entsprechen.

Weitere Informationen zu Hotword-Regeln finden Sie unter infoType-Detektoren zum Verfeinern von Scanergebnissen anpassen.

Beispiele

Für ein besseres Verständnis dafür, wie infoTypes mit Ergebnissen übereinstimmen, sehen Sie sich die folgenden Beispiele für Übereinstimmungen mit einer Reihe von Ziffern an. Hier wird bestimmt, ob sie eine US-Sozialversicherungsnummer oder eine US-amerikanische Steueridentifikationsnummer bilden. Beachten Sie, dass sich diese Beispiele auf integrierte infoType-Detektoren beziehen. Wenn Sie einen benutzerdefinierten infoType-Detektor erstellen, geben Sie die Kriterien an, die die Wahrscheinlichkeit einer Scanübereinstimmung bestimmen.

Beispiel 1

"SSN 222-22-2222"

Meldet einen hohen Wahrscheinlichkeitswert von VERY_LIKELY für US_SOCIAL_SECURITY_NUMBER aus folgenden Gründen:

  • Es hat das Standardformat für Sozialversicherungsnummern, was die Sicherheit erhöht.
  • Es hat Kontext in der Nähe ("SSN"), der ihn in Richtung US_SOCIAL_SECURITY_NUMBER verbessert.

Beispiel 2

"999-99-9999"

Meldet einen niedrigen Wahrscheinlichkeitswert von VERY_UNLIKELY für US_SOCIAL_SECURITY_NUMBER aus folgenden Gründen:

  • Es hat das Standardformat, was die Sicherheit erhöht.
  • Es beginnt mit einer 9, die in Sozialversicherungsnummern nicht zulässig ist, wodurch die Sicherheit verringert wird.
  • Es fehlt der Kontext, was die Sicherheit verringert.

Beispiel 3

"999-98-9999"

Meldet einen Wahrscheinlichkeitswert von POSSIBLE für US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER und VERY_UNLIKELY für US_SOCIAL_SECURITY_NUMBER aus folgenden Gründen:

  • Es hat das Standardformat für US_SOCIAL_SECURITY_NUMBER und US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER.
  • Es beginnt mit einer 9 und hat eine weitere Ziffernprüfung, was die Sicherheit für US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER erhöht.
  • Es hat keinen Kontext, was die Sicherheit für beide verringert.

Nächste Schritte

Das Team für den Schutz sensibler Daten veröffentlicht regelmäßig neue infoType-Detektoren und -Gruppen. Details zur aktuellen Liste der integrierten infoTypes finden Sie unter Integrierte InfoType-Detektoren auflisten.