Защита конфиденциальной информации ваших клиентов очень важна. Персональные данные (Личные данные), такие как имена, адреса и номера телефонов, строго регулируются законами о конфиденциальности данных, например. GDPR, CCPAи HIPAA. Однако разработчики, аналитики данных и контроль качества командам по-прежнему приходится работать с реальными данными для тестирования, разработки или демонстрации.
Например, я разработал OpenINSIGHTS демо-счет для запуска кампаний в нашей розничной торговле ИИ прогнозы клиентов. Я хочу предоставить доказательства того, что данные можно использовать, то есть я могу показать фактические записи клиентов вместе с выходными данными. Однако я не хочу показывать учетные записи, настоящие имена, адреса, адреса электронной почты, номера телефонов или любые другие личные данные в данных моих клиентов.
Содержание
Зачем создавать фальшивые данные, позволяющие идентифицировать личность?
- Соблюдение законов о конфиденциальности: Использование реальных личных данных в средах тестирования или разработки может нарушить правила и привести к крупным штрафам.
- Снижение рисков: Реальный PII в более низкой среде увеличивает риск случайной утечки.
- Точный осмотр: Фальшивые, но реалистичные данные позволяют эффективно тестировать конвейеры данных, отчеты и пользовательские интерфейсы.
- Демонстрационные среды: Поддельные данные обеспечивают профессиональный вид во время демонстрации без ущерба для конфиденциальности пользователя.
Должны ли фейковые данные выглядеть реалистично?
Не обязательно. Хотя фальшивые данные должны работать в ваших системах, они все равно должны выглядеть фальшивыми для любого, кто наблюдает за демонстрационной или тестовой средой. Это помогает сохранить прозрачность и избежать путаницы.
- Целостность системы: Внутренние процессы, такие как фильтрация по городу, штату или почтовому индексу, часто основаны на допустимых форматах и шаблонах. Фиктивные данные должны соответствовать этим требованиям, чтобы обеспечить правильную работу системы без ошибок. Например, Почтовый индекс коды должны соответствовать предполагаемому формату, а другие поля, такие как имена или адреса, могут быть заменены явно поддельными заполнителями.
- Функциональное тестирование: поддержание целостности в ключевых полях, таких как город, штат и почтовый индекс, гарантирует, что внутренние фильтры, рабочие процессы и проверки продолжат работать должным образом. Между тем, фиктивные данные для других полей (таких как имена и адреса) могут помочь в тестовых сценариях или производительности, не влияя на функциональность.
- Ясность изложения: поддельные данные во время демонстраций, которые явно являются поддельными (например. Zxy Тестовая ул.) устраняет двусмысленность при демонстрации функциональности системы. Это обеспечивает баланс между профессиональным представлением и обеспечением прозрачности использования данных.
Вы можете обеспечить безопасное, функциональное и четкое тестирование или демонстрацию, сознательно имитируя данные, чтобы они выглядели искусственными, сохраняя при этом целостность системы в критических областях. Вот снимок того, что мне удалось создать:
SQL для генерации поддельных данных PII
Это SQL-запрос для создания поддельных, но реалистичных данных PII для имени, фамилии, строки_адреса_клиента1, строки_адреса_клиента2, адреса электронной почты и номера телефона в вашей базе данных, а также для создания поля полного имени. Я добавил эту логику только для того, чтобы добавить вторую адресную строку для 20% домохозяйств.
UPDATE `project.demo.pii`
SET
first_name = (
CONCAT(
UPPER(SUBSTR('bcdfghjklmnpqrstvwxyz', CAST(FLOOR(RAND() * 21) + 1 AS INT64), 1)),
SUBSTR('aeiou', CAST(FLOOR(RAND() * 5) + 1 AS INT64), 1),
SUBSTR('bcdfghjklmnpqrstvwxyz', CAST(FLOOR(RAND() * 21) + 1 AS INT64), 1),
IF(RAND() > 0.5, SUBSTR('aeiou', CAST(FLOOR(RAND() * 5) + 1 AS INT64), 1), '')
)
),
last_name = (
CONCAT(
UPPER(SUBSTR('bcdfghjklmnpqrstvwxyz', CAST(FLOOR(RAND() * 21) + 1 AS INT64), 1)),
SUBSTR('aeiou', CAST(FLOOR(RAND() * 5) + 1 AS INT64), 1),
SUBSTR('bcdfghjklmnpqrstvwxyz', CAST(FLOOR(RAND() * 21) + 1 AS INT64), 1),
IF(RAND() > 0.5, SUBSTR('aeiou', CAST(FLOOR(RAND() * 5) + 1 AS INT64), 1), '')
)
),
customer_address_line1 = (
CONCAT(
CAST(CAST(FLOOR(RAND() * 99999 + 1) AS INT64) AS STRING), " ",
UPPER(SUBSTR('bcdfghjklmnpqrstvwxyz', CAST(FLOOR(RAND() * 21) + 1 AS INT64), 1)),
SUBSTR('aeiou', CAST(FLOOR(RAND() * 5) + 1 AS INT64), 1),
SUBSTR('bcdfghjklmnpqrstvwxyz', CAST(FLOOR(RAND() * 21) + 1 AS INT64), 1),
" ",
CASE CAST(FLOOR(RAND() * 19) AS INT64)
WHEN 0 THEN 'St'
WHEN 1 THEN 'Ave'
WHEN 2 THEN 'Blvd'
WHEN 3 THEN 'Dr'
WHEN 4 THEN 'Ln'
WHEN 5 THEN 'Rd'
WHEN 6 THEN 'Ci'
WHEN 7 THEN 'Ct'
WHEN 8 THEN 'Pl'
WHEN 9 THEN 'Pkwy'
WHEN 10 THEN 'Ter'
WHEN 11 THEN 'Way'
WHEN 12 THEN 'Sq'
WHEN 13 THEN 'Loop'
WHEN 14 THEN 'Trail'
WHEN 15 THEN 'Hwy'
WHEN 16 THEN 'Row'
WHEN 17 THEN 'Path'
WHEN 18 THEN 'Alley'
ELSE 'Pass'
END
)
),
customer_address_line2 = CASE
WHEN RAND()
Разделение кода
1. Генерация first_name
и last_name
- Запрос генерируется случайным образом вымышленные имена и фамилии используя сочетание согласных и гласных.
- Логика:
- Выбирает случайную согласную →
SUBSTR('bcdfghjklmnpqrstvwxyz', ...)
- Добавляет гласные →
SUBSTR('aeiou', ...)
- Объедините их, чтобы сформировать короткое, читаемое имя с дополнительными гласными.
- Выбирает случайную согласную →
- Слова выглядят несколько реальными, но они гарантированно фальшивые.
2. Создать customer_address_line1
- Сочетает в себе случайный номер дома со случайно сгенерированным названием и типом улицы (например, улица, авеню, бульвар).
- Логика:
- Случайным образом выбирается число от 1 до 99 999.
- Придумайте название улицы, используя согласные и гласные.
- Добавляет случайный тип улицы из списка (например, «Ln», «Дорога», «Тропа»).
3. Обработка customer_address_line2
- С вероятностью 20% добавляется информация о квартирах, люксах или блоках.
- Логика:
- Случайным образом выбирает «Квартира», «Люкс» или «Единица».
- Добавляет числовой или буквенно-цифровой идентификатор.
4. Создать Адрес электронной почты
email_address
:- Комбинирует
first_name
иlast_name
в нижнем регистре. - Добавляет один из поддельных доменов (
example.com
,testmail.com
илиfakemail.org
). - Формат выглядит как электронное письмо, но это явно подделка.
Пример:
[email protected]
- Комбинирует
4. Создание номера телефона
phone_number
:- Генерирует 10-значное число в формате
(XXX) XXX-XXXX
. - Код города (
XXX
) находится в диапазоне от 200 до 999 (действительные коды городов начинаются с 2–9). - Обеспечивает реалистичное форматирование телефона, но с поддельными значениями.
Пример:
(425) 678-1234
- Генерирует 10-значное число в формате
4. Слияние customer_name
- Форматирует поддельные имя и фамилию в регистрах заголовков (например, «Джон Смит»).
Заключительные замечания
Этот запрос позволяет:
- Генерировать безопасный, поддельный PII для тестирования.
- Избегайте рисков несоответствия реальным данным.
- Поддерживайте реалистичность данных, обеспечивая эффективное тестирование и демонстрацию системы.