Sie befinden sich hier:
Archivieren von Apex – Recht auf Vergessenwerden
Verordnungen zum Schutz personenbezogener Daten gewähren Einzelpersonen das Recht auf Vergessenwerden, sodass Organisationen personenbezogene Daten auf Anforderung sicher löschen müssen. Archivieren Apex ermöglicht die Einhaltung von Vorschriften, indem bestimmte Daten in der Anwendung "Archivieren" identifiziert und gelöscht werden. Dadurch wird eine gründliche Entfernung sichergestellt, während die Integrität anderer archivierter Daten gewahrt bleibt.
RTBF-Filterkriterien
Geben Sie zum Verarbeiten einer RTBF-Anforderung die entsprechenden Filterkriterien an. Beispiel:
| Kriterien | Beispiel |
|---|---|
| Feldname | Mitarbeiter-ID |
| Objekt | Kontakt |
| Wert | ID 123456789011121314 |
Wichtige Überlegungen
- Einreichungen sind auf 10.000 Anforderungen pro Tag mit einer Obergrenze von 10.000 Stammdatensätzen begrenzt.
- Der Löschvorgang für RTBF erstreckt sich auf direkt und indirekt verwandte untergeordnete Datensätze in einer Hierarchie.
- Überlappende Suchergebnisse können einige Datensätze in der Überprüfungsdatei als bereits gelöscht markieren.
- Wenn die Suchergebnisobergrenze erreicht ist, wird im Apex-Aktivitätsstatus ein
200mit diesem Fehler angezeigt.Request processed. Maximum search results reached. Refine your search or submit a new request. - Die meisten standardmäßigen RTBF-Anforderungen werden innerhalb von 30 Minuten abgeschlossen.
- Zielen Sie für optimale Ergebnisse auf das Stammobjekt.
- Bei Objekt- und Feldnamenfiltern wird die Groß- und Kleinschreibung nicht berücksichtigt.
- Die teilweise Löschung wird vom Archiv nicht unterstützt.
RTBF-Verhalten für untergeordnete Datensätze in einer archivierten Hierarchie
Beim Ausführen einer RTBF-Anforderung für einen untergeordneten Datensatz entfernt die Anforderung die gesamte zugehörige archivierte Hierarchie.
Wenn Sie beispielsweise nach einem bestimmten Kundenvorgangs-Datensatz suchen und eine RTBF-Anforderung zum Archivieren senden, werden der Kundenvorgang, die zugehörigen Aufgaben und der zugehörige Accountstammdatensatz durch die Anforderung entfernt. Da diese Datensätze zusammen archiviert wurden, löscht RTBF die gesamte archivierte Hierarchie.
Wenn der Account jedoch separat archiviert wurde, werden bei der Ausführung von RTBF für den Kundenvorgangs-Datensatz nur der Kundenvorgang und seine Aufgaben entfernt, nicht jedoch der Account-Datensatz.
Funktionsweise von RTBF
Der RTBF-Prozess wird als asynchroner Prozess ausgeführt und folgt diesen sequenziellen API-Aufrufen.
- Datenidentifikation: Apex queries Archive (Apex-Abfragen archivieren), um alle Datensätze zu finden, die den angegebenen Filterkriterien entsprechen.
- Datenlöschung: Apex sendet eine Löschanforderung an "Archivieren" und entfernt alle übereinstimmenden Datensätze.
Nach Abschluss des Vorgangs wird in der Archivkonsole auf der Registerkarte "Aktivitäten" ein Symbol für Aktivitäten mit RTBF angezeigt.
Beispiel für eine RTBF-Anforderung
Eine ehemalige Mitarbeiterin, Maria Johnson, sendet eine RTBF-Anforderung, um alle personenbezogenen Daten aus Ihrem System zu löschen. Ihr Unternehmen archiviert Mitarbeiterdatensätze zusammen mit ihrer E-Mail-Korrespondenz, Kundeninteraktionen und Projektzuweisungen. Verwenden Sie dieses Filterkriterium, um der RTBF-Anforderung zu folgen.
| Objekt | Feldname | Wert |
|---|---|---|
| Kontakt | Maria@own.com | |
| Kundenvorgang | Mitarbeiter-ID | 987654321 |
| Task | Zugewiesen zu | Maria Johnson |
| Absender: | Maria@own.com | |
| Dokument | Inhaber | Maria Johnson |
Diese Anforderung stellt sicher, dass Marias Daten vollständig entfernt werden, einschließlich ihrer Kontaktinformationen, Kundenvorgänge, an denen sie beteiligt war, Aufgaben, die ihr zugewiesen wurden, und aller mit ihr verknüpften E-Mail- und Dokumentdatensätze. Dieser Prozess trägt dazu bei, die Einhaltung der Verordnungen zum Datenschutz beizubehalten und gleichzeitig eine gründliche und genaue Löschung vertraulicher Informationen sicherzustellen.
API-Methoden und Antwortverarbeitung
Es wird empfohlen, Ihre Kriterien zu validieren, indem Sie die Abfrage für Apex-Datenabfragen ausführen, bevor Sie die Anforderung für RTBF senden.
| Eingabe | Ausgabe | Definition |
|---|---|---|
ArchiverAccessorResponse |
|
Die Antwort des API-Aufrufs "Vergessen". Gibt eine requestId zurück, um den Status der Anforderung mithilfe der getRTBFStatus-Methode zu verfolgen. |
Criteria(Zeichenfolgen-sObjectName, Zeichenfolgen-fieldName, Zeichenfolgen-value) |
||
forgetArchivedRecords(list<Criteria>
inputFilters) |
ArchiverAccessorResponse |
Öffentliche Methode, die eine Anforderung zum Archivieren vergessen und eine Liste der zu löschenden Kriterien erstellt. |
getRTBFStatus(string requestId) |
Ein CSV-Bericht mit allen Details zu den gelöschten Informationen. | Öffentliche Methode, die Ihnen die Möglichkeit gibt, Ihrer RTBF-Anforderung Folge zu leisten. |
- Apex archivieren: Ausführen einer RTBF-Anforderung
Testen Sie Apex manuell archivieren und führen Sie eine RTBF-Anforderung in der Anwendung "Archivieren" aus. - Archivieren von Apex – Szenarien für RTF-Anwendungsfälle
Verwenden Sie Kundenvorgangsszenarien für RTBF in der Archivanwendung. - Apex archivieren: Anonymisieren von personenbezogenen Daten in der Archivanwendung
Anonymisieren Sie personenbezogene Daten in archivierten Datensätzen, ohne den Datensatz selbst zu löschen. Die Anonymisierung ersetzt sensible Werte durch irreversible Platzhalter, damit Sie die Datenschutzbestimmungen einhalten und gleichzeitig die Datensatzstruktur der Archivanwendung beibehalten können.
Apex archivieren: Ausführen einer RTBF-Anforderung
Testen Sie Apex manuell archivieren und führen Sie eine RTBF-Anforderung in der Anwendung "Archivieren" aus.
- Klicken Sie auf das Symbol Einstellungen.
- Wählen Sie Developer Console aus.
-
Drücken Sie zum Öffnen der Konsole
F12oderCtrl+Shift+Iunter Windows oderCmd+Eunter Mac. -
Führen Sie diesen Code in der Konsole aus, um eine Kriterienliste zu erstellen, eine RTBF-Anforderung zu senden und die
requestIdaus Archiv abzurufen.SF_Archive.Criteria criteria1 = new SF_Archive.Criteria('Account', 'Name', 'example name'); list<SF_Archive.Criteria> lst = new list<SF_Archive.Criteria>(); lst.add(criteria1); SF_Archive.ArchiverAccessorResponse response = SF_Archive.ArchiverAccessor.forgetArchivedRecords(lst); Map<String, String> values = (Map<String, String>)JSON.deserialize(response.getBody(), Map<String, String>.class); String requestId = values.get('request_id'); system.debug(requestId); -
Klicken Sie auf Execute (Ausführen).
Die Anforderung beginnt. Nach Abschluss wird die
requestIdim Ausführungsprotokoll gespeichert.
Anzeigen des Status der RTBF-Anforderung
Nachdem Sie eine RTBF-Anforderung gesendet haben, können Sie den Status der Anforderung anzeigen.
- Klicken Sie oben rechts auf der Seite auf das Symbol Einstellungen.
- Wählen Sie Developer Console aus.
-
Drücken Sie
Command + E. -
Führen Sie diesen Code mithilfe des
requestIdfür Ihre RTBF-Anforderung aus.SF_Archive.ArchiverAccessorResponse reportResponse = SF_Archive.ArchiverAccessor.getRTBFStatus(requestId); system.debug(reportResponse.getBody()); -
Klicken Sie auf Execute (Ausführen).
Die Statusanforderung beginnt. Nach Abschluss wird einer dieser Status im Ausführungsprotokoll angezeigt.
Request failed, please contact support.Die Anforderung war erfolglos und fehlgeschlagen.
Request handled, no matching results were found.:Es gab keine Datensätze, die den angegebenen Kriterien entsprachen.
Request is open. Scan is still in progress.Die Anforderung wird noch ausgeführt.
Nach erfolgreichem Abschluss der Anforderung erhalten Sie einen CSV-Bericht mit allen Details zu den gelöschten Informationen.
Der CSV-Bericht enthält diese Informationen.
| Feld | Beschreibung |
|---|---|
| Kriteriendatensatz | Das Datensatzfeld, das den Löschkriterien der Anforderung entspricht. |
| Kriterien-Datensatztyp | Die Kriterien der Anforderung. |
| Zugehörige Salesforce-ID, die zum Löschen führte | Die Zeile, auf die ein anderer Datensatz in der Tabelle verweist, der ebenfalls die Kriterien erfüllt. |
| Salesforce-ID | Die ID des in der Berichtszeile enthaltenen Datensatzes. |
| Status | Gibt an, ob der Datensatz gelöscht wurde oder nicht. |
Allgemeine RTBF-Fehler
Ungültige Kriterien
- Das Feld muss mit einem Objekt übereinstimmen.
- Es ist nicht mehr als ein Kriterium mit demselben Objekt zulässig.
- Sie können bis zu 10 Kriterien pro Anforderung senden.
Keine Ergebnisse
- Der Wert kann nicht partiell sein.
- Kriterien müssen vom Datensatztyp sein, der archiviert wurde.
Wenn Sie beispielsweise über einen Account mit ID-X verfügen und die zu dieser ID gehörenden Kundenvorgänge archiviert haben, müssen Sie Kundenvorgänge ausschließen, die zu diesem Account gehören. Erstellen Sie dazu die folgenden Filterkriterien.
Object type: Case, field: AccountId, value: XObject type: Account, field: Id, value: XDurch dieses Kriterium wird nichts gelöscht, da "Archiv" nicht über den entsprechenden Account verfügt.Archivieren von Apex – Szenarien für RTF-Anwendungsfälle
Verwenden Sie Kundenvorgangsszenarien für RTBF in der Archivanwendung.
Szenario 1: RTBF mit mehreren Objekten
Jane Doe ist Kundin der XYZ Bank, wo sie seit 2 Jahren ein Konto hat. Kürzlich hat sie beschlossen, dass sie ihren RTBF gemäß der Datenschutz-Grundverordnung (DSGVO) ausüben möchte. Jane glaubt, dass die Bank unnötige persönliche Daten über sie speichert, und möchte, dass sie aus ihren Datensätzen gelöscht werden.
Jane sendet ihre RTBF-Anforderung an die XYZ Bank und gibt die personenbezogenen Daten an, die gelöscht werden sollen. Dazu können Accountinformationen, der Transaktionsverlauf und alle anderen personenbezogenen Daten der Bank gehören. Die Bank fährt fort, Janes persönliche Daten zu identifizieren und zu finden.
| Kriterien | Filter | Filter | Filter | Filter |
|---|---|---|---|---|
| Objekt | Account | Transaktion_c | Kundenvorgang | |
| Feldname | Name | Transaktionsbenutzer | Kundenname | Von |
| Wert | Jane Doe | Jane Doe | Jane Doe | Jane Doe |
Die RTBF-Anforderung kann bis zu 10 separate Objekte enthalten.
Ergebnisse:
Im Archiv werden 1 Account, 2.000 Transaktionen, 15 Kundenvorgänge als Stammdaten und 30 E-Mails gefunden.
Szenario 2: Einzelnes RTBF-Objekt
Ein Pharmaunternehmen veröffentlichte ein experimentelles Medikament, Eddy's Elixirs, um Arthritis zu behandeln. Es führte jedoch zu schweren Nebenwirkungen bei den Patienten. Nach dem Rückruf des Medikaments reichte das Unternehmen einen RTBF-Antrag ein, um alle öffentlichen Datensätze und digitalen Inhalte in Bezug auf Eddy's Elixiere zu entfernen.
| Kriterien | Filter |
|---|---|
| Objekt | Kundenvorgang |
| Feldname | Arzneimittelname |
| Wert | Eddys Elixiere |
Ergebnisse:
Im Archiv werden 1.000 Kundenvorgänge als Stammdatensätze und 1.000 Patientendatensätze unterhalb des Stammdatensatzes als untergeordnete Datensätze archiviert. Dadurch werden sie alle entfernt.
Eine Aktivität wird auf der Registerkarte "Archive Console Activities" (Aktivitäten der Konsole archivieren) mit dem Symbol RTBF erstellt.
Szenario 3: Über 10.000 Stammdatensätze gefunden
Emily Jones, eine regelmäßige Benutzerin einer beliebten Social-Media-Plattform namens ConnectWorld, deaktiviert ihren Account und bittet darum, ihren RTBF gemäß den Datenschutzbestimmungen auszuüben.
| Objekt | Filter | Filter | Filter |
|---|---|---|---|
| Objekt | Benutzeraccount | Kontakt | Kundenvorgang |
| Feldname | Name | Phone | Zugehörige ID |
| Wert | Account-ID für Emily Jones | Emilys Telefonnummer | Account-ID für Emily Jones |
Ergebnisse:
Das Archiv sucht 20.000 Stamm-Kundenvorgangsdatensätze, 300.000 Kontakte und 10.000 Kundenvorgänge als Stammdatensätze und 150.000 Kontakte, die unterhalb des Stammdatensatzes archiviert werden, wenn untergeordnete Datensätze entfernt werden.
Eine Aktivität wird auf der Registerkarte "Archive Console Activities" (Aktivitäten der Konsole archivieren) mit dem Symbol RTBF erstellt.
getRTBFStatus gibt einen Statuscode 200 mit der Fehlermeldung "Anforderung verarbeitet" zurück. Maximal erreichte Suchergebnisse. Grenzen Sie Ihre Suche ein oder senden Sie eine neue Anforderung, um weitere Datensätze anzuzeigen."
Das Archiv kann nur bis zu 10.000 Stammdatensätze pro RTBF Apex Anforderung verarbeiten. Führen Sie zum Beheben dieses Fehlers die Abfrage erneut aus, um die restlichen Datensätze abzurufen.
Apex archivieren: Anonymisieren von personenbezogenen Daten in der Archivanwendung
Anonymisieren Sie personenbezogene Daten in archivierten Datensätzen, ohne den Datensatz selbst zu löschen. Die Anonymisierung ersetzt sensible Werte durch irreversible Platzhalter, damit Sie die Datenschutzbestimmungen einhalten und gleichzeitig die Datensatzstruktur der Archivanwendung beibehalten können.
Die Anonymisierung, auch Maskierung genannt, hilft Ihnen, Datenschutzanforderungen wie dem Recht auf Vergessenwerden (RTBF) nachzukommen. Dieser Prozess führt eine Aktualisierung für archivierte Datensätze durch. Im Gegensatz zu einer Bereinigungsaktion, bei der Daten dauerhaft gelöscht werden, ersetzt die Anonymisierung bestimmte sensible Werte durch generischen Text, beispielsweise redacted@example.com.
Funktionsweise der Anonymisierung
Das System erkennt personenbezogene Felder wie Name, E-Mail, Telefon und Adresse mithilfe von Objektmetadaten. Wenn Sie eine Anforderung senden, maskiert das System die ursprünglichen personenbezogenen Daten mit irreversiblen Platzhaltern. Nicht personenbezogene Daten wie Datensatz-IDs und Zeitstempel bleiben unverändert und können durchsucht werden.
Die Anonymisierung ist umfassend. Wenn Sie einen Stammdatensatz anonymisieren, wird der Anonymisierungsprozess automatisch zu allen zugehörigen untergeordneten Datensätzen in derselben archivierten Hierarchie kaskadiert. Wenn Sie beispielsweise einen Kontaktdatensatz anonymisieren, werden personenbezogene Daten auch in den zugehörigen Aufgaben und Ereignissen dieses Datensatzes anonymisiert.
Wichtige Überlegungen
- Der Anonymisierungsprozess ist dauerhaft. Nach der Anonymisierung können Sie keine ursprünglichen personenbezogenen Daten wiederherstellen oder anzeigen.
- Sie können einen Datensatz nur einmal anonymisieren. Wenn Sie eine doppelte Anforderung für einen anonymisierten Datensatz senden, wird er vom System ignoriert.
- Bei der Anonymisierung gilt die standardmäßige Obergrenze für Archiv-RTB-Raten von 10.000 Anforderungen pro Organisation und Tag.
- Sie können die zu anonymisierenden Felder nicht manuell auswählen. Das System identifiziert personenbezogene Felder automatisch anhand des Wiederherstellungsalgorithmus.
- Sie können keine Datensätze anonymisieren, die gesetzlich gespeichert sind. Das System schließt Datensätze automatisch aus, die sich derzeit in der rechtlichen Warteschleife oder Aufbewahrungssperre befinden.
Senden einer Anonymisierungsanforderung
Definieren Sie Ihre Zielkriterien und senden Sie mithilfe der Apex-Klasse SF_Archive.ArchiverAccessor einen Anonymisierungsauftrag.
Stellen Sie sicher, dass Sie die folgenden Anforderungen erfüllen.
- Der Benutzer, der den Apex Code ausführt, hat die Berechtigung, auf den
SF_Archive-Namespace zuzugreifen. - Zugriff auf die Developer Console oder eine IDE zum Ausführen von Anonymem Apex.
- Öffnen Sie die Developer Console oder Ihr bevorzugtes Apex Ausführungstool.
- Öffnen Sie das Fenster Anonym ausführen.
-
Führen Sie diesen Code aus, um die Kriterien zu definieren und die Anforderung zu senden. Dieser Codeblock anonymisiert das E-Mail-Adressfeld in einem Kontaktdatensatz.
// 1. Define the criteria for the records to anonymize. // Syntax: new Criteria('ObjectAPIName', 'FieldAPIName', 'ValueToMatch'); List<SF_Archive.Criteria> criteriaList = new List<SF_Archive.Criteria>(); // Example: Anonymize a specific Contact by Email criteriaList.add(new SF_Archive.Criteria( 'Contact', 'Email', 'mickey.mouse@example.com' )); // 2. Submit the anonymization request. SF_Archive.ArchiverAccessorResponse response = SF_Archive.ArchiverAccessor.maskArchivedRecords(criteriaList); // 3. Process the response to get the request ID. Map<String, String> values = (Map<String, String>)JSON.deserialize(response.getBody(), Map<String, String>.class); String requestId = values.get('request_id'); // Output the request ID for tracking. System.debug('Anonymization Job Submitted. Request ID: ' + requestId);
Überprüfen des Anonymisierungsstatus
Überprüfen Sie den Status Ihres Anonymisierungsauftrags und generieren Sie mithilfe der beim Senden generierten Anforderungs-ID einen Prüfbericht.
Die Anonymisierung ist ein asynchroner Prozess. Verwenden Sie nach dem Senden einer Anforderung die zurückgegebene Anforderungs-ID, um ihren Fortschritt zu verfolgen und die Ergebnisse zu überprüfen.
-
Führen Sie diesen Code im Fenster "Anonym ausführen" aus, um den Status des Anonymisierungsauftrags zu überprüfen.
// Paste the Request ID found in the Debug Log from the anonymization request. // Example: String requestId = '0Qn5e000000abcD'; String requestId = 'YOUR_REQUEST_ID_HERE'; // Check the status. String statusResponse = SF_Archive.ArchiverAccessor.getMaskingStatus(requestId); System.debug('Anonymization Job Status: ' + statusResponse); -
Führen Sie diesen Code im Fenster "Anonym ausführen" aus, um nach Abschluss des Anonymisierungsauftrags einen Prüfbericht zu generieren.
String requestId = 'YOUR_REQUEST_ID_HERE'; String report = SF_Archive.ArchiverAccessor.getMaskingReport(requestId); System.debug('Anonymization Audit Report: ' + report);
Anonymisierungsergebnisse
Überprüfen Sie, wie personenbezogene Felder nach Abschluss des Anonymisierungsprozesses angezeigt werden. Wenn der Auftragsstatus "HANDLED" lautet, aktualisiert das System die archivierten Daten sofort.
- Suchvorgänge, die die ursprüngliche personenbezogene Daten wie eine E-Mail-Adresse verwenden, geben keine Ergebnisse zurück.
- Suchvorgänge, die nicht sensible Kennzeichner wie eine Datensatz-ID verwenden, geben den anonymisierten Datensatz zurück.
- Wenn Sie den Datensatz über "Suche", "Exportieren" oder "Archiv aufheben" anzeigen, werden in Feldern mit personenbezogenen Daten Platzhalterwerte angezeigt.
| Feld | Ursprünglicher Wert | Anonymisierter Wert |
|---|---|---|
| Name | Micky Maus | redacted_first_name |
| mickey.mouse@example.com | redacted@example.com | |
| Telefon | +1-415-555-1234 | 000-000-0000 |
| ContactId | 003XX0000123AbC | 003XX0000123AbC |

