Dynamic Data Masking w SQL Azure

O nowościach w SQL Azure v12 pisałem już we wcześniejszych postach, w tym również szczegółowo przedstawiłem nową funkcjonalność w zakresie bezpieczeństwa – Row Level Security. Chciałem jeszcze przedstawić nowy mechanizm Dynamic Data Masking. Funkcjonalność bardzo przydatna w obecnych czasach, gdy zależy nam na ukrywaniu – maskowaniu części informacji np.: pełnych adresów email, danych personalnych, czy też numerów kart kredytowych, w celu uniknięcia dostania się tych informacji w niepowołane ręce.

W SQL Azure v12 wprowadzono mechanizm Dynamic Data Masking dający taką możliwość, co powoduje, że przychodzące do klienta dane są zamaskowane. A teraz mały test rozwiązania. W tym celu potrzebujemy SQL Azure pracujący w zgodności z v12.

Zakładamy na nim bazę danych, zasilamy danymi i możemy testować.

Przy użyciu SQL Server Management Studio łaczymy się z serwerem SQL Azure

Gdzie jako nazwa serwera podajemy nasz serwer oraz .database.windows.net

W ten sposób połączony wykonujemy przykładowe zapytanie na bazie danych AdventureWorks

Jak się można spodziewać otrzymujemy następujący rezultat tego zapytania

Jak widać numer karty kredytowej jest w pełni widoczny.

Skonfigurujmy teraz mechanizm Dynamic Data Masking. W tym celu musimy na portalu Azure dla danej bazy danych wejść w zakładkę dotyczącą audytowania i bezpieczeństwa, następnie ustawić dostęp bezpieczny (chcąc produkcyjnie stosować Dynamic Data Masking należałoby ustawić na REQUIRED).

W następnym kroku musimy włączyć mechanizm Dynamic Data Masking, oraz zbudować reguły maskowania.

W oknie PRIVILEGED LOGINS możemy wybrać login uprzywilejowane, które będą miały dostęp do danych niemaskowanych.

Tworząc poszczególne reguły możemy użyć predefiniowanych, lub indywidulanie utworzyć regułę maskowania.

Przykładowa konfiguracja reguły predefiniowanej

Funkcja maskowania została wybrana z listy przygotowanych szablonów

Drugi przykład, gdzie funkcja maskowania została utworzona indywidualnie

W celu weryfikacji tych reguł musimy podłączyć się do serwera przy użyciu bezpiecznego połączenia, różni się ono tym od tego wcześniejszego, iż zamiast rozszerzenia .database.windows.net używamy rozszerzenie .database.secure.windows.net.

Ponownie wykonanie zapytania

W wyniku, czego otrzymujemy

Jak widać funkcja maskująca zadziałała i numery kard są zamaskowane.

Sprawdźmy jeszcze zapytanie wykorzystujące utworzoną przez nas funkcję maskowania

Otrzymujemy

Zgodnie z tym, co przygotowaliśmy w funkcji maskowania.

Jak widać mechanizm jest bardzo prosty i szybki w implementacji, wydaje się być bardzo potrzebny w obecnych czasach, oczywiście można takie rzeczy zaimplementować po stronie serwera samemu np.: poprzez funkcję tabelaryczne, widoki itp., ale skorzystanie z takiego mechanizmu zmniejsza skomplikowanie kodu naszych rozwiązań, poza tym jest bardzo szybkie zarówno w implementacji, jak i modyfikacji. Zachęcam do testów J

Share this article ...

Google Plus
Ihren LinkedIn Kontakten zeigen



This entry was posted in Azure, Security and tagged , , by Lukasz Grala. Bookmark the permalink.
Lukasz Grala

About Lukasz Grala

A Data Platform and Business Intelligence architect and consultant. An authorized Microsoft trainer and university lecturer. A holder of numerous Microsoft certificates, since 2010 Microsoft Most Valuable Professional (MVP) in the SQL Server category. An author of articles and webcasts available on TechNet portal. He runs two blogs, SQL Research and PowerPivot’s Blog. The author of various trainings and a speaker at numerous IT conferences, as well as the Polish SQL Server User Group (PLSSUG) leader.

Leave a Reply

Connect with:
  • This field its required.
  • This field its required.
    • Message is required