172 похожих чатов

Привет всем. обратил внимание на этот чат и решил посоветоваться

с более компетентными в Postgres спецами. у меня есть одна задача, связанная с «обезличиванием» данных в базе. можете подсказать, какой функцией лучше и эффективней целый столбец с текстовыми значениями ( уже заполненный, с определенными данными , NOT NULL) заменить рандомными, уникальными значениями, каждую строку?

10 ответов

16 просмотров

А это точно именно то, что Вам нужно? Я к тому, что такая замена сделает Вам из 1 | Иванов 2 | Иванов что-то вроде: 1 | foo random 2 | random bar Т.е. идентичность значений потеряется. Если это устраивает — да хоть на UUID меняйте, например. Иначе нужно что-то аналогичное шифрованию (с никому неизвестным ключом).

Jason-Kovac Автор вопроса
Yaroslav Schekin
А это точно именно то, что Вам нужно? Я к тому, чт...

благодарю за пояснение! а вот об этом я не подумал если честно. ведь тестировщикам потом импортирую dump этой базы для тестов. копию проекта подниму на сервере 🗿 а это реально сделать средствами самого postgres или придется прибегать к сторонним утилитам/расширениям каким то, можете подсказать? или в каком направлении изучать?

Jason Kovac
благодарю за пояснение! а вот об этом я не подумал...

По идее, реально. Но Вы лучше подождите — может, Вам подскажут готовые средства / дадут ссылки (мне лично этим не приходилось заниматься).

Jason Kovac
благодарю за пояснение! а вот об этом я не подумал...

Смотрите в сторону obfuscation/masking. Вот тут есть примерные методы, без реализации https://postgres.ai/docs/database-lab/masking

Jason-Kovac Автор вопроса

Это очень сложно. 1. Узнать всё, что надо замазать 2. Если база не идеально нормализована, то эти значения уже включены куда-то ещё, как части строк или как фотографии документов, журналы, архивы Уже не говоря про ситуации, когда замазываемое значение используется как ссылка. 3. Если надо замазать какие-то числа, но на их основе наверняка всякого расчитано, и программа станет работать неправильно 4. Сломаются инварианты, неочевидные из схемы базы. Типа того, что если имя пользователя начинается на \, то это означает что... Или деление пользователей на группы было не любым, а по алфавиту. Или имя пользователя используется программой ещё и как имя файла. Или товаары относят к категории поиском подстроки в имени товара....

А если отвечать на исходный вопрос, то напишите функцию для этого. По мере работы вы будуете её расширять, добавляя настроечные параметры. Типичная замена set name = 'user#' || id::text Именно рандом редко нужно

https://www.postgresql.eu/events/fosdem2019/sessions/session/2287/slides/151/postgresql_anonymizer.reveal..pdf Посмотрите

Jason-Kovac Автор вопроса
Konstantin Zaitsev
https://www.postgresql.eu/events/fosdem2019/sessio...

круто! благодарю 🤝 я посмотрел, судя по содержимому для меня самое то! попробую как подключусь к бд!

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта