[cz. II] Always Encrypted ? implementacja ? SQL Server Security

Always Encrypted - cz. II

W poprzednim wpisie przedstawiłem podstawowe pojęcia związane z technologią z Always Encrypted. Wszystko to po to, aby w tym wpisie przejść przez kreator umożliwiający implementacje tego rozwiązania.

Kreator umożliwia stworzenie wymaganych klucze i skonfigurowane szyfrowanie dla wybranych kolumn. Również dla kolumn które wypełnione są już danymi. Sporo to upraszcza, bo jednak dużo większym wyzwaniem jest implementacja nowego rozwiązania dla istniejących systemów w organizacji niż wykonywanie tego samego dla nowych projektów.

W przykładzie posłużyłem się bazą AdventureWorks2014 i tabeli Person.EmailAddress, choć to w zasadzie nie ma tu żadnego znaczenia.

Wyklikaj Always Encrypted

Wybieramy tabelę z naszej bazy danych i klikamy prawym, aby z menu kontekstowego wybrać ‚Always Columns…’

Encrypt Columns - Always Encrypted

Pierwsze okno z zdawkowymi informacjami oraz schematem całkiem nieźle obrazującycm zasadę działania Always Encrypted.

Introduction - Always Encrypted

Przechodzimy dalej i w oknie wybieramy, kolumnę w której dane mają być szyfrowane. Kreator automatycznie wyklucza kolumny które nie mogą zostać wybrane z względu na ograniczenia technologii Always Encrypted. W tym przykładzie kolumna rowguid z względu ?RowGuidCol are not supported?, ModifiedData z względu na ?Columns with default constraints are not supported?

Natomiast dla wybranej przeze mnie kolumny, zgłaszany jest warning który informuje ?The collaction will be changed from SQL_Latin_General_CP1_CS_CA to Latin_General_BIN2?. Alawys Encrypted wymaga sortowania (collation) *_BIN2 dla znakowych typów danych. Za pewne jest uwarunkowany lepszą wydajność dla operacji szukania ścisłych dopasowań głównie dla deterministycznego typu szyfrowania.

W tym miejscu również określamy typ szyfrowania, deterministyczny czy losowy.  Wybieramy również klucz szyfrujący. Domyślna wartościa CEK_Auto1 (New), wskazuję, że nie posiadamy jeszcze żadnego klucza.

Column Selection - Always Encrypted

W kolejnym oknie kreatora, mamy możliwość wskazać istniejący Column Master Key lub wygenerować nowy. W przykładzie zostawiłem ustawienia domyślne, jak poniżej.

Master Key Configuration - Always Encrypted

W oknie Run Settings mamy możliwość uruchomienia procesu szyfrowania lub wygenerowanie skrypt PowerShell na później. Jednak warto zwrócić uwagę na komunikat. Jesteśmy ostrzegani o potencjalnej utracie danych. Wykonanie kopii zapasowej jak najbardziej wskazane.Run Settings - Always Encrypted

Kolejne okna, pozwolę sobie pominąć ponieważ są bardzo oczywiste. Natomiast tak wygląda fragment tabeli po procesie szyfrowania.

Always Encrypted

Aby móc podejrzeć odszyfrowane dane za pomocą np. SSMS musimy mieć dostęp do certyfikatu oraz dodać parametr połączenia Column Encryption Setting=Enabled;

Decrypted Data - Always Encrypted

Podsumowanie

Nie wspomniałem tego wcześniej ale jeśli poslugujesz się kreatorem oraz autogeneracją kluczy, przede wszystkim nie rób tego na serwerze SQL Server. W przeciwnym wypadku Always Encrypted traci jakikolwiek sens.

Z pasją poświęcam czas na zdobywanie wiedzy w zakresie szeroko rozumianej Data Platform. Zachwycony językiem skryptowym Windows PowerShell. Swoją wiedzę, doświadczenia i spostrzeżenia opisuję na blogu.

Leave a Reply

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *