Вы находитесь здесь:
Архивирование Apex: право быть забытыми (RTBF)
Правила конфиденциальности данных предоставляют отдельным лицам право быть забытыми (RTBF), требуя от организаций безопасного удаления личных данных по запросу. Archive Apex включает соответствие, определяя и удаляя определенные данные из приложения «Архив», обеспечивая тщательное удаление, сохраняя целостность других архивных данных.
Критерии фильтрации RTBF
Чтобы обработать запрос RTBF, укажите соответствующие критерии фильтрации. Например:
| Критерии | Пример |
|---|---|
| Имя поля | Код сотрудника |
| Объект | Контакт |
| Значение | КОД 123456789011121314 |
Важные рекомендации
- Отправка ограничена 10 000 запросов в день с ограничением поиска 10 000 корневых записей.
- Процесс удаления RTBF распространяется на прямо и косвенно связанные дочерние записи в иерархии.
- Накладывающиеся результаты поиска могут обозначать некоторые записи как уже удаленные в файле проверки.
- При достижении ограничения результатов поиска статус действия Apex отображает код статуса
200с этой ошибкой.Request processed. Maximum search results reached. Refine your search or submit a new request. - Большинство стандартных запросов RTBF выполняются в течение 30 минут.
- Для получения оптимальных результатов нацельтесь на корневой объект.
- Фильтры «Имя объекта» и «Имя поля» не чувствительны к регистру.
- Архивирование не поддерживает частичное удаление.
Алгоритм RTBF для дочерних записей в архивной иерархии
При выполнении запроса RTBF в дочерней записи запрос удаляет всю связанную с ним архивную иерархию.
Например, при поиске определенной записи обращения и отправке запроса «Архивировать RTBF» запрос удаляет обращение, связанные задачи и связанную корневую запись организации. Поскольку эти записи были архивированы вместе, RTBF удаляет всю архивную иерархию.
Однако, если организация была архивирована отдельно, выполнение RTBF в записи обращения удаляет только обращение и его задачи, но не запись организации.
Как работает RTBF
Процесс RTBF выполняется как асинхронный процесс и выполняет следующие последовательные вызовы API.
- Идентификация данных—Запросы Apex Архивируются для обнаружения всех записей, соответствующих указанным критериям фильтрации.
- Удаление данных: Apex отправляет запрос на удаление в архив, удаляя все совпадающие записи.
После завершения процесса значок действий RTBF отображается во вкладке действий консоли архивирования.
Пример запроса RTBF
Бывший сотрудник Мария Джонсон отправляет запрос RTBF на удаление всех личных данных из системы. Ваша компания архивирует записи сотрудников вместе с электронной перепиской, взаимодействиями с клиентами и назначениями проектов. Чтобы выполнить запрос RTBF, используйте следующие критерии фильтрации.
| Объект | Имя поля | Значение |
|---|---|---|
| Контакт | Электронная почта | Maria@own.com |
| Обращение | Код сотрудника | 987654321 |
| Задача | Назначено | Джонсон, Мария |
| Электронная почта | Отправитель | Maria@own.com |
| Документ | Ответственный | Джонсон, Мария |
Этот запрос обеспечивает полное удаление данных Марии, включая ее контактные данные, обращения, в которых она участвовала, задачи, назначенные ей, а также все связанные записи электронной почты и документов. Этот процесс помогает поддерживать соответствие регламентам о конфиденциальности данных, обеспечивая тщательное и точное удаление конфиденциальной информации.
Методы API и обработка ответов
Рекомендуем проверить критерии, выполнив запрос по запросам данных Apex перед отправкой запроса RTBF.
| Ввод | Вывод | Определение |
|---|---|---|
ArchiverAccessorResponse |
|
Ответ из вызова Forget API. Возвращает requestId отслеживания статуса запроса посредством метода getRTBFStatus. |
Criteria(sObjectName строки, fieldName строки, value строки) |
||
forgetArchivedRecords(list<Criteria>
inputFilters) |
ArchiverAccessorResponse |
Общедоступный метод, создающий запрос «Забыть для архивирования» и список критериев для удаления. |
getRTBFStatus(string requestId) |
CSV-отчет, содержащий все сведения об удаленной информации. | Общедоступный метод, предоставляющий возможность выполнения запроса RTBF. |
- Архивирование Apex: выполнение запроса RTBF
Вручную протестируйте Archive Apex и запустите запрос RTBF в приложении Archive. - Архивирование Apex: сценарии использования RTBF
Используйте сценарии сценария для RTBF в приложении «Архивирование». - Архивирование Apex: анонимизация персональных данных в приложении «Архивирование»
Анонимизация персональных данных (PII) в архивных записях без удаления самой записи. Анонимизация заменяет конфиденциальные значения необратимыми структурными нулями, чтобы помочь вам соответствовать регламентам конфиденциальности, сохранив структуру записи приложения «Архивировать».
Архивирование Apex: выполнение запроса RTBF
Вручную протестируйте Archive Apex и запустите запрос RTBF в приложении Archive.
- Нажмите на значок параметров.
- Выберите Developer Console.
-
Чтобы открыть консоль, нажмите
F12илиCtrl+Shift+Iв Windows илиCmd+Eв Mac. -
В консоли выполните этот код, чтобы создать список критериев, отправить запрос RTBF и получить
requestIdиз архива.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); -
Нажмите кнопку «Выполнить».
Запрос начинается. После завершения
requestIdсохраняется в журнале выполнения.
Просмотр статуса запроса RTBF
После отправки запроса RTBF можно просмотреть статус запроса.
- Щелкните значок «Параметры» в верхней правой части страницы.
- Выберите Developer Console.
-
Нажмите
Command + E. -
Используя
requestIdдля запроса RTBF, запустите этот код.SF_Archive.ArchiverAccessorResponse reportResponse = SF_Archive.ArchiverAccessor.getRTBFStatus(requestId); system.debug(reportResponse.getBody()); -
Нажмите кнопку «Выполнить».
Запрос статуса начинается. После завершения один из этих статусов отображается в журнале выполнения.
Request failed, please contact support.Запрос не был выполнен и не удался.
Request handled, no matching results were found.:Записи, соответствующие указанным критериям, отсутствуют.
Request is open. Scan is still in progress.Запрос все еще выполняется.
После успешного завершения запроса вы получите отчет по CSV-файлам, содержащий все сведения об удаленной информации.
CSV-отчет содержит данные сведения.
| Поле | Описание |
|---|---|
| Запись критерия | Поле записи, соответствующее критериям удаления запроса. |
| Тип записи критериев | Критерии запроса. |
| Связанный код Salesforce, спровоцировавший удаление | Строка, на которую ссылается другая запись в таблице, также соответствующая критериям. |
| ИД Salesforce | Код записи, содержащейся в строке отчета. |
| Статус | Указывает, удалена или нет запись. |
Распространенные ошибки RTBF
Недопустимые критерии
- Поле должно соответствовать объекту.
- Допускается не более одного критерия с одним объектом.
- Разрешается отправлять не более 10 критериев на запрос.
Нет результатов
- Значение не может быть частичным.
- Критерии должны быть архивного типа записи.
Например, при наличии организации с X кода и архивировании обращений, принадлежащих этому коду, необходимо исключить обращения, принадлежащие этой организации. Для достижения этой цели создайте следующие критерии фильтрации.
Object type: Case, field: AccountId, value: XObject type: Account, field: Id, value: XЭтот критерий ничего не удаляет, поскольку в архиве нет соответствующей организации.Архивирование Apex: сценарии использования RTBF
Используйте сценарии сценария для RTBF в приложении «Архивирование».
Сценарий 1: RTBF с несколькими объектами
Джейн Доу является клиенткой банка XYZ, где у нее был счет на протяжении последних 2 лет. Недавно она решила, что хочет осуществлять RTBF в соответствии с Общим регламентом о защите данных (GDPR). Джейн считает, что банк хранит ненужные личные данные о ней и хочет удалить их из записей.
Джейн отправляет запрос RTBF в банк XYZ и указывает нужные личные данные, которые могут содержать сведения об организации, журнал транзакций и любые другие личные данные, хранящиеся в банке. Банк инициирует идентификацию и обнаружение личных данных Джейн.
| Критерии | Фильтр | Фильтр | Фильтр | Фильтр |
|---|---|---|---|---|
| Объект | Организация | Transaction_c | Обращение | Электронная почта |
| Имя поля | Имя | Пользователь транзакции | Имя клиента | Из: |
| Значение | Неизвестная | Неизвестная | Неизвестная | Неизвестная |
Запрос RTBF может содержать не более 10 отдельных объектов.
Результаты:
Архивирование находит 1 организацию, 2 000 транзакций, 15 обращений в качестве корневых и 30 электронных сообщений.
Сценарий 2: Единый объект RTBF
Фармацевтическая компания выпустила экспериментальное лекарство «Эликсиры Эдди» для лечения артрита. Однако это привело к тяжелым побочным реакциям среди пациентов. После отзыва препарата компания подала запрос RTBF на удаление всех общедоступных записей и цифрового содержимого, связанных с Eddy's Elixirs.
| Критерии | Фильтр |
|---|---|
| Объект | Обращение |
| Имя поля | Название лекарства |
| Значение | Эликсиры Эдди |
Результаты:
Архивирование находит 1 000 обращений в качестве корневых и 1 000 записей пациентов, архивированных под корневыми записями в качестве дочерних записей. Это удаляет их все.
Одно действие создается во вкладке «Архивировать действия консоли», отображающей значок RTBF.
Сценарий 3: Найдено более 10 000 корневых записей RTBF
Эмили Джонс, постоянная пользовательница популярной социальной сети ConnectWorld, деактивирует свою учетную запись и отправляет запросы на выполнение функций RTBF в соответствии с регламентом о защите данных.
| Объект | Фильтр | Фильтр | Фильтр |
|---|---|---|---|
| Объект | Организация пользователя | Контакт | Обращение |
| Имя поля | Имя | Тел. | Связанный код |
| Значение | Код организации для Эмили Джонс | Номер телефона Эмили | Код организации для Эмили Джонс |
Результаты:
Архивирование находит 20 000 корневых записей обращений, 300 000 контактов и 10 000 обращений в качестве корневых, а также 150 000 контактов, архивированных под корневыми записями при удалении дочерних записей.
Одно действие создается во вкладке «Архивировать действия консоли», отображающей значок RTBF.
getRTBFStatus возвращает код статуса 200 с сообщением об ошибке «Запрос обработан. Максимальное количество достигнутых результатов поиска. Уточните поиск или отправьте новый запрос на просмотр дополнительных записей".
Архивирование может обработать только до 10 000 корневых записей на запрос RTBF Apex. Чтобы решить эту ошибку, выполните запрос повторно для извлечения оставшихся записей.
Архивирование Apex: анонимизация персональных данных в приложении «Архивирование»
Анонимизация персональных данных (PII) в архивных записях без удаления самой записи. Анонимизация заменяет конфиденциальные значения необратимыми структурными нулями, чтобы помочь вам соответствовать регламентам конфиденциальности, сохранив структуру записи приложения «Архивировать».
Анонимизация, также известная как маскировка, помогает соответствовать запросам конфиденциальности, например, «Право быть забытыми» (RTBF). Этот процесс выполняет локальное обновление архивных записей. В отличие от действия очистки, которое необратимо удаляет данные, анонимизация заменяет определенные конфиденциальные значения общим текстом, например redacted@example.com.
Как работает анонимизация
Система обнаруживает поля персональных данных, например, «Имя», «Эл. почта», «Телефон» и «Адрес», посредством метаданных объекта. При отправке запроса система маскирует исходные значения персональных данных необратимыми структурными нулями. Данные, не относящиеся к PII, например, коды записей и отметки времени, остаются неизменными и доступны для поиска.
Анонимизация является комплексной. При анонимизации корневой записи процесс анонимизации автоматически распространяется на все связанные дочерние записи в одной архивной иерархии. Например, анонимизация записи контакта также анонимизирует персональные данные в связанных задачах и событиях этой записи.
Важные рекомендации
- Процесс анонимизации является постоянным. Исходные значения персональных данных не могут быть восстановлены или просмотрены после анонимизации.
- Анонимизировать запись можно только один раз. При отправке повторного запроса на анонимную запись система игнорирует его.
- Анонимизация использует стандартное ограничение скорости архивирования RTBF 10 000 запросов на организацию в день.
- Выбрать поля для анонимизации вручную невозможно. Система автоматически определяет поля персональных данных на основе алгоритма восстановления.
- Невозможно анонимизировать записи, которые хранятся на законных основаниях. Система автоматически исключает записи, находящиеся в данный момент под законной блокировкой или блокировкой хранения.
Отправить запрос на анонимизацию
Определите критерии цели и отправьте задание на анонимизацию посредством класса SF_Archive.ArchiverAccessor Apex.
Убедитесь, что вы соответствуете этим требованиям.
- Пользователь, запустивший код Apex, имеет право доступа к пространству имен
SF_Archive. - Доступ к консоли разработчика или IDE для запуска Execute Anonymous Apex.
- Откройте Developer Console или предпочитаемый инструмент выполнения Apex.
- Откройте окно «Выполнить анонимно».
-
Чтобы определить критерии и отправить запрос, запустите этот код. Этот блок кода анонимизирует поле электронного адреса в записи контакта.
// 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);
Проверка статуса анонимизации
Проверьте статус задания анонимизации и создайте отчет по аудиту, используя код запроса, созданный во время отправки.
Анонимизация - это асинхронный процесс. После отправки запроса используйте возвращенный код запроса для отслеживания его выполнения и проверки результатов.
-
Чтобы проверить статус задания анонимизации, запустите этот код в окне «Выполнить анонимное».
// 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); -
Чтобы создать отчет по аудиту после завершения задания анонимизации, выполните этот код в окне «Выполнить анонимно».
String requestId = 'YOUR_REQUEST_ID_HERE'; String report = SF_Archive.ArchiverAccessor.getMaskingReport(requestId); System.debug('Anonymization Audit Report: ' + report);
Результаты анонимизации
Просмотрите отображение полей персональных данных после завершения процесса анонимизации. Если статус задания будет HANDLED, система немедленно обновляет архивные данные.
- Поиски, использующие исходный персональный данные, например, электронный адрес, не возвращают результатов.
- Поиски, использующие неконфиденциальные идентификаторы, например, код записи, возвращают анонимизированную запись.
- При просмотре записи посредством полей «Поиск», «Экспорт» или «Отмена архивирования» поля персональных данных отображают значения структурного нуля.
| Поле | Исходное значение | Анонимизированное значение |
|---|---|---|
| Имя | Маус, Микки | redacted_first_name |
| Электронная почта | mickey.mouse@example.com | redacted@example.com |
| Тел. | +1-415-555-1234 | 000-000-0000 |
| ContactId | 003XX0000123AbC | 003XX0000123AbC |

