43
Nowości w zakresie bezpieczeństwa SQL Server 2016 Kamil Nowiński PLSSUG Wrocław [email protected] @NowinskiK Tomasz Libera PLSSUG Kraków [email protected] @tomasz_libera

Nowości w zakresie bezpieczeństwa w SQL Server 2016

Embed Size (px)

Citation preview

Page 1: Nowości w zakresie bezpieczeństwa w SQL Server 2016

Nowości w zakresie bezpieczeństwaSQL Server 2016

Kamil NowińskiPLSSUG Wrocław

[email protected]@NowinskiK

Tomasz LiberaPLSSUG Kraków

[email protected]@tomasz_libera

Page 2: Nowości w zakresie bezpieczeństwa w SQL Server 2016

Kamil Nowiński Tomasz Libera

• DB Developer w WSZiB w Krakowie• Lider PLSSUG Kraków• Członek Zarządu Stowarzyszenia PLSSUG• Certyfikaty:

• MCT• MCSE Data Platform • MCITP-DBA, MCITP-DD

• Zainteresowania:• Pasjonat kolarstwa górskiego

i maratonów MTB

• Senior SQL/BI Developer w AlternativeNetworks (UK)

• Programista > 20 lat (VB6, VB.NET, C#, .NET Framework)

• Ponad 10-letnie doświadczenie jako DEV/DBA• Członek komisji rewizyjnej PLSSUG, • Certyfikaty SQL Server:

MCITP, MCP, MCTS, MCSA, MCSE Data Platform

• Zainteresowania:• Rower, bieganie• Fotografia cyfrowa

(Nikon D-90, Adobe Lightroom)

Page 3: Nowości w zakresie bezpieczeństwa w SQL Server 2016

Agenda• Row-Level Security• Dynamic Data Masking• Always Encrypted• Podsumowanie

Page 4: Nowości w zakresie bezpieczeństwa w SQL Server 2016

Row Level Security

Page 5: Nowości w zakresie bezpieczeństwa w SQL Server 2016

DEMO #1jak radzimy sobie bez SQL2016 i RLS

Page 6: Nowości w zakresie bezpieczeństwa w SQL Server 2016

Row-Level Security - wprowadzenie• Zabezpieczanie danych na poziomie wiersza, realizowane poprzez• Security Predicate Filter (inline TVF)• Security Policy (Polityka bezpieczeństwa)

• Praktyczne scenariusze• Możliwości dostępne wcześniej w Azure SQL Database• Inne RDBMS posiadają swoje odpowiedniki• Row Security Policies (PostgreSQL 9.5)• Oracle Label Security (Oracle 10g)

Page 7: Nowości w zakresie bezpieczeństwa w SQL Server 2016

DEMO #2Row Level Security

(Direct Connected Users)

Page 8: Nowości w zakresie bezpieczeństwa w SQL Server 2016

Row-Level Security - predykaty• Dwa typy predykatów bezpieczeństwa:• Predykaty filtrowania podczas operacji odczytu

(SELECT, UPDATE, DELETE)• Predykaty blokujące operacje zapisu naruszające predykat

(AFTER INSERT, AFTER UPDATE, BEFORE UPDATE, BEFORE DELETE)

Page 9: Nowości w zakresie bezpieczeństwa w SQL Server 2016

Row-Level Security – uprawnieniaZestaw uprawnień wymagany do zarządzania politykami Security Policies:• ALTER ANY SECURITY POLICY• ALTER – do schematu• Uprawnienia dla każdego dodanego predykatu:• SELECT & REFERENCES – do funkcji użytej jako predykat• REFERENCES – do tabeli docelowej powiązanej z polityką• REFERENCES – do każdej kolumny użytej jako argument funkcji

Page 10: Nowości w zakresie bezpieczeństwa w SQL Server 2016

Ograniczenia• FTS bazuje na niefiltrowanych danych CTP 2.4!• DBCC SHOW_STATISTICS pokazuje dane nieprzefiltrowane CTP 2.4!• Blokowanie wstawianych rekordów CTP 3!• RLS jest niekompatybilny z memory-optimized tables (In-Memory

OLTP)• RLS jest niekompatybilny z CDC• Nie można tworzyć widoków indeksowanych w oparciu o tabele z RLS• Zwykle użytkownicy łączą się przy pomocy tego samego użytkownika

(…)

Page 11: Nowości w zakresie bezpieczeństwa w SQL Server 2016

Przechowywanie danych sesji• Zapis do sesji

• SET CONTEXT_INFO – pojedyncza wartość• EXEC sp_set_session_context @key = N'x', @value = 'y', @read_only = 1;

• Odczyt• CONTEXT_INFO()• SESSION_CONTEXT(`key`)

• Możliwość odwołania się po zakończeniu bieżącego wsadu/procedury...• Przydatny w celu przechowywania danych zalogowanego użytkownika• Scenariusz: aplikacja nawiązuje połączenie z bazą, zapisuje do sesji

identyfikator zalogowanego użytkownika, który sprawdzamy w predykacie filtrującym

Page 12: Nowości w zakresie bezpieczeństwa w SQL Server 2016

DEMO #3Row Level Security(CONTEXT_INFO)

Page 13: Nowości w zakresie bezpieczeństwa w SQL Server 2016

RLS - Dobre praktyki• Zalecane jest utworzenie odrębnego schematu na Security Policy i

Security Predicate Filter• ALTER ANY SECURITY POLICY to uprawnienie dla wysoko

uprawnionych użytkowników zarządzających uprawnieniami. • Unikaj konwersji typów, rekursji, licznych JOINÓW oraz generalnie

kosztownych ze względu na wydajność w funkcji będącej predykatem• Utwórz indeks na kolumnie, która jest filtrowana w Security Predicate• Wydajność RLS porównywana z filtrowaniem dostępu przez widoki

Page 14: Nowości w zakresie bezpieczeństwa w SQL Server 2016

Dynamic Data Masking

Page 15: Nowości w zakresie bezpieczeństwa w SQL Server 2016

Dynamic Data Masking - wprowadzenie

• „Dynamiczne maskowanie danych”• Ogranicza prezentację wrażliwych danych dla osób niepowołanych• Pozwala kontrolować fragment ukrywanych wartości• Niezależne od warstwy aplikacji• Dane w bazie danych pozostają nienaruszone• Proces maskowania danych w wynikach zapytania• Możliwość zaaplikowania reguł bez zmian w istniejących aplikacjach• Reguły stosowane na wybranych kolumnach tabeli

Page 16: Nowości w zakresie bezpieczeństwa w SQL Server 2016

Dynamic Data Masking - przykłady• Credit Card Number

4462 7123 9921 7612 -> #### #### #### 7612• Social Security Number• PESEL

78100702880 -> 7810####880

Page 17: Nowości w zakresie bezpieczeństwa w SQL Server 2016

Dynamic Data Masking - założenia• Ograniczenie ujawniania danych niepowołanym użytkownikom

ALE• NIE zapobiega przed dostępem do tych danych użytkownikom bazy

danych łączących się bezpośrednio do bazy i posiadającym stosowne uprawnienie• Uzupełnienie innych funkcjonalności SQL Server:• Auditing• Encryption• Row Level Security

Page 18: Nowości w zakresie bezpieczeństwa w SQL Server 2016

Dynamic Data Masking – reguły maskujące

• Funkcja Default: Pełne maskowanie zgodnie z typem danych• Zwraca XXXX dla typów tekstowych• Zwraca 0 (zero) dla typów numerycznych• Zwraca 2000-01-01 dla danych typów data• Zwraca 0 (zero) dla typów binarnych

Przykład:Phone# varchar(12) MASKED WITH (FUNCTION = 'default()') NULL

Page 19: Nowości w zakresie bezpieczeństwa w SQL Server 2016

Dynamic Data Masking – reguły maskujące

• Funkcja Email:• Zwraca pierwszą literę prawdziwego adresu email• Na końcu ciągu zawsze pokazuje „.com”• [email protected]

Przykłady:Email varchar(100) MASKED WITH (FUNCTION = 'email()') NULL

ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()')

Page 20: Nowości w zakresie bezpieczeństwa w SQL Server 2016

Dynamic Data Masking – reguły maskujące

• Funkcja Custom String: maskowanie częściowe:• Pozwala określić liczbę początkowych znaków ciągu (prefix)• Fragment stały „pośrodku” ([padding])• Liczba znaków odkrytych na końcu ciągu (suffix)Przykłady:ALTER COLUMN [PESEL]

ADD MASKED WITH (FUNCTION = 'partial(4,"####",3)')ALTER COLUMN [Phone Number]

ADD MASKED WITH (FUNCTION = 'partial(5,"XXXXXXX",0)') ALTER COLUMN [Social Security Number]

ADD MASKED WITH (FUNCTION = 'partial(0,"XXX-XX-",4)')

Page 21: Nowości w zakresie bezpieczeństwa w SQL Server 2016

Dynamic Data Masking – reguły maskujące

• Funkcja Random:• Maskowanie wartości numerycznych• Pozwala określić zakres, z którego będą losowane wartości maskujące

Przykłady:Account_Number bigint

MASKED WITH (FUNCTION = 'random([start range], [end range])')

ALTER COLUMN [Month] ADD MASKED WITH (FUNCTION = 'random(1, 12)')

Page 22: Nowości w zakresie bezpieczeństwa w SQL Server 2016

Dynamic Data Masking - uprawnienia

• Zakładanie maskowania dla tabeli:• ALTER ANY MASK• ALTER

• Pobieranie danych:• SELECT – dla tabeli• UNMASK – pozwoli użytkownikowi odczytać dane bez użycia maskowania

Page 23: Nowości w zakresie bezpieczeństwa w SQL Server 2016

Dynamic Data Masking – przypadki użycia

• DDM nie zapobiega operacji UPDATE• SELECT INTO / INSERT INTO• SQL Server Import and Export

Page 24: Nowości w zakresie bezpieczeństwa w SQL Server 2016

DEMO #4Dynamic Data Masking

Page 25: Nowości w zakresie bezpieczeństwa w SQL Server 2016

Dynamic Data Masking - ograniczenia

• Reguły maskowania nie mogą być zdefiniowane dla kolumn:• Zaszyfrowanych (Always Encrypted)• FILESTREAM• COLUMN_SET

Page 26: Nowości w zakresie bezpieczeństwa w SQL Server 2016

Always Encrypted

Page 27: Nowości w zakresie bezpieczeństwa w SQL Server 2016

Always Encrypted• Przeznaczone do zabezpieczania danych wrażliwych• PESEL, Numer karty kredytowej, NIN, SSN

• Umożliwia podział ról pomiędzy:• Właściciela danych (z pełnymi prawami)• Administratora danych (bez prawa wglądu)

• Dostępne: SQL Server 2016 (CTP 3), Azure SQL Database (Preview)• Transparentne dla aplikacji klienckiej

Page 28: Nowości w zakresie bezpieczeństwa w SQL Server 2016

Always Encrypted• Szyfrowanie wybranych kolumn w tabeli• Aplikacja kliencka i SQL Server zarządzają kluczami kryptograficznymi• Aby odszyfrować dane potrzebujesz właściwy klucz• DBA również nie posiada dostępu do zaszyfrowanych danych• Dane są zawsze zaszyfrowane (Always Encrypted):• Na nośniku fizycznym (dysk)• Pamięci serwera • W trakcie transportu do Klienta (sieć)

Page 29: Nowości w zakresie bezpieczeństwa w SQL Server 2016

Always Encrypted – przypadki użycia

• Client and Data On-Premises• Client On-Premises with Data in Azure• Client and Data in Azure

Page 30: Nowości w zakresie bezpieczeństwa w SQL Server 2016

Always Encrypted – metody szyfrowania

Deterministyczne (deterministic)+ Możliwe operacje:• Indeksowanie,• Grupowanie,• Filtrowanie,• Złączenia (JOIN)

- Ryzyko odczytania danych

Losowe (randomized)- Możliwe operacje: Żadne+ Bardziej bezpieczna

Page 31: Nowości w zakresie bezpieczeństwa w SQL Server 2016

Always Encrypted – klucze• Column encryption keys• Column master keys

Page 32: Nowości w zakresie bezpieczeństwa w SQL Server 2016

Always Encrypted – biblioteka Kliencka

• Automatyczne szyfrowanie danych przez aplikacje klienckie• Brak konieczności zmian

w aplikacji klienckiej (oprócz połączenia)• Nowszy sterownik ADO.NET

(SqlClient w .NET Framework 4.6)• Varbinary(max) gdy AE wyłączony

po stronie Klienta

Page 33: Nowości w zakresie bezpieczeństwa w SQL Server 2016

DEMO #5Always Encrypted

Page 34: Nowości w zakresie bezpieczeństwa w SQL Server 2016

Always Encrypted - ograniczenia• xml, • rowversion, • image, • ntext / text, • sql_variant, • hierarchyid,• geography, geometry, • typy użytkownika.

Page 35: Nowości w zakresie bezpieczeństwa w SQL Server 2016

Migracja baz/tabel do nowej wersji

• DEMO: Import/Export• ADO.NET / .NET Framework 4.6

Page 36: Nowości w zakresie bezpieczeństwa w SQL Server 2016

Always Encrypted - Widoki systemowe

• sys.column_master_key_definitions• sys.column_encryption_keys• sys.column_encryption_key_values• sys.columns

Page 37: Nowości w zakresie bezpieczeństwa w SQL Server 2016

PytanieJakie wyniki można uzyskać stosując funkcję Custom String w Dynamic Data Masking na kolumnie PESEL (string)?

a) 7810XXXX990b) XXXX9799XXXc) #########90d) Wszystkie powyższe

Page 38: Nowości w zakresie bezpieczeństwa w SQL Server 2016

OdpowiedźJakie wyniki można uzyskać stosując funkcję Custom String w Dynamic Data Masking na kolumnie PESEL (string)?

a) 7810XXXX990b) XXXX9799XXXc) #########90d) Wszystkie powyższe

Page 39: Nowości w zakresie bezpieczeństwa w SQL Server 2016

Skrypty

http://1drv.ms/1Q8xRTJ

Page 41: Nowości w zakresie bezpieczeństwa w SQL Server 2016

RLS - materiały• MSDN - Row-Level Security

https://msdn.microsoft.com/en-us/library/dn765131.aspx• CodePlex - RLS Samples

https://rlssamples.codeplex.com/• SQL Server Security Blog

http://blogs.msdn.com/b/sqlsecurity/• Channel 9 – Data Exposed

• SQL Server 2016 Row Level Securityhttps://channel9.msdn.com/Shows/Data-Exposed/SQL-Server-2016-Row-Level-Security

• Row Level Security Updateshttps://channel9.msdn.com/Shows/Data-Exposed/Row-Level-Security-Updates

• SQL Server 2016 CTP 2 oczami MVP (Marcin Szeliga) - Nowości z zakresu bezpieczeństwahttps://channel9.msdn.com/Series/SQL-Server-2016-CTP-2-oczami-MVP/Nowosci-z-zakresu-bezpieczenstwa

Page 42: Nowości w zakresie bezpieczeństwa w SQL Server 2016

Always Encrypted - materiały• SQL Server Security Blog

http://blogs.msdn.com/b/sqlsecurity/• Channel 9 – Data Exposed - SQL Server 2016 Always Encrypted

https://channel9.msdn.com/Shows/Data-Exposed/SQL-Server-2016-Always-Encrypted• SQL Server 2016 CTP 2 oczami MVP (Marcin Szeliga) - Nowości z

zakresu bezpieczeństwahttps://channel9.msdn.com/Series/SQL-Server-2016-CTP-2-oczami-MVP/Nowosci-z-zakresu-bezpieczenstwa• Overview and Roadmap for Microsoft SQL Server Security.

http://channel9.msdn.com/Events/Ignite/2015/BRK2570

Page 43: Nowości w zakresie bezpieczeństwa w SQL Server 2016

Sponsorzy strategiczni

Sponsorzy srebrni