Implementowanie mechanizmów kontroli zgodności dla poufnych danych
Implementowanie mechanizmów kontroli zgodności po przeprowadzeniu migracji bazy danych jest ważne, aby upewnić się, że dane pozostają bezpieczne i zgodne z odpowiednimi przepisami. Migracja do nowego środowiska, takiego jak Usługa Azure SQL, wprowadza nowe funkcje i funkcje zabezpieczeń.
Eksplorowanie inspekcji serwera i bazy danych
Inspekcja usługi Azure SQL śledzi zdarzenia bazy danych, rejestrując je w dzienniku inspekcji przechowywanym na koncie usługi Azure Storage, obszarze roboczym usługi Log Analytics lub usłudze Event Hubs. Ponadto ułatwia utrzymanie zgodności z przepisami, analizę wzorców działań i wykrywanie odchyleń, które mogą potencjalnie wskazywać na naruszenia zabezpieczeń.
Można zdefiniować zasady na poziomie serwera i na poziomie bazy danych. Zasady serwera automatycznie obejmują nowe i istniejące bazy danych na platformie Azure.
- Włączenie inspekcji serwera wyzwala inspekcję dla bazy danych, niezależnie od jej poszczególnych ustawień inspekcji.
- Inspekcję można włączyć na poziomie bazy danych, co pozwala jednocześnie współistnieć zarówno z zasadami serwera, jak i bazy danych.
- Inspekcja replik tylko do odczytu jest włączana automatycznie.
Najlepiej nie włączyć inspekcji serwera i inspekcji bazy danych razem, z wyjątkiem następujących scenariuszy.
Wymagane jest odrębne konto magazynu, okres przechowywania lub obszar roboczy usługi Log Analytics dla określonej bazy danych.
Wymagana jest inspekcja dla określonej bazy danych z unikatowymi typami zdarzeń lub kategoriami odrębnymi od innych na serwerze.
We wszystkich innych przypadkach zalecamy włączenie tylko inspekcji na poziomie serwera i wyłączenie inspekcji na poziomie bazy danych dla wszystkich baz danych.
Domyślne zasady inspekcji dla usługi SQL Database obejmują następujący zestaw grup akcji:
Grupa akcji | Definicja |
---|---|
BATCH_COMPLETED_GROUP | Przeprowadza inspekcję wszystkich zapytań i procedur składowanych wykonywanych względem bazy danych. |
SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP | Oznacza to, że podmiot zabezpieczeń pomyślnie zaloguje się do bazy danych. |
FAILED_DATABASE_AUTHENTICATION_GROUP | Oznacza to, że podmiot zabezpieczeń nie może zalogować się do bazy danych. |
Aby włączyć inspekcję dla wszystkich baz danych na serwerze Azure SQL, wybierz pozycję Inspekcja w sekcji Zabezpieczenia głównego bloku serwera.
Na stronie Inspekcja można ustawić miejsce docelowe dziennika inspekcji, a także wybrać, czy śledzić operacje inżynierów pomocy technicznej firmy Microsoft w tym samym miejscu docelowym dziennika, co inspekcja usługi Azure SQL, czy wybrać inną.
Możesz przejrzeć dzienniki inspekcji operacji pomoc techniczna firmy Microsoft w obszarze roboczym usługi Log Analytics, uruchamiając następujące zapytanie:
AzureDiagnostics
| where Category == "DevOpsOperationsAudit"
Ważne
Usługi inspekcji usług Azure SQL Database i Azure SQL Managed Instance zostały dostosowane pod kątem optymalnej dostępności i wydajności. Warto jednak zauważyć, że w warunkach wyjątkowo wysokiej aktywności lub znacznego przeciążenia sieci niektóre zdarzenia inspekcji mogą nie być rejestrowane.
Inspekcja etykiet poufnych
W połączeniu z klasyfikacją danych można również monitorować dostęp do poufnych danych. Inspekcja usługi Azure SQL została ulepszona w celu uwzględnienia nowego pola w dzienniku inspekcji o nazwie data_sensitivity_information
.
Rejestrując etykiety poufności danych zwracanych przez zapytanie, to pole zapewnia łatwiejszy sposób śledzenia dostępu do niejawnych kolumn.
Inspekcja składa się z śledzenia i rejestrowania zdarzeń występujących w a aparatze bazy danych. Inspekcja usługi Azure SQL upraszcza kroki konfiguracji wymagane do jej włączenia, co ułatwia śledzenie działań bazy danych dla usługi SQL Database i usługi SQL Managed Instance.
Dynamiczne maskowanie danych
Dynamiczne maskowanie danych działa przez zaciemnianie danych w celu ograniczenia ich ujawnienia. Umożliwia to użytkownikom, którzy nie wymagają dostępu do poufnych informacji, aby wyświetlić kolumnę, ale nie rzeczywiste dane. Dynamiczne maskowanie danych działa w warstwie prezentacji, a niezamaskowane dane pozostają widoczne dla wysoce uprzywilejowanych użytkowników.
Dynamiczne maskowanie danych oferuje zaletę minimalnej modyfikacji aplikacji lub bazy danych. Możesz ją wygodnie skonfigurować za pomocą witryny Azure Portal lub języka T-SQL.
Zarówno kolumny Telefon Number, jak i EmailAddress są ukryte przed użytkownikiem DDMDemo, który ma SELECT
tylko uprawnienia do tabeli. Użytkownik może zobaczyć ostatnie cztery cyfry numeru telefonu, ponieważ jest on maskowany przy użyciu funkcji częściowej, która zastępuje wszystkie, ale ostatnie cztery cyfry w kolumnie. To maskowanie jest uznawane za funkcję niestandardową. Oprócz języka T-SQL, jeśli używasz usługi Azure SQL Database, możesz utworzyć reguły maskowania dynamicznego w witrynie Azure Portal.
Aby dodać regułę maskowania, przejdź do bazy danych w witrynie Azure Portal i wybierz pozycję Dynamiczne maskowanie danych w sekcji Zabezpieczenia głównego bloku bazy danych.
Dynamiczne maskowanie danych obsługuje następujące wzorce maskowania, których można użyć:
Funkcja maskowania | Definicja | Przykład języka T-SQL |
---|---|---|
Wartość domyślna | Maskuje dane w kolumnie bez uwidaczniania żadnej części wartości użytkownikowi. Użytkownik zobaczy XXXX dla wartości ciągu, 0 dla liczb i 01.01.1900 dla wartości daty. | ALTER TABLE [Customer] ALTER COLUMN Address ADD MASKED WITH (FUNCTION = 'default()') |
Karta kredytowa | Maskuje wszystkie, ale ostatnie cztery znaki, umożliwiając użytkownikom wyświetlanie ostatnich czterech cyfr. To maskowanie może być przydatne w przypadku agentów obsługi klienta, którzy muszą wyświetlić cztery ostatnie cyfry numeru karty kredytowej, ale którzy nie muszą widzieć całej liczby. Dane są wyświetlane w zwykłym formacie karty kredytowej XXXX-XXXX-XXXX-1234. | ALTER TABLE [Customer] ALTER COLUMN Address ADD MASKED WITH (FUNCTION = 'partial(0,"XXXX-XXXX-XXXX-",4)') |
Poczta e-mail | Tylko pierwsza litera i sufiks domeny końcowej nie są maskowane; na przykład "aXXX@XXXXXXX.com" | ALTER TABLE [Customer] ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()') |
Liczba | Ten format maskowania powinien być używany w kolumnach liczbowych. Przedstawia liczbę losową jako wartość maskowaną zamiast wartości rzeczywistej. W przypadku każdego zapytania jest wyświetlana inna liczba. | ALTER TABLE [Customer] ALTER COLUMN [Month] ADD MASKED WITH (FUNCTION = 'random(1, 12)') |
Ciąg niestandardowy | Ta opcja umożliwia maskowanie tekstu z dowolną wartością oraz wyświetlanie niestandardowej liczby znaków na dowolnym końcu maskowanej wartości. Jeśli długość maskowanej wartości jest równa lub mniejsza niż liczba znaków, które określa maska ma być wyświetlana, wyświetlane są tylko znaki maskowane. | ALTER TABLE [Customer] ALTER COLUMN [PhoneNumber] ADD MASKED WITH (FUNCTION = 'partial(1,"XXXXXXX",0)') |
Aby umożliwić użytkownikom pobieranie niemaskowanych danych z kolumn, dla których zdefiniowano maskowanie, należy jawnie udzielić UNMASK
uprawnienia.
Uwaga
Istnieje możliwość zidentyfikowania zamaskowanych danych przy użyciu wnioskowania na podstawie wyników. Jeśli używasz maskowania danych, należy również ograniczyć możliwość uruchamiania zapytań ad hoc przez użytkownika.
Z tego powodu zalecamy połączenie dynamicznego maskowania danych z innymi funkcjami zabezpieczeń, takimi jak inspekcja, szyfrowanie i zabezpieczenia na poziomie wiersza, aby zwiększyć ochronę poufnych danych.
Przypadek użycia
Maskowanie danych to prosta i uproszczona funkcja, która jest idealna w wielu scenariuszach, w tym:
Maskuj dane od użytkowników aplikacji, którzy nie mają bezpośredniego dostępu do bazy danych.
Ograniczanie informacji prywatnych dla grupy użytkowników.
Podaj dane maskowane od zewnętrznych dostawców, gdzie należy chronić poufne informacje, zachowując jednocześnie relacje między elementami w danych.
Wyeksportuj kopię produkcyjnej bazy danych do niższego środowiska na potrzeby programowania przy użyciu użytkownika, który nie ma
UNMASK
uprawnień. Wyeksportowane dane mają format maskowany.
Importowanie i eksportowanie danych
Kopiowanie danych z zamaskowanej kolumny do innej tabeli przy użyciu SELECT INTO
lub INSERT INTO
powoduje zamaskowanie danych w tabeli docelowej.
Gdy użytkownik bez UNMASK
uprawnień uruchamia importowanie i eksportowanie programu SQL Server, wyeksportowany plik danych zawiera dane maskowane, a zaimportowana baza danych będzie zawierać nieaktywnie maskowane dane.