Der Schutz sensibler Daten kann sensible Daten in Textinhalten de-identifizieren, einschließlich Text, der in Containerstrukturen wie Tabellen gespeichert ist. Der Prozess des Entfernens von identifizierenden Informationen aus Daten wird als De-Identifikation bezeichnet. Die API erkennt vertrauliche Daten wie personenidentifizierbare Informationen (PII) und verwendet dann eine De-Identifikationstransformation, um die Daten zu maskieren, zu löschen oder anderweitig zu verschleiern. Zu den De-Identifikationstechniken gehören zum Beispiel:
- "Maskieren" sensibler Daten durch teilweises oder vollständiges Ersetzen von Zeichen durch ein Symbol, etwa ein Sternchen (*) oder Rautezeichen (#)
- Ersetzen jedes Vorkommens sensibler Daten durch ein "Token" oder einen Ersatzstring
- Verschlüsseln und Ersetzen von sensiblen Daten mit einem zufällig generierten oder vordefinierten Schlüssel
Sie können der API mithilfe von JSON über HTTPS sowie mithilfe der Befehlszeile und mehrerer Programmiersprachen unter Verwendung der Clientbibliotheken zum Schutz sensibler Daten Informationen zuführen. Informationen zur Verwendung der Befehlszeile finden Sie in der quickstart. Näheres zum Übergeben von Informationen im JSON-Format finden Sie in der JSON-Kurzanleitung.
API-Übersicht
Verwenden Sie zum De-Identifizieren sensibler Daten die Methode content.deidentify
des Schutzes sensibler Daten.
Ein API-Aufruf zur De-Identifizierung besteht aus drei Teilen:
- Zu überprüfende Daten: Ein String oder eine Tabellenstruktur (
ContentItem
-Objekt), der bzw. die von der API überprüft werden soll. - Wonach zu suchen ist: Informationen zur Erkennungskonfiguration (
InspectConfig
), zum Beispiel, welche Datentypen (oder infoTypes) gesucht werden sollen, ob Ergebnisse über einem bestimmten Wahrscheinlichkeitsschwellenwert gefiltert werden sollen, ob nicht mehr als eine bestimmte Anzahl von Ergebnissen geliefert werden soll usw. Wenn nicht mindestens ein infoType in einemInspectConfig
-Argument angegeben wird, entspricht dies der Angabe aller integrierten infoTypes. Dies wird nicht empfohlen, da es zu verminderter Leistung und höheren Kosten führen kann. - Was mit den Inspektionsergebnissen geschehen soll: Konfigurationsinformationen (
DeidentifyConfig
), die festlegen, wie die sensiblen Daten de-identifiziert werden sollen. Dieser Aspekt wird im folgenden Abschnitt ausführlicher behandelt.
Die API gibt dieselben Elemente, die Sie angegeben haben, im selben Format zurück. Aber Text, der gemäß Ihren Kriterien als vertrauliche Informationen erkannt wurde, ist jetzt de-identifiziert.
Erkennungskriterien angeben
Informationstyp- oder „infoType“-Detektoren sind die Mechanismen, mit denen der Schutz sensibler Daten nach sensiblen Daten sucht.
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:
- Reguläre benutzerdefinierte Wörterbuchdetektoren sind einfache Wortlisten, in denen beim Schutz sensibler Daten nach Übereinstimmungen gesucht wird. Verwenden Sie reguläre benutzerdefinierte Wörterbuchdetektoren, wenn Sie eine Liste von einigen Zehntausend Wörtern oder Wortgruppen haben. Reguläre benutzerdefinierte Wörterbuchdetektoren werden bevorzugt verwendet, wenn davon auszugehen ist, dass sich die Wortliste nicht wesentlich ändern wird.
- Gespeicherte benutzerdefinierte Wörterbuchdetektoren werden vom Schutz sensibler Daten unter Verwendung umfangreicher Listen von Wörtern oder Wortgruppen generiert, die entweder in Cloud Storage oder BigQuery gespeichert sind. Verwenden Sie gespeicherte benutzerdefinierte Wörterbuchdetektoren, wenn Sie eine umfangreiche Liste von Wörtern oder Wortgruppen haben (bis zu mehreren zehn Millionen).
- 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.
Transformationen zur De-Identifikation
Sie müssen eine oder mehrere Transformationen angeben, wenn Sie die De-Identifikationskonfiguration (DeidentifyConfig
) festlegen. Es gibt zwei Transformationskategorien:
InfoTypeTransformations
: Transformationen, die nur auf Werte innerhalb von gesendetem Text angewendet werden, die als spezifischer infoType gekennzeichnet sind.RecordTransformations
: Transformationen, die nur auf Werte innerhalb gesendeter Tabellentextdaten angewendet werden, die als spezifischer infoType gekennzeichnet sind, oder auf eine ganze Spalte von Tabellendaten.
InfoType-Transformationen
Sie können eine oder mehrere infoType-Transformationen pro Anfrage angeben. In jedem InfoTypeTransformation
-Objekt geben Sie Folgendes an:
- Einen oder mehrere infoTypes, auf die eine Transformation angewendet werden soll (das Array-Objekt
infoTypes[]
). - Eine primitive Transformation (das Objekt
PrimitiveTransformation
).
Die Angabe eines infoTypes ist optional, doch ein InspectConfig
-Argument, in dem nicht mindestens ein infoType angegeben ist, bewirkt die Anwendung der Transformation auf alle eingebundenen infoTypes, für die keine Transformation angegeben wurde. Dies wird nicht empfohlen, da es zu verminderter Leistung und höheren Kosten führen kann.
Primitive Transformationen
Sie müssen mindestens eine primitive Transformation angeben, die auf die Eingabe angewendet werden soll, unabhängig davon, ob Sie sie nur auf bestimmte infoTypes oder auf den gesamten Textstring anwenden. In den folgenden Abschnitten werden Beispiele für Transformationsmethoden beschrieben, die Sie verwenden können. Eine Liste aller Transformationsmethoden, die beim Schutz sensibler Daten zur Verfügung stehen, finden Sie in der Transformationsreferenz.
replaceConfig
Wenn Sie replaceConfig
für ein ReplaceValueConfig
-Objekt festlegen, werden übereinstimmende Eingabewerte durch einen von Ihnen angegebenen Wert ersetzt.
Angenommen, Sie haben replaceConfig
für alle infoTypes EMAIL_ADDRESS
auf „[email-address]
“ festgelegt und der folgende String wird an den Schutz sensibler Daten gesendet:
My name is Alicia Abernathy, and my email address is aabernathy@example.com.
Der zurückgegebene String sieht so aus:
My name is Alicia Abernathy, and my email address is [email-address].
Das folgende JSON-Beispiel und den folgenden JSON-Code in mehreren Sprachen zeigen, wie die API-Anfrage formuliert wird und was die DLP API zurückgibt:
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.
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.
REST
Weitere Informationen zur Verwendung der DLP API mit JSON finden Sie im JSON-Schnellstart.
JSON-Eingabe:
POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:deidentify?key={YOUR_API_KEY}
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is aabernathy@example.com."
},
"deidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
],
"primitiveTransformation":{
"replaceConfig":{
"newValue":{
"stringValue":"[email-address]"
}
}
}
}
]
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
}
}
JSON-Ausgabe:
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is [email-address]."
},
"overview":{
"transformedBytes":"22",
"transformationSummaries":[
{
"infoType":{
"name":"EMAIL_ADDRESS"
},
"transformation":{
"replaceConfig":{
"newValue":{
"stringValue":"[email-address]"
}
}
},
"results":[
{
"count":"1",
"code":"SUCCESS"
}
],
"transformedBytes":"22"
}
]
}
}
redactConfig
Wenn Sie redactConfig
angeben, wird ein bestimmter Wert vollständig entfernt. Die redactConfig
-Meldung hat keine Argumente. Allein dadurch, dass sie angegeben wird, wird ihre Transformation aktiviert.
Angenommen, Sie haben redactConfig
für alle infoTypes EMAIL_ADDRESS
angegeben und der folgende String wird an den Schutz sensibler Daten gesendet:
My name is Alicia Abernathy, and my email address is aabernathy@example.com.
Der zurückgegebene String sieht so aus:
My name is Alicia Abernathy, and my email address is .
Die folgenden Beispiele zeigen, wie die API-Anfrage formuliert wird und was die DLP API zurückgibt:
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.
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.
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.
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.
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.
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.
REST
JSON-Eingabe:
POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:deidentify?key={YOUR_API_KEY}
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is aabernathy@example.com."
},
"deidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
],
"primitiveTransformation":{
"redactConfig":{
}
}
}
]
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
}
}
JSON-Ausgabe:
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is ."
},
"overview":{
"transformedBytes":"22",
"transformationSummaries":[
{
"infoType":{
"name":"EMAIL_ADDRESS"
},
"transformation":{
"redactConfig":{
}
},
"results":[
{
"count":"1",
"code":"SUCCESS"
}
],
"transformedBytes":"22"
}
]
}
}
characterMaskConfig
Wenn Sie characterMaskConfig
für ein CharacterMaskConfig
-Objekt festlegen, wird ein String teilweise maskiert, wobei eine bestimmte Anzahl von Zeichen durch ein festgelegtes Zeichen ersetzt wird. Die Maskierung kann vom Anfang oder Ende des Strings aus beginnen. Diese Transformation funktioniert auch mit Zahlentypen wie etwa langen Ganzzahlen.
Das Objekt CharacterMaskConfig
hat mehrere eigene Argumente:
maskingCharacter
: Das Zeichen, das zum Maskieren jedes Zeichens eines sensiblen Werts verwendet wird. Sie können beispielsweise ein Sternchen (*) oder eine Raute (#) angeben, um eine Reihe von Zahlen zu verbergen, zum Beispiel die Zahlen einer Kreditkartennummer.numberToMask
: Anzahl der Zeichen, die maskiert werden sollen. Wenn Sie diesen Wert nicht festlegen, werden alle übereinstimmenden Zeichen maskiert.reverseOrder
: Die Angabe, ob Zeichen in umgekehrter Reihenfolge maskiert werden sollen. WennreverseOrder
mit "true" festgelegt wird, werden Zeichen in übereinstimmenden Werten vom Ende bis zum Anfang des Werts maskiert. Wenn "false" festgelegt wird, beginnt die Maskierung am Anfang des Werts.charactersToIgnore[]
: Ein oder mehrere Zeichen, die beim Maskieren von Werten übersprungen werden sollen. Geben Sie hier beispielsweise einen Bindestrich an, um die Bindestriche bei der Maskierung einer Telefonnummer beizubehalten. Sie können auch eine Gruppe allgemeiner Zeichen (CharsToIgnore
) angeben, die beim Maskieren ignoriert werden sollen.
Angenommen, Sie haben characterMaskConfig
so eingestellt, dass die infoTypes EMAIL_ADDRESS
mit '#' markiert werden, ausgenommen die Zeichen '.' und '@'. Wenn der folgende String an den Schutz sensibler Daten gesendet wird:
My name is Alicia Abernathy, and my email address is aabernathy@example.com.
Der zurückgegebene String sieht so aus:
My name is Alicia Abernathy, and my email address is ##########@#######.###.
Die folgenden Beispiele zeigen, wie die DLP API verwendet wird, um sensible Daten mithilfe von Maskierungstechniken zu de-identifizieren.
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.
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.
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.
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.
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.
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.
REST
Das folgende JSON-Beispiel zeigt, wie die API-Anfrage formuliert wird und was die DLP API zurückgibt:
JSON-Eingabe:
POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:deidentify?key={YOUR_API_KEY}
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is aabernathy@example.com."
},
"deidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
],
"primitiveTransformation":{
"characterMaskConfig":{
"maskingCharacter":"#",
"reverseOrder":false,
"charactersToIgnore":[
{
"charactersToSkip":".@"
}
]
}
}
}
]
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
}
}
JSON-Ausgabe:
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is ##########@#######.###."
},
"overview":{
"transformedBytes":"22",
"transformationSummaries":[
{
"infoType":{
"name":"EMAIL_ADDRESS"
},
"transformation":{
"characterMaskConfig":{
"maskingCharacter":"#",
"charactersToIgnore":[
{
"charactersToSkip":".@"
}
]
}
},
"results":[
{
"count":"1",
"code":"SUCCESS"
}
],
"transformedBytes":"22"
}
]
}
}
cryptoHashConfig
Wenn Sie cryptoHashConfig
für ein CryptoHashConfig
-Objekt festlegen, wird eine Pseudonymisierung für einen Eingabewert ausgeführt, wobei ein Ersatzwert durch kryptografisches Hashing erzeugt wird.
Diese Methode ersetzt den Eingabewert durch einen verschlüsselten "Digest"- oder Hash-Wert.
Zur Berechnung des Digest wird der SHA-256-Hash des Eingabewerts verwendet.
Der kryptografische Schlüssel zum Erstellen des Hash-Werts ist ein CryptoKey
-Objekt und muss entweder 32 oder 64 Byte groß sein.
Die Methode gibt eine base64-codierte Darstellung der Hash-Ausgabe aus. Derzeit können nur Stringwerte und ganzzahlige Werte gehasht werden.
Angenommen, Sie haben cryptoHashConfig
für alle infoTypes EMAIL_ADDRESS
angegeben und das Objekt CryptoKey
besteht aus einem zufällig generierten Schlüssel (einem TransientCryptoKey
). Anschließend wird der folgende String an den Schutz sensibler Daten gesendet:
My name is Alicia Abernathy, and my email address is aabernathy@example.com.
Der kryptografisch erzeugte zurückgegebene String sieht folgendermaßen aus:
My name is Alicia Abernathy, and my email address is 41D1567F7F99F1DC2A5FAB886DEE5BEE.
Natürlich wird der hexadezimale String kryptografisch erzeugt und unterscheidet sich von dem hier gezeigten.
dateShiftConfig
Wenn Sie dateShiftConfig
für ein DateShiftConfig
-Objekt festlegen, erfolgt eine Datumsverschiebung eines Datumseingabewerts durch Verschieben der Angaben um eine zufällige Anzahl von Tagen.
Verfahren zur Datumsverschiebung verlagern eine Reihe von Datumsangaben um einen zufälligen Wert, behalten aber die Reihenfolge und Dauer bei. Die Datumsverschiebung wird in der Regel in Bezug auf Einzelpersonen oder Entitäten verwendet. Das heißt, Sie möchten alle Datumsangaben für eine bestimmte Person um die gleiche Verschiebungsdifferenz verschieben, aber für jede andere Person eine separate Verschiebungsdifferenz verwenden.
Weitere Informationen zum Verschieben von Datumsangaben finden Sie unter Datumsverschiebung.
Der folgende Beispielcode in mehreren Sprachen zeigt, wie mithilfe der DLP API Datumsangaben durch Datumsverschiebung de-identifiziert werden.
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.
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.
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.
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.
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.
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.
cryptoReplaceFfxFpeConfig
Wenn Sie cryptoReplaceFfxFpeConfig
für ein CryptoReplaceFfxFpeConfig
-Objekt festlegen, wird eine Pseudonymisierung für einen Eingabewert ausgeführt, wobei ein Eingabewert durch ein Token ersetzt wird. Dieses Token ist:
- der verschlüsselte Eingabewert
- Ist gleich lang wie der Eingabewert.
- Wird mithilfe der formaterhaltenden Verschlüsselung im FFX-Modus berechnet, die auf dem kryptografischen Schlüssel basiert, der durch
cryptoKey
angegeben wird. - Wird aus den mit
alphabet
angegebenen Zeichen gebildet. Gültige Optionen:NUMERIC
HEXADECIMAL
UPPER_CASE_ALPHA_NUMERIC
ALPHA_NUMERIC
Der Eingabewert:
- Muss mindestens zwei Zeichen lang sein (oder der leere String).
- Muss aus den mit
alphabet
angegebenen Zeichen bestehen.alphabet
kann 2 bis 95 Zeichen umfassen. (Einalphabet
mit 95 Zeichen enthält alle druckbaren Zeichen aus dem US-ASCII-Zeichensatz.)
Der Schutz sensibler Daten berechnet das Ersatztoken mithilfe eines kryptografischen Schlüssels. Zum Angeben dieses Schlüssels haben Sie drei Möglichkeiten:
- Unverschlüsselte Einbettung in die API-Anfrage Das wird jedoch nicht empfohlen.
- Indem Sie beantragen, dass der Schutz sensibler Daten diese generiert.
- Unverschlüsselte Einbettung in die API-Anfrage
Wenn Sie den Schlüssel in die API-Anfrage einbetten, müssen Sie einen Schlüssel erstellen und ihn mit einem Cloud KMS-Schlüssel (Cloud Key Management Service) verpacken. Der Wert ist standardmäßig ein base64-codierter String. Um diesen Wert beim Schutz sensibler Daten festzulegen, müssen Sie ihn in einen Bytestring decodieren. Die folgenden Code-Snippets verdeutlichen diesen Vorgang in verschiedenen Sprachen. Im Anschluss an diese Snippets folgen End-to-End-Beispiele.
Java
KmsWrappedCryptoKey.newBuilder()
.setWrappedKey(ByteString.copyFrom(BaseEncoding.base64().decode(wrappedKey)))
Python
# The wrapped key is base64-encoded, but the library expects a binary
# string, so decode it here.
import base64
wrapped_key = base64.b64decode(wrapped_key)
PHP
// Create the wrapped crypto key configuration object
$kmsWrappedCryptoKey = (new KmsWrappedCryptoKey())
->setWrappedKey(base64_decode($wrappedKey))
->setCryptoKeyName($keyName);
C#
WrappedKey = ByteString.FromBase64(wrappedKey)
Weitere Informationen zum Verschlüsseln und Entschlüsseln von Daten mit Cloud KMS finden Sie unter Daten verschlüsseln und entschlüsseln.
Die Länge und der Zeichensatz des Eingabetexts werden bei FPE-FFX standardmäßig beibehalten. Das bedeutet: Die Authentifizierung und der Initialisierungsvektor fehlen, was zu einer Längenerweiterung im Ausgabetoken führen kann. Andere Methoden wie AES-SIV bieten diese höheren Sicherheitsgarantien und werden für Anwendungsfälle mit Tokenisierung empfohlen, es sei denn, die Länge und der Zeichensatz müssen strenge Anforderungen erfüllen, z. B. für die Abwärtskompatibilität mit Legacy-Datensystemen.
Der folgende Beispielcode in mehreren Sprachen zeigt, wie Sie mit dem Schutz sensibler Daten sensible Daten de-identifizieren, indem ein Eingabewert durch ein Token ersetzt wird.
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.
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.
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.
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.
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.
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.
Codebeispiele, die zeigen, wie Sie den Schutz sensibler Daten verwenden, um sensible Daten zu re-identifizieren, die durch die Transformationsmethode CryptoReplaceFfxFpeConfig
de-identifiziert wurden, finden Sie unter Beispiele für formaterhaltende Verschlüsselung: Re-Identifikation.
fixedSizeBucketingConfig
Die Bucketing-Transformationen (diese und bucketingConfig
) dienen dazu, numerische Daten durch "Bucketing" in Bereiche zu maskieren. Der sich daraus ergebende Zahlenbereich ist ein String mit Bindestrich, bestehend aus einer unteren Grenze, einem Bindestrich und einer oberen Grenze.
Wenn Sie fixedSizeBucketingConfig
für ein FixedSizeBucketingConfig
-Objekt festlegen, werden Eingabewerte anhand fester Größenbereiche in Buckets gruppiert. Das FixedSizeBucketingConfig
-Objekt besteht aus Folgendem:
lowerBound
: Der untere Grenzwert aller Buckets. Werte, die unter diesem Wert liegen, werden in einem einzelnen Bucket zusammengefasst.upperBound
: Der obere Grenzwert aller Buckets. Größere Werte werden in einem einzigen Bucket zusammengefasst.bucketSize
: Die Größe jedes Buckets mit Ausnahme der Buckets, die die Minimal- und Maximalwerte enthalten.
Wenn beispielsweise lowerBound
auf 10 gesetzt ist, upperBound
auf 89 und bucketSize
auf 10, werden die folgenden Buckets verwendet: –10, 10–20, 20–30, 30–40, 40–50, 50–60, 60–70, 70–80, 80–89, 89+.
Weitere Informationen zum Konzept des Bucketings finden Sie unter Generalisierung und Bucketing.
bucketingConfig
Die Transformation bucketingConfig
bietet mehr Flexibilität als die andere Bucketing-Transformation fixedSizeBucketingConfig
.
Anstatt Ober- und Untergrenzen sowie einen Intervallwert anzugeben, um gleich große Buckets zu erstellen, geben Sie die Maximal- und Minimalwerte für jeden Bucket an, den Sie erstellen möchten. Der Typ muss bei allen Paaren aus Maximal- und Minimalwert derselbe sein.
Wenn Sie bucketingConfig
für ein BucketingConfig
-Objekt festlegen, werden benutzerdefinierte Buckets angegeben. Das BucketingConfig
-Objekt besteht aus einem buckets[]
-Array mit Bucket
-Objekten. Jedes Bucket
-Objekt besteht aus Folgendem:
min
: Untergrenze des Bucket-Bereichs. Lassen Sie diesen Wert aus, um einen Bucket zu erstellen, der keine Untergrenze hat.max
: Obergrenze des Bucket-Bereichs. Lassen Sie diesen Wert aus, um einen Bucket zu erstellen, der keine Obergrenze hat.replacementValue
: Wert, durch den Werte ersetzt werden sollen, die zwischen die untere und obere Grenze fallen. Wenn Sie keinenreplacementValue
angeben, wird stattdessen einmin-max
-Bereich mit Bindestrich verwendet.
Wenn ein Wert außerhalb der definierten Bereiche liegt, enthält die gelieferte TransformationSummary
eine Fehlermeldung.
Betrachten Sie beispielsweise die folgende Konfiguration für die bucketingConfig
-Transformation:
"bucketingConfig":{
"buckets":[
{
"min":{
"integerValue":"1"
},
"max":{
"integerValue":"30"
},
"replacementValue":{
"stringValue":"LOW"
}
},
{
"min":{
"integerValue":"31"
},
"max":{
"integerValue":"65"
},
"replacementValue":{
"stringValue":"MEDIUM"
}
},
{
"min":{
"integerValue":"66"
},
"max":{
"integerValue":"100"
},
"replacementValue":{
"stringValue":"HIGH"
}
}
]
}
Damit wird das folgende Verhalten definiert:
- Ganzzahlwerte zwischen 1 und 30 werden maskiert, indem sie durch
LOW
ersetzt werden. - Ganzzahlwerte zwischen 31 und 65 werden maskiert, indem sie durch
MEDIUM
ersetzt werden. - Ganzzahlwerte zwischen 66 und 100 werden maskiert, indem sie durch
HIGH
ersetzt werden.
Weitere Informationen zum Konzept des Bucketings finden Sie unter Generalisierung und Bucketing.
replaceWithInfoTypeConfig
Bei Angabe von replaceWithInfoTypeConfig
wird jeder übereinstimmende Wert durch den Namen des infoType ersetzt. Die replaceWithInfoTypeConfig
-Meldung hat keine Argumente. Allein dadurch, dass sie angegeben wird, wird ihre Transformation aktiviert.
Angenommen, Sie haben replaceWithInfoTypeConfig
für alle infoTypes EMAIL_ADDRESS
angegeben und der folgende String wird an den Schutz sensibler Daten gesendet:
My name is Alicia Abernathy, and my email address is aabernathy@example.com.
Der zurückgegebene String sieht so aus:
My name is Alicia Abernathy, and my email address is EMAIL_ADDRESS.
timePartConfig
Wenn Sie timePartConfig
für ein TimePartConfig
-Objekt festlegen, wird ein Teil eines übereinstimmenden Werts beibehalten, der Werte für Date
, Timestamp
und TimeOfDay
enthält. Das TimePartConfig
-Objekt besteht aus einem partToExtract
-Argument, das mit einem beliebigen Enum-Wert der Art TimePart
festgelegt werden kann, einschließlich Jahr, Monat, Tag des Monats und so weiter.
Angenommen, Sie haben eine timePartConfig
-Transformation konfiguriert, wofür Sie partToExtract
auf YEAR
festgelegt haben. Nachdem Sie die Daten in der ersten Spalte unten an den Schutz sensibler Daten gesendet haben, erhalten Sie die transformierten Werte in der zweiten Spalte:
Ursprüngliche Werte | Transformierte Werte |
---|---|
9/21/1976 |
1976 |
6/7/1945 |
1945 |
1/20/2009 |
2009 |
7/4/1776 |
1776 |
8/1/1984 |
1984 |
4/21/1982 |
1982 |
Eintragstransformationen
Eintragstransformationen (das Objekt RecordTransformations
) werden nur auf Werte innerhalb von Tabellendaten angewendet, die als spezifischer infoType gekennzeichnet sind. Innerhalb von RecordTransformations
gibt es zwei Unterkategorien von Transformationen:
fieldTransformations[]
: Transformationen, die verschiedene Feldtransformationen anwenden.recordSuppressions[]
: Regeln, die festlegen, welche Einträge vollständig unterdrückt werden. Einträge, die mit einer Unterdrückungsregel inrecordSuppressions[]
übereinstimmen, werden in der Ausgabe ausgelassen.
Feldtransformationen
Jedes FieldTransformation
-Objekt enthält drei Argumente:
fields
: Ein oder mehrere Eingabefelder (FieldID
-Objekte), auf die die Transformation angewendet werden soll.condition
: Eine Bedingung (einRecordCondition
-Objekt), die als wahr ausgewertet werden muss, damit die Transformation angewendet wird. Zum Beispiel: Eine Bucket-Transformation nur dann auf eine Altersspalte eines Eintrags anwenden, wenn sich die Postleitzahlenspalte für denselben Eintrag in einem bestimmten Bereich befindet. Oder: Ein Feld nur dann entfernen, wenn das Geburtsdatumsfeld das Alter einer Person auf 85 oder höher setzt.- Eines der folgenden zwei Argumente des Transformationstyps. Eines davon muss angegeben werden:
infoTypeTransformations
: Der Inhalt des Felds wird als Freitext behandelt und einePrimitiveTransformation
nur auf Inhalte angewendet, die mit einemInfoType
übereinstimmen. Diese Transformationen wurden zuvor in diesem Thema besprochen.primitiveTransformation
: Die angegebene primitive Transformation (PrimitiveTransformation
-Objekt) wird auf das gesamte Feld angewendet. Diese Transformationen wurden zuvor in diesem Thema besprochen.
Beispiel für Feldtransformationen
Im folgenden Beispiel wird eine projects.content.deidentify
-Anfrage mit zwei Feldtransformationen gesendet:
Die erste Feldtransformation gilt für die ersten beiden Spalten (
column1
undcolumn2
). Da es sich beim Transformationstyp um einprimitiveTransformation
-Objekt (insbesondere einCryptoDeterministicConfig
) handelt, wird beim Schutz sensibler Daten das gesamte Feld transformiert.Die zweite Feldtransformation gilt für die dritte Spalte (
column3
). Da der Transformationstyp eininfoTypeTransformations
-Objekt ist, wendet der Schutz sensibler Daten die primitive Transformation (insbesondereReplaceWithInfoTypeConfig
) auf den Inhalt an, der dem in der Inspektionskonfiguration festgelegten infoType entspricht.
Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:
-
PROJECT_ID
: Ihre Google Cloud-Projekt-ID. Projekt-IDs sind alphanumerische Strings wiemy-project
.
HTTP-Methode und URL:
POST https://dlp.googleapis.com/v2/projects/PROJECT_ID/content:deidentify
JSON-Text der Anfrage:
{ "item": { "table": { "headers": [ { "name": "column1" }, { "name": "column2" }, { "name": "column3" } ], "rows": [ { "values": [ { "stringValue": "Example string 1" }, { "stringValue": "Example string 2" }, { "stringValue": "My email address is dani@example.org" } ] }, { "values": [ { "stringValue": "Example string 1" }, { "stringValue": "Example string 3" }, { "stringValue": "My email address is cruz@example.org" } ] } ] } }, "deidentifyConfig": { "recordTransformations": { "fieldTransformations": [ { "fields": [ { "name": "column1" }, { "name": "column2" } ], "primitiveTransformation": { "cryptoDeterministicConfig": { "cryptoKey": { "unwrapped": { "key": "YWJjZGVmZ2hpamtsbW5vcA==" } } } } }, { "fields": [ { "name": "column3" } ], "infoTypeTransformations": { "transformations": [ { "primitiveTransformation": { "replaceWithInfoTypeConfig": {} } } ] } } ] } }, "inspectConfig": { "infoTypes": [ { "name": "EMAIL_ADDRESS" } ] } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
{ "item": { "table": { "headers": [ { "name": "column1" }, { "name": "column2" }, { "name": "column3" } ], "rows": [ { "values": [ { "stringValue": "AWttmGlln6Z2MFOMqcOzDdNJS52XFxOOZsg0ckDeZzfc" }, { "stringValue": "AUBTE+sQB6eKZ5iD3Y0Ss682zANXbijuFl9KL9ExVOTF" }, { "stringValue": "My email address is [EMAIL_ADDRESS]" } ] }, { "values": [ { "stringValue": "AWttmGlln6Z2MFOMqcOzDdNJS52XFxOOZsg0ckDeZzfc" }, { "stringValue": "AU+oD2pnqUDTLNItE8RplY3E0fTHeO4rZkX4GeFHN2CI" }, { "stringValue": "My email address is [EMAIL_ADDRESS]" } ] } ] } }, "overview": { "transformedBytes": "96", "transformationSummaries": [ { "field": { "name": "column1" }, "results": [ { "count": "2", "code": "SUCCESS" } ], "fieldTransformations": [ { "fields": [ { "name": "column1" }, { "name": "column2" } ], "primitiveTransformation": { "cryptoDeterministicConfig": { "cryptoKey": { "unwrapped": { "key": "YWJjZGVmZ2hpamtsbW5vcA==" } } } } } ], "transformedBytes": "32" }, { "field": { "name": "column2" }, "results": [ { "count": "2", "code": "SUCCESS" } ], "fieldTransformations": [ { "fields": [ { "name": "column1" }, { "name": "column2" } ], "primitiveTransformation": { "cryptoDeterministicConfig": { "cryptoKey": { "unwrapped": { "key": "YWJjZGVmZ2hpamtsbW5vcA==" } } } } } ], "transformedBytes": "32" }, { "infoType": { "name": "EMAIL_ADDRESS", "sensitivityScore": { "score": "SENSITIVITY_MODERATE" } }, "field": { "name": "column3" }, "results": [ { "count": "2", "code": "SUCCESS" } ], "fieldTransformations": [ { "fields": [ { "name": "column3" } ], "infoTypeTransformations": { "transformations": [ { "primitiveTransformation": { "replaceWithInfoTypeConfig": {} } } ] } } ], "transformedBytes": "32" } ] } }
Einträge unterdrücken
Sie können den Schutz sensibler Daten nicht nur auf Felddaten anwenden, sondern auch anweisen, Daten zu de-identifizieren. Dazu werden Datensätze einfach unterdrückt, wenn bestimmte Unterdrückungsbedingungen als wahr ausgewertet werden. Sie können sowohl Feldtransformationen als auch Datensatzunterdrückungen in derselben Anfrage anwenden.
Sie legen die recordSuppressions
-Meldung des Objekts RecordTransformations
auf ein Array von einem oder mehreren RecordSuppression
-Objekten fest.
Jedes RecordSuppression
-Objekt enthält ein einzelnes RecordCondition
-Objekt, das wiederum ein einzelnes Expressions
-Objekt enthält.
Ein Expressions
-Objekt enthält:
logicalOperator
: Einer der Enum-TypenLogicalOperator
.conditions
: EinConditions
-Objekt, das ein Array aus einem oder mehrerenCondition
-Objekten enthält. UnterCondition
ist ein Vergleich zwischen einem Feldwert und einem anderen Wert zu verstehen, die beide vom Typstring
,boolean
,integer
,double
,Timestamp
oderTimeofDay
sind.
Wenn der Vergleich als wahr ausgewertet wird, wird der Eintrag unterdrückt und umgekehrt. Wenn die verglichenen Werte nicht vom selben Typ sind, wird eine Warnung ausgegeben und die Bedingung als falsch ausgewertet.
Reversible Transformationen
Wenn Sie Daten mithilfe der infoType-Transformationen CryptoReplaceFfxFpeConfig
oder CryptoDeterministicConfig
de-identifizieren, können Sie diese Daten wieder identifizieren, sofern Sie den CryptoKey
haben, der ursprünglichen bei der De-Identifikation verwendet wurde.
Weitere Informationen finden Sie unter Crypto-basierte Tokenisierungstransformationen.
Anzahl der Ergebnisse begrenzen
Wenn Ihre Anfrage mehr als 3.000 Ergebnisse enthält, gibt der Schutz sensibler Daten die folgende Meldung zurück:
Too many findings to de-identify. Retry with a smaller request.
Die Liste der Ergebnisse, die der Schutz sensibler Daten zurückgibt, ist eine beliebige Teilmenge aller Ergebnisse in der Anfrage. Teilen Sie Ihre Anfrage in kleinere Batches auf, um alle Ergebnisse zu erhalten.
Nächste Schritte
Funktionsweise eines Workflows zur De-Identifikation in realen Bereitstellungen
Codelab Sensible Daten mit dem Schutz sensibler Daten entfernen durcharbeiten
Arbeiten Sie ein Beispiel durch, das zeigt, wie Sie einen verpackten Schlüssel erstellen, Inhalte tokenisieren und tokenisierte Inhalte re-identifizieren.
Weitere Informationen zum Erstellen einer de-identifizierten Kopie von Daten im Speicher.