infoTypes und infoType-Detektoren

Sensitive Data Protection verwendet Informationstypen (oder infoTypes), um zu definieren, wonach gescannt werden soll. Ein infoType ist ein Typ sensibler Daten wie Name, E-Mail-Adresse, Telefonnummer, Sozialversicherungsnummer, Kreditkartennummer usw. Ein infoType-Detektor ist der entsprechende Erkennungsmechanismus, der mit den Abgleichskriterien eines infoType übereinstimmt.

Best Practices für die Auswahl von infoTypes

Ihre Daten zu verstehen, ist einer der ersten wichtigen Schritte, um sie zu schützen. Als Best Practice sollten Sie nur die Informationen erfassen, speichern und verarbeiten, die Sie für geschäftliche Zwecke benötigen. Wenn Sie die von Ihnen verarbeiteten Daten identifizieren, können Sie fundierte Entscheidungen für Ihr Unternehmen, Ihre Nutzer und Ihre Datensicherheits- und Datenschutzmaßnahmen treffen.

Für einige Ihrer geschäftlichen Anwendungsfälle sind möglicherweise bestimmte vertrauliche Informationen erforderlich, für andere nicht. Es gibt keine einzelne Lösung, die alle Anwendungsfälle unterstützt. Aus diesem Grund bietet Sensitive Data Protection eine flexible Kontrolle über die Datentypen, nach denen gesucht werden soll. Wenn Sie InfoTypes für die De-Identifikation oder Maskierung verwenden, haben Sie auch die Kontrolle darüber, wann und wie Daten transformiert werden.

Allgemeine Richtlinien

Beachten Sie bei der Auswahl von infoTypes die folgenden allgemeinen Richtlinien.

Allgemeine infoTypes anstelle von spezifischen infoTypes verwenden

Wenn Sie nicht möchten, dass in den Scanergebnissen die spezifischen infoTypes angezeigt werden, die erkannt wurden, sollten Sie in Ihren Prüfungskonfigurationen allgemeine infoTypes anstelle von spezifischen infoTypes verwenden. Informationen zu den Vorteilen der Verwendung allgemeiner infoType-Detektoren in Ihren Anfragen finden Sie auf dieser Seite unter Allgemeine und spezifische infoType-Detektoren.

Eine vollständige Liste der allgemeinen infoTypes und der darin enthaltenen spezifischen infoTypes finden Sie unter Allgemeine infoTypes.

Vertrauliche Informationen, die Sie nicht erheben müssen

Jeder Dienst in Ihrem Unternehmen sollte nur die Daten erfassen, die er benötigt. Beispielsweise müssen für bestimmte Dienste in Ihrem Unternehmen keine Finanzinformationen erhoben werden. Für diese Dienste sollten Sie infoType-Detektoren wie CREDIT_CARD_NUMBER, FINANCIAL_ACCOUNT_NUMBER und andere infoTypes in der Branchenkategorie FINANCE aktivieren.

Informationen, die Sie erfassen müssen, aber nicht mit Ihrem gesamten Team teilen möchten

Es kann legitime Anwendungsfälle für die Erhebung personenbezogener Daten geben, aber Sie sollten sie nicht allgemein mit Ihrem Team teilen. Beispielsweise kann ein Kunde, der ein Support-Ticket einreicht, Ihnen Kontaktdaten geben, damit Sie ihn kontaktieren können, um Probleme zu beheben. Sie möchten nicht, dass alle im Team, die das Ticket einsehen, die personenidentifizierbaren Informationen sehen können. Erwägen Sie, infoType-Detektoren wie PHONE_NUMBER, EMAIL_ADDRESS und andere infoTypes in der Typkategorie PII zu aktivieren.

Kategorien sensibler Daten, die Branchen-, Datenschutz- oder rechtlichen Vorschriften unterliegen

Bestimmte Informationstypen gelten aufgrund ihrer Ausgabe oder ihrer Verwendung als sensibel. In anderen Fällen werden kontextbezogene und demografische Informationen als geschützte Kategorie betrachtet. Für diese Arten von Informationen gelten möglicherweise zusätzliche Einschränkungen hinsichtlich ihrer Erhebung, Verwendung und Verwaltung. Erwägen Sie, infoType-Detektoren in den folgenden Kategorien zu aktivieren:

Zwischen ähnlichen infoTypes wählen

Berücksichtigen Sie bei der Auswahl zwischen ähnlichen infoType-Detektoren Folgendes.

Reisepässe

Wenn Sie nicht nach Passkennungen aus einem bestimmten Land suchen müssen, wählen Sie den allgemeinen Detektor PASSPORT aus.

Bestimmte länderspezifische Passdetektoren wie UK_PASSPORT sind verfügbar. Einige länderspezifische Passdetektoren können jedoch nur Pässe mit bestimmten Formaten oder mit Kontextinformationen identifizieren.

Namen von Personen

Verwenden Sie beim Scannen nach Personennamen für die meisten Anwendungsfälle PERSON_NAME anstelle von FIRST_NAME oder LAST_NAME.

PERSON_NAME ist ein Detektor für Personennamen. Dazu gehören Namen, die aus einem Wort bestehen, und vollständige Namen. Dieser Detektor versucht, mithilfe verschiedener Technologien, einschließlich Natural Language Understanding, beispielsweise Namen wie Jane, Jane Smith und Jane Marie Smith zu erkennen. FIRST_NAME und LAST_NAME sind Teilmengen dieses Detektors, die versuchen, Teile eines Namens zu identifizieren. Ergebnisse dieser Detektoren sind immer Teilmengen der Ergebnisse von PERSON_NAME.

Datums- und Uhrzeitwerte

Wenn Sie nicht nach allen Datumsangaben suchen müssen, können Sie einen gezielten Datumsdetektor wie DATE_OF_BIRTH verwenden. Dieser Detektor versucht, Kontext zu identifizieren, der darauf hinweist, dass sich das Datum auf das Geburtsdatum einer Person bezieht.

Der Detektor DATE versucht, alle Datumsangaben unabhängig vom Kontext zu finden. Außerdem werden relative Datumsangaben wie heute oder gestern gekennzeichnet. Ebenso versucht TIME, alle Zeitstempel zu finden.

Standorte

Wenn Sie nicht alle Standorte scannen müssen, sollten Sie STREET_ADDRESS anstelle des Detektors LOCATION verwenden. Der STREET_ADDRESS Detektor versucht, vollständig qualifizierte Adressen zu finden, die in der Regel genauer als ungefähre Orte sind und als sensibler angesehen werden können.

Der infoType-Detektor LOCATION versucht, jeden Ort unabhängig vom Kontext zu finden, z. B. Paris oder Kanada.

infoType-Detektoren, die Kontext erfordern

Viele infoType-Detektoren erfordern Kontextinformationen, bevor sie eine Übereinstimmung identifizieren. Wenn ein integrierter infoType-Detektor Elemente, die Sie erwarten, nicht kennzeichnet, weil in der Nähe dieser Elemente keine kontextbezogenen Hinweise vorhanden sind, sollten Sie stattdessen GENERIC_ID oder einen benutzerdefinierten infoType-Detektor verwenden.

Informationstypen ohne branchenübliche Definition

Für einige Informationstypen gibt es keine branchenübliche Definition. Beispiele hierfür sind Krankenaktennummern, Kontonummern, PINs und Sicherheitscodes. Für diese Typen sollten Sie infoTypes wie GENERIC_ID, FINANCIAL_ACCOUNT_NUMBER und MEDICAL_RECORD_NUMBER verwenden. Diese Detektoren verwenden eine Kombination aus Entitätserkennung und Kontext, um potenziell sensible Elemente zu finden.

infoType-Detektoren mit höherer Latenz

  • Aktivieren Sie keine infoType-Detektoren, die Sie nicht benötigen. Die folgenden infoTypes sind in bestimmten Szenarien nützlich, können aber dazu führen, dass Anfragen viel langsamer ausgeführt werden als Anfragen, die sie nicht enthalten:

    • PERSON_NAME
    • FEMALE_NAME
    • MALE_NAME
    • FIRST_NAME
    • LAST_NAME
    • DATE_OF_BIRTH
    • LOCATION
    • STREET_ADDRESS
    • ORGANIZATION_NAME
  • Geben Sie infoType-Detektoren immer explizit an. Verwenden Sie keine leere infoTypes-Liste.

So verwenden Sie infoTypes

Sensitive Data Protection verwendet infoType-Detektoren in der Konfiguration für seine Scans, um zu bestimmen, was geprüft werden soll und wie Ergebnisse transformiert werden sollen. 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.

Sensitive Data Protection bietet eine Reihe integrierter infoType-Detektoren, die Sie namentlich angeben. Diese sind in der Referenz zu infoType-Detektoren aufgeführt. 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 Sensitive Data Protection für das Scannen Ihrer Inhalte einrichten, fügen Sie die infoType-Detektoren hinzu, die in der Scankonfiguration verwendet werden sollen.

Die folgenden JSON- und Codebeispiele zeigen beispielsweise eine einfache Scananfrage an die DLP API. Beachten Sie, dass der Detektor PHONE_NUMBER in inspectConfig angegeben ist. Dadurch wird Sensitive Data Protection angewiesen, den angegebenen String nach einer Telefonnummer zu durchsuchen.

C#

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection 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 Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection 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 Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection 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 Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection 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 Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection 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 Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection 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 Sensitive Data Protection 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"
      }
    ]
  }
}

Sie müssen in Ihrer Prüfungskonfiguration bestimmte infoTypes angeben, die in der Referenz aufgeführt sind. Wenn Sie keine infoTypes angeben, verwendet Sensitive Data Protection eine Standardliste von infoTypes, die nur zu Testzwecken gedacht ist. Die Standardliste ist für Ihre Anwendungsfälle möglicherweise nicht geeignet.

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 der Struktur des angegebenen infoType entspricht, aber die Prüfsumme des infoType nicht erfüllt. 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

Sensitive Data Protection umfasst verschiedene Arten von infoType-Detektoren, die hier zusammengefasst sind:

  • Integrierte infoType-Detektoren sind in Sensitive Data Protection integriert. Sie enthalten Detektoren für länderspezifische oder regionsspezifische sensible Datentypen sowie global anwendbare Datentypen. Allgemeine infoTypes sind ebenfalls verfügbar, um Ihre Konfigurationen zu vereinfachen.
  • Benutzerdefinierte infoType-Detektoren sind Detektoren, die Sie selbst erstellen. Es gibt drei Arten von benutzerdefinierten infoType-Detektoren:
    • Kleine benutzerdefinierte Wörterbuchdetektoren sind einfache Wortlisten, die von Sensitive Data Protection abgeglichen werden. 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.
    • Detektoren für große benutzerdefinierte Wörterbücher werden von Sensitive Data Protection mithilfe großer 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.
    • Mit Detektoren für reguläre Ausdrücke (Regex) kann Sensitive Data Protection Übereinstimmungen anhand eines regulären Ausdrucksmusters erkennen.

Wenn Sie die Scanergebnisse verfeinern möchten, können Sie Prüfregeln erstellen.

Integrierte infoType-Detektoren

Integrierte InfoType-Detektoren sind in Sensitive Data Protection integriert und umfassen Detektoren für länderspezifische oder regionsspezifische sensible Datentypen wie die französische Numéro d'Inscription au Répertoire (NIR) (FRANCE_NIR), die britische Führerscheinnummer (UK_DRIVERS_LICENSE_NUMBER) und die US-amerikanische Sozialversicherungsnummer (US_SOCIAL_SECURITY_NUMBER). Sie umfassen auch global anwendbare Datentypen wie einen Personennamen (PERSON_NAME), Telefonnummern (PHONE_NUMBER), E-Mail-Adressen (EMAIL_ADDRESS) und Kreditkartennummern (CREDIT_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 eine vollständige Liste aller integrierten infoType-Detektoren aufrufen, indem Sie die Methode infoTypes.list von Sensitive Data Protection aufrufen.

Erkennungstechniken

Zum Erkennen von Inhalten, die integrierten infoTypes entsprechen, verwendet Sensitive Data Protection verschiedene Techniken, darunter Musterabgleich, Prüfsummenvalidierung, maschinelles Lernen und Kontextanalyse. Um beispielsweise den infoType CREDIT_CARD_NUMBER zu erkennen, prüft Sensitive Data Protection auf bekannte Ausstellerpräfixe, validiert Prüfsummen, analysiert Zeichenlängen und berücksichtigt den Kontext, in dem die potenzielle Kartennummer erscheint.

Die Sensitive Data Protection-Demo ist eine webbasierte Anwendung, mit der Sie integrierte infoType-Detektoren testen können.

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 Sensitive Data Protection mit Ihren Daten, um zu prüfen, ob es Ihren Anforderungen entspricht.

Allgemeine und spezifische Infotyp-Detektoren

Ein allgemeiner infoType-Detektor ist ein Detektor, der allgemeiner definiert ist als typische infoType-Detektoren und eine Vielzahl potenziell sensibler Informationstypen abgleichen kann. Allgemeine infoType-Detektoren sind Obermengen spezifischer infoType-Detektoren, die ein gemeinsames Attribut oder einen gemeinsamen Zweck haben. Der infoType-Detektor DRIVERS_LICENSE_NUMBER kann beispielsweise Inhalte erkennen, die den infoTypes GERMANY_DRIVERS_LICENSE_NUMBER und CANADA_DRIVERS_LICENSE_NUMBER entsprechen.

In vielen Fällen können allgemeine infoType-Detektoren auch Übereinstimmungen finden, die spezifische infoType-Detektoren nicht finden können. Der Detektor PASSPORT ist beispielsweise besser darin, Passnummern zu finden, als länderspezifische Passdetektoren, die manchmal Kontextinformationen oder speziell formatierte Inhalte erfordern.

In Ihrer Inspektionskonfiguration können Sie anstelle eines spezifischen infoType-Detektors einen allgemeinen infoType-Detektor verwenden. Sensitive Data Protection zeigt die Ergebnisse basierend auf dem Detektor an, den Sie in Ihrer Anfrage angegeben haben. Wenn beispielsweise ein String, den Sie prüfen, mit dem infoType GERMANY_DRIVERS_LICENSE_NUMBER übereinstimmt und Sie in Ihrer Anfrage sowohl nach DRIVERS_LICENSE_NUMBER als auch nach GERMANY_DRIVERS_LICENSE_NUMBER gesucht haben, erhalten Sie zwei Ergebnisse für denselben String: eines für DRIVERS_LICENSE_NUMBER und eines für GERMANY_DRIVERS_LICENSE_NUMBER. Wenn Sie in Ihrer Anfrage jedoch nur nach DRIVERS_LICENSE_NUMBER gesucht haben, wird im Prüfergebnis nur das Ergebnis für DRIVERS_LICENSE_NUMBER angezeigt.

Die Verwendung eines allgemeinen infoType-Detektors bietet folgende Vorteile:

  • In vielen Fällen haben allgemeine infoType-Detektoren eine höhere Trefferquote als spezifische infoType-Detektoren. Der Recall ist die Anzahl der richtig positiven Instanzen im Verhältnis zur Gesamtzahl der relevanten Instanzen.

  • Sie können Ihre Sensitive Data Protection-Anfragen vereinfachen, da Sie nicht jeden einzelnen infoType angeben müssen, nach dem gesucht werden soll. Der infoType-Detektor GOVERNMENT_ID umfasst beispielsweise allein mehr als 100 verschiedene infoType-Detektoren.

  • Es ist weniger wahrscheinlich, dass Sie das Limit von 150 infoType-Detektoren pro Anfrage erreichen.

  • Wenn Sensitive Data Protection einen neuen infoType veröffentlicht und ihn einem allgemeinen infoType hinzufügt, der bereits in Ihren vorhandenen Konfigurationen angegeben ist, wird der neue infoType automatisch in die Scans einbezogen. Sie müssen neu veröffentlichte infoTypes nicht manuell zu Ihren vorhandenen Konfigurationen hinzufügen.

Allgemeine und spezifische infoTypes haben eine m:n-Beziehung. Das bedeutet, dass ein allgemeiner infoType viele spezifische infoTypes enthalten kann und ein spezifischer infoType zu vielen allgemeinen infoTypes gehören kann. Eine vollständige Liste der allgemeinen infoTypes und der darin enthaltenen spezifischen infoTypes finden Sie unter Allgemeine infoTypes.

Benutzerdefinierte infoType-Detektoren

Es gibt drei Arten von benutzerdefinierten infoType-Detektoren:

Wenn Sie die Scanergebnisse verfeinern möchten, können Sie Prüfregeln erstellen.

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. Sensitive Data Protection kann Ihre Inhalte nach jedem der Raumnamen scannen und eine Übereinstimmung zurückgeben, wenn einer davon im Kontext gefunden wird. Weitere Informationen dazu, wie Sensitive Data Protection Wörter und Wortgruppen aus Wörterbüchern abgleicht, finden Sie im Abschnitt Besonderheiten beim Wörterbuchabgleich unter Regulären benutzerdefinierten Wörterbuchdetektor erstellen.

Weitere Informationen zur Funktionsweise von benutzerdefinierten infoType-Detektoren mit kleinen Wörterbüchern sowie Beispiele 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 von Sensitive Data Protection basierend auf Ihrer Wortgruppenliste erstellt werden. Die Wörterbuchdateien werden in Cloud Storage gespeichert und enthalten eine Kopie der Quellphrasendaten sowie Bloom-Filter, die die Suche und den Abgleich unterstützen. Sie können diese Dateien nicht direkt bearbeiten.

Nachdem Sie eine Wortliste erstellt und dann mit Sensitive Data Protection ein benutzerdefiniertes Wörterbuch generiert haben, initiieren oder planen Sie einen Scan mit einem Detektor für große benutzerdefinierte Wörterbücher auf ähnliche Weise wie andere infoType-Detektoren.

Weitere Informationen zur Funktionsweise von Detektoren für große benutzerdefinierte Wörterbücher sowie Beispiele finden Sie unter Gespeicherten Detektor für benutzerdefinierte Wörterbücher erstellen.

Reguläre Ausdrücke

Mit einem benutzerdefinierten infoType-Detektor für reguläre Ausdrücke (Regex) können Sie eigene infoType-Detektoren erstellen, mit denen Sensitive Data Protection Übereinstimmungen anhand eines Regex-Musters erkennen kann. 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}

Sensitive Data Protection gleicht dann Elemente wie diese ab:

123-4-56789

Außerdem können Sie jeder benutzerdefinierten infoType-Übereinstimmung eine Wahrscheinlichkeit zuweisen. Das bedeutet, dass Sensitive Data Protection die von Ihnen angegebene Wahrscheinlichkeit zuweist, wenn die von Ihnen angegebene Sequenz übereinstimmt. Das ist nützlich, weil Ihr benutzerdefinierter regulärer Ausdruck eine Sequenz definieren könnte, die so häufig vorkommt, dass sie leicht mit einer anderen zufälligen Sequenz übereinstimmen könnte. Sie möchten aber nicht, dass Sensitive Data Protection jede Übereinstimmung als VERY_LIKELY kennzeichnet. 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 benutzerdefinierten infoType-Detektoren für reguläre Ausdrücke und zu ihrer Verwendung finden Sie unter Benutzerdefinierten Regex-Detektor erstellen.

Inspektionsregeln

Prüfregeln 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 von Sensitive Data Protection zurückgegebenen Ergebnisse auf irgendeine Weise ergänzt werden müssen, entweder durch Hinzufügen zum vorhandenen infoType-Detektor oder durch Ausschließen aus diesem.

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 regulären Ausdrucks hinzufügen, die Sensitive Data Protection anweist, alle Ergebnisse auszuschließen, die auf „@example.com“ 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 eine medizinische Datenbank nach Patientennamen durchsuchen. Sie können den integrierten infoType-Detektor PERSON_NAME von Sensitive Data Protection verwenden. Dadurch werden jedoch alle Personennamen und nicht nur die Namen von Patienten abgeglichen. Um dieses Problem zu beheben, können Sie eine Hotword-Regel in Form eines benutzerdefinierten Regex-infoType einfügen, die nach dem Wort „Patient“ innerhalb einer bestimmten Zeichennähe zum ersten Zeichen potenzieller Übereinstimmungen 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.
  • Sie beginnt mit einer 9, was bei Sozialversicherungsnummern nicht zulässig ist und die Sicherheit verringert.
  • 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.

Anpassungsregeln

Mit Anpassungsregeln können Sie die Genauigkeit der Erkennung optimieren, indem Sie die Wahrscheinlichkeitswerte von Ergebnissen basierend auf dem Kontext, in dem sie auftreten, erhöhen (auch als Boosting bezeichnet) oder verringern.

Sie können beispielsweise eine Anpassungsregel verwenden, um die Wahrscheinlichkeitswerte von GENERIC_ID-Ergebnissen zu erhöhen, wenn sie in Dokumenten angezeigt werden, die mit DOCUMENT_TYPE/CONTEXT/FINANCE übereinstimmen.

Weitere Informationen finden Sie unter Anpassungsregeln.

Nächste Schritte

Das Sensitive Data Protection-Team veröffentlicht regelmäßig neue infoType-Detektoren und -Gruppen. Details zur aktuellen Liste der integrierten infoTypes finden Sie unter Integrierte InfoType-Detektoren auflisten.