Żałuję, że nie mogłem przegłosować 100 punktów za samo myślenie o tym! Widziałem ten temat pomijany tyle razy, że jest nieprawdziwy - tak dobrze zrobione. Z tego, co rozumiem, tak naprawdę chcesz szyfrować dane w samych polach i chociaż rozumiem, co próbujesz osiągnąć, może nie być to konieczne - chociaż należy to rozpatrywać indywidualnie.
Większość przepisów dotyczących ochrony danych dotyczy zdolności prawidłowego powiązania danych z osobą - na przykład daty urodzenia lub numeru telefonu. Możesz spełnić wymagania prawa, upewniając się, że dane przeniesione z produkcji do UAT są pomieszane, więc nie można ich łatwo odwzorować na oryginalną osobę - szczególnie, gdy zbierasz imiona i nazwiska.
Nie rozwiązuje to jednak problemu, na przykład powiedzmy danych kontaktowych. Możesz spełnić wymagania prawa, mieszając dane, ale numery telefonów są nadal rzeczywiste, e-maile wciąż prawdziwe itp. ... nie są po prostu przypisane do właściwej osoby. W tym celu zalecam, jeśli w ogóle możliwe wyczyszczenie tych danych przed przekazaniem ich do UAT, Red Gate wykona oprogramowanie o nazwie Generator danych, które może tworzyć losowe dane testowe, aby można było ponownie wypełnić pola danymi, które można przetestować.
Jeśli chodzi o szyfrowanie danych: istnieje wiele aplikacji, które robią to za Ciebie i szczerze mówiąc, masz rację, nie chcąc wymyślać koła na nowo. Ten, którego używamy w naszej firmie, to produkt o nazwie Data Masker firmy Net2000. Licencja jest dość tania, działa bardzo szybko i nie musisz się martwić o wyłączenie wszystkich ograniczeń przed szyfrowaniem bazy danych.
Możesz oczywiście wdrożyć własne rozwiązanie, jeśli nie znajdziesz niczego, co spełnia twoje wymagania - jeśli zdecydujesz się to zrobić, zdecydowanie polecam skorzystanie z procedur CLR, ponieważ jest to o wiele bardziej elastyczne niż czysty TSQL (nie mówiąc, że nie można używać TSQL, patrz tutaj ).
Po wybraniu aplikacji do wykonania tej czynności, kolejną rzeczą, którą musisz zdecydować, jest to, czego naprawdę chcesz / musisz się zmieszać? Szczerze mówiąc, najlepszym źródłem informacji jest zespół prawny firmy i / lub audytorzy firmy. Wiem, że czasami nie lubimy z nimi współpracować, ale będą dla ciebie o wiele milsi, jeśli podejdziesz do nich i zadasz im pytanie, zamiast próbować zrobić to samemu i zrobić to źle, nie ma absolutnie nic złego w proszeniu o pomoc - szczególnie gdy jest to tak ważne jak to.
Mam nadzieję, że to ci pomoże i życzę powodzenia w twoich poszukiwaniach ... ;-)
Pan Brownstone uderzył w paznokieć prosto w głowę. Teraz, aby trochę ci pomóc, oto moja funkcja „garble”, używana do zaciemniania łańcuchów (śmieszne wyniki z nazwami!). Przekaż ciąg, zwraca zniekształcony ciąg. Uwzględnij go w instrukcjach aktualizacji względem kolumn ciągów. Zmień długość danych według własnego uznania.
źródło
Musiałem to zrobić dla danych sprzedaży detalicznej moich klientów. W przypadku imion poszedłem do spisu powszechnego i pobrałem wszystkie imiona i nazwiska, poprowadziłem je przez pętlę, aby połączyć się od pierwszego do ostatniego, dodałem kod płci i załadowałem go do tabeli wielkimi literami. Potem miałem tabelę z około 400 milionami unikalnych nazw. Użyłem wielkich liter, ponieważ nasze bieżące dane nie były pisane dużymi literami, więc łatwiej było stwierdzić, które dane zostały wyczyszczone.
Kiedy wyczyściłem moje dane użytkownika, wymieniłem nazwiska, na urodziny przekazałem wszystkim 1 stycznia roku, w którym się urodzili i zaktualizowałem numery telefonów za pomocą kodu pocztowego (moje dane były tylko w USA). Adresy e-mail stały się początkowe i nazwisko @ mojafirma.co. Adres pocztowy sprawił mi najwięcej bólu, ale zachowałem miasto, stan i kod pocztowy, ponieważ uważam, że nie będzie to problemem, jeśli adres zostanie zmieniony. Miałem współpracownika, który miał program, który generował zniekształcone litery i zaktualizował o to linię adresową.
Gdziekolwiek miałem zduplikowane dane, ale nadal miałem FK dla głównego użytkownika (zły projekt tak, ale nie mój), zaktualizowałem te dane, aby nazwa była spójna w bazie danych dla użytkownika x.
Ogólnie moje dane były nadal bardzo czytelne, chociaż adres nie miał żadnego sensu. Zajęło mi to kilka dni, aby wszystko to działało, ale kiedy to zostało zrobione i utworzono zadanie agenta SQL, mogłem wyczyścić dane w zaledwie 15 minut.
źródło
Aby zaciemnić pojedyncze pole, skorzystaj z funkcji HASHBYTES (w SQL 2008+)? Możesz wybrać algorytm (prawdopodobnie wystarczy MD5) pod warunkiem, że posolisz swoje dane. Zamiast tego po prostu
SELECT HASHBYTES('SHA2_256', <LAST NAME FIELD>)
upewnij się, że masz,SELECT HASHBYTES('SHA2_256', <LAST NAME FIELD> + '<my salt string>')
a teraz masz skrót, którego nie można łatwo brutalnie wymusić.Jest to faktyczna funkcja, która jest obsługiwana, powtarzalna i prawdopodobnie znacznie szybsza. W zależności od tego, ile potrzebujesz naprawdę zabezpieczyć, a nie tylko zaciemnić, możesz także użyć słabszego i szybszego skrótu.
źródło
MD2 | MD4 | MD5 | SHA | SHA1 | SHA2_256 | SHA2_512
Coś dla każdego !! (w tym tak, których nie powinieneś używać). Powiedzmy, że używamy SHA2_512 ... coś jeszcze problematycznego z tym podejściem?Spójrz na moduł PowerShell dbatools, aby uzyskać bezpłatną opcję maskowania danych statycznych, napisaną przez Chrissy Lemaire (@ chrissy-lemaire) i jej zespół. Wszystkie ich narzędzia są świetne, więc jestem pewien, że warto to sprawdzić.
Dwa polecenia do wyszukiwania w dbatools to: New-DbaDbMaskingConfig Invoke-DbaDbDataMasking
Spójrz na post na blogu informujący o tym: automatyczne maskowanie danych
źródło