Ćwiczenie — zarządzanie zabezpieczeniami
Po zabezpieczeniu usługi Azure SQL Database na poziomach sieci, uwierzytelniania i ochrony danych ostatnim krokiem jest zrozumienie, jak będziesz zarządzać zabezpieczeniami na bieżąco. Zarządzanie zabezpieczeniami obejmuje inspekcję, monitorowanie i klasyfikację danych.
Inspekcja
Inspekcja może pomóc zachować zgodność z przepisami, zrozumieć aktywność bazy danych i uzyskać wgląd w rozbieżności i anomalie, które mogą wskazywać na potencjalne naruszenia zabezpieczeń. W tym działaniu skonfigurujesz inspekcję na poziomie serwera, ale jest ona również dostępna na poziomie bazy danych.
Alternatywą dla inspekcji programu SQL Server usługa Azure SQL Database ma inspekcji usługi Azure SQL. Jest zasilana przez mechanizm inspekcji SQL Server i, podobnie jak SQL Server, obsługuje grupy działań inspekcyjnych i działania. Funkcja inspekcji śledzi zdarzenia bazy danych i serwera oraz zapisuje zdarzenia w dzienniku inspekcji w usłudze Azure Storage, Log Analytics lub w usłudze Azure Event Hubs. Jeśli wskażesz konto usługi Azure Blob Storage, możesz przechowywać i analizować wyniki w plikach XEvents. Dzięki Log Analytics zyskujesz możliwość wykonywania zapytań do swoich dzienników za pomocą języka zapytań Kusto (KQL) oraz korzystania z pulpitów inspekcji Log Analytics.
Konfigurowanie inspekcji
We wcześniejszym ćwiczeniu na potrzeby wdrażania usługi SQL Database skonfigurujesz inspekcję na poziomie serwera, ale jest ona również dostępna na poziomie bazy danych. W przyszłym ćwiczeniu dowiesz się, jak uzyskiwać dostęp do plików wysyłanych do usługi Azure Blob Storage, KQL i pulpitów nawigacyjnych usługi Log Analytics oraz korzystać z tych plików.
Wykonaj następujące kroki, aby skonfigurować obszar roboczy usługi Log Analytics:
Na pasku wyszukiwania witryny Azure Portal wprowadź log analytics, a następnie wybierz obszary robocze usługi Log Analytics z wyników. Zostanie wyświetlone okienko obszarów roboczych Log Analytics .
Wybierz pozycję Utwórz. Pojawi się menu Utwórz obszar roboczy Log Analytics.
Na karcie Podstawowe wprowadź następujące wartości dla każdego ustawienia.
Ustawienie Wartość Szczegóły projektu Subskrypcja Subskrypcja Concierge Grupa zasobów Z listy rozwijanej wybierz pozycję [Grupa zasobów piaskownicy] szczegóły wystąpienia Nazwa Wprowadź azuresql-la Region Wybierz lokalizację znajdującą się najbliżej Ciebie z poniższej listy Bezpłatna piaskownica umożliwia tworzenie zasobów w wybranych regionach globalnych platformy Azure. Wybierz region z poniższej listy podczas tworzenia zasobów:
- Zachodnie stany USA 2
- Południowo-środkowe stany USA
- Środkowe stany USA
- Wschodnie stany USA
- Europa Zachodnia
- Azja Południowo-Wschodnia
- Japonia Wschodnia
- Brazylia Południowa
- Australia Południowo-Wschodnia
- Indie Środkowe
Wybierz pozycję Przejrzyj i utwórz, poczekaj na zweryfikowanie danych wejściowych, a następnie wybierz pozycję Utwórz. Zaczekaj na wdrożenie zasobu.
Wybierz pozycję Przejdź do zasobu. Wyświetli się okienko Przegląd dla obszaru roboczego usługi Log Analytics.
Na portalu Azure przejdź do bazy danych AdventureWorks.
W menu w obszarze Securitywybierz pozycję Auditing. Przejrzyj opcje.
Inspekcję można zastosować na poziomie serwera, która ma zastosowanie do wszystkich baz danych na serwerze logicznym usługi Azure SQL Database. Jeśli zastosujesz również inspekcję na poziomie bazy danych (co zrobisz w tej lekcji), obie inspekcje będą wykonywane równolegle; jeden nie zastępuje drugiego.
Wybierz przełącznik slajdu, aby włączyć inspekcję usługi Azure SQL.
Zaznacz pole wyboru Storage, a następnie wypełnij wymagane pola:
- W przypadku subskrypcji z listy rozwijanej wybierz subskrypcję Concierge.
- W przypadku konta magazynuz listy rozwijanej wybierz konto, które rozpoczyna się od
sql
, a następnie losowy ciąg liter i cyfr. - Pozostaw typ uwierzytelniania magazynu jako domyślną opcję Klucze dostępu do magazynu.
Konto magazynu
sql
służy do zbierania plików dzienników XEvent, które są zapisywane jako kolekcja plików blob w kontenerze nazwanym sqldbauditlogs. W późniejszym działaniu przejrzysz kontener, aby dowiedzieć się, jak pliki dziennika różnią się od usługi Log Analytics.Napiwek
W przypadku, gdy nie widzisz żadnych kont przechowywania, utwórz nowe konto. Może być konieczne odświeżenie strony po kilku minutach przed jej wyświetleniem.
Jeśli zamierzasz przeprowadzać inspekcję środowiska produkcyjnego, rozważ posiadanie oddzielnego konta magazynu dla dzienników inspekcji.
Wybierz Właściwości zaawansowane, aby rozwinąć sekcję i ustawić następujące elementy konfiguracji:
- W przypadku przechowywania (dni)wprowadź 7
- W przypadku klucza dostępustorage wybierz pozycję Primary.
Notatka
Jeśli nie widzisz zaawansowanych właściwości , wybierz pozycję Zapisz na pasku poleceń, a następnie powtórz kroki konfiguracji dla tej strony.
Zaznacz pole Log Analytics i wypełnij wymagane pola.
- W obszarze subskrypcji wybierz subskrypcję concierge z listy rozwijanej.
- W przypadku Log Analyticswybierz obszar roboczy Log Analytics, który utworzyłeś wcześniej w tym ćwiczeniu (asuresql-la).
Wybierz pozycję Zapisz.
Przetworzenie konfiguracji może potrwać kilka minut.
Teraz włączono inspekcję dla konta magazynu i obszaru roboczego usługi Azure Log Analytics. Później dowiesz się więcej na temat możliwości inspekcji w usłudze Azure SQL. Zobaczysz, jak analizować dzienniki inspekcji, aby wyświetlić wszystkie zmiany wprowadzone w całym module, a także inne interesujące przypadki użycia.
Księga dla usługi Azure SQL Database
Funkcja rejestru zapewnia dowody na ingerencję, kryptograficzne potwierdzenie integralności danych w Twojej bazie danych. Ten dowód może pomóc usprawnić proces inspekcji.
Rejestr pomaga chronić dane przed wszelkimi osobami atakującymi lub użytkownikami z wysokimi uprawnieniami, w tym administratorami baz danych (DBA), administratorami systemu i administratorami chmury. Podobnie jak w przypadku tradycyjnego rejestru funkcja zachowuje dane historyczne. Gdy transakcja w tabeli rejestru modyfikuje dane, zdarzenie jest kryptograficznie skracane przy użyciu SHA-256 z zastosowaniem drzewa Merkle jako struktury danych, które tworzy korzeń skrótu reprezentujący wszystkie rekordy transakcji. Transakcje przetwarzane przez bazę danych są następnie również hashowane za pomocą algorytmu SHA-256 w strukturze danych drzewa Merkle. Wynikiem jest skrót główny, który tworzy blok. Blok jest następnie zahaszowany SHA-256 z wykorzystaniem skrótu głównego bloku, wraz z wykorzystaniem skrótu głównego poprzedniego bloku jako dane wejściowe do funkcji skrótu. Haszowanie tworzy łańcuch bloków. Jeśli wiersz zostanie zaktualizowany w bazie danych, jego poprzednia wartość zostanie zachowana i chroniona w tabeli historii. Rejestr zawiera kronikę wszystkich zmian wprowadzonych w bazie danych w czasie.
Funkcje rejestru są wprowadzane do tabel w dwóch formularzach:
- Tabele rejestru z możliwością aktualizowania, które umożliwiają aktualizowanie i usuwanie wierszy w tabelach
- Tabele rejestru tylko do dołączania, które zezwalają tylko na wstawianie do tabel
Zarówno tabele księgowe z możliwością aktualizacji, jak i tabele księgowe tylko do dołączania dostarczają dowodu manipulacji i możliwości cyfrowego śledztwa.
Ćwiczenie przy użyciu rejestru dla usługi Azure SQL Database
W ćwiczeniu tworzenia usługi Azure SQL Database dodaliśmy bazę danych o nazwie myLedgerDatabase
i utworzyliśmy tabelę o nazwie Account.Balance
. W tym ćwiczeniu wstawimy dane, zaktualizujemy dane, a następnie wykonamy zapytanie względem tabeli historii i widoków rejestru, aby zobaczyć śledzenie, które odbywa się, oraz relację między tabelami.
Otwórz program SSMS i połącz się z serwerem logicznym usługi Azure SQL Database.
Kliknij prawym przyciskiem myszy bazę danych
myLedgerDatabase
, a następnie wybierz pozycję Nowe zapytanie.Dodaj nazwę
Nick Jones
jako nowego klienta z saldem otwarcia w wysokości USD 50.INSERT INTO [Account].[Balance] VALUES (1, 'Jones', 'Nick', 50);
Wstaw nazwy
John Smith
,Joe Smith
iMary Michaels
jako nowych klientów z saldami otwarcia odpowiednio 500 USD, 30 USD i 200 USD.INSERT INTO [Account].[Balance] VALUES (2, 'Smith', 'John', 500), (3, 'Smith', 'Joe', 30), (4, 'Michaels', 'Mary', 200);
Wyświetl aktualizowalną tabelę rejestru
[Account].[Balance]
i określ kolumny GENERATED ALWAYS dodane do tabeli. Wybierz pozycję Wykonaj, aby uruchomić zapytanie.SELECT [CustomerID] ,[LastName] ,[FirstName] ,[Balance] ,[ledger_start_transaction_id] ,[ledger_end_transaction_id] ,[ledger_start_sequence_number] ,[ledger_end_sequence_number] FROM [Account].[Balance];
W oknie wyników najpierw zobaczysz wartości wstawione przez polecenia języka T-SQL wraz z metadanymi systemu używanymi do celów pochodzenia danych.
- Kolumna
ledger_start_transaction_id
zwraca unikatowy identyfikator transakcji skojarzony z transakcją, która wstawiła dane. PonieważJohn
,Joe
iMary
zostały wstawione przy użyciu tej samej transakcji, współużytkują ten sam identyfikator transakcji. - Kolumna
ledger_start_sequence_number
zwraca uwagę na kolejność, według której wartości zostały wstawione przez transakcję.
- Kolumna
Zaktualizuj saldo
Nick
z50
na100
.UPDATE [Account].[Balance] SET [Balance] = 100 WHERE [CustomerID] = 1;
Wyświetl widok rejestru
[Account].[Balance]
wraz z widokiem systemu rejestru transakcji, aby zidentyfikować użytkowników, którzy dokonali zmian. Wybierz pozycję Wykonaj, aby uruchomić zapytanie.SELECT t.[commit_time] AS [CommitTime] , t.[principal_name] AS [UserName] , l.[CustomerID] , l.[LastName] , l.[FirstName] , l.[Balance] , l.[ledger_operation_type_desc] AS Operation FROM [Account].[Balance_Ledger] l JOIN sys.database_ledger_transactions t ON t.transaction_id = l.ledger_transaction_id ORDER BY t.commit_time DESC;
Saldo konta
Nick
zostało pomyślnie zaktualizowane w tabeli aktualizowalnego rejestru na100
.
Widok rejestru pokazuje, że aktualizacja tabeli rejestru to operacjaDELETE
na oryginalnym wierszu z50
. Saldo z odpowiadającymINSERT
nowego wiersza z100
pokazuje nowe saldo dlaNick
.
Monitorowanie
Istnieją dwa aspekty monitorowania zabezpieczeń i zarządzania nimi:
- Poziom platformy Azure
- Poziom bazy danych lub serwera
Na platformie Azure można stosować narzędzia, takie jak dzienniki aktywności i inspekcja kontroli dostępu opartej na rolach.
W usłudze Azure SQL Database można skonfigurować inspekcję usługi Azure SQL i zastosować dynamiczne widoki zarządzania, metryki i alerty w celu monitorowania zdarzeń związanych z zabezpieczeniami. Na przykład sys.event_log
pozwala śledzić liczbę zakończonych niepowodzeniem i pomyślnych połączeń oraz liczbę połączeń zablokowanych przez zaporę.
Firma Microsoft zaleca skonfigurowanie usługi Microsoft Defender for Cloud, w tym skonfigurowanie alertów usługi Advanced Threat Protection. Omówimy te elementy zabezpieczeń w następnej sekcji i ćwiczeniu. Na koniec możesz użyć usługi Microsoft Defender for Cloud do monitorowania, zarządzania i odbierania zaleceń dotyczących wszystkich zasobów w infrastrukturze platformy Azure.
Odnajdywanie danych & Klasyfikacja
Usługa Data Discovery & Classification stanowi nowy paradygmat ochrony informacji dla usługi Azure SQL Database. Usługa ma na celu ochronę danych, a nie tylko bazy danych. Ten paradygmat obejmuje:
- Odnajdywanie i zalecenia dotyczące potencjalnie poufnych danych, które powinny być klasyfikowane
- Możliwość trwałego dodawania etykiet do kolumn przy użyciu atrybutów metadanych
- Możliwość inspekcji i wykonywania zapytań dotyczących dostępu do poufnych danych
Usługa Azure SQL oferuje zarówno zasady usługi SQL Information Protection, jak i zasady usługi Microsoft Information Protection w klasyfikacji danych i można wybrać jedną z tych zasad na podstawie wymagań.
Widok portalu jest dostępny tylko dla usługi Azure SQL, ale program SQL Server obsługuje podobne funkcje za pośrednictwem kreatora w programie SQL Server Management Studio.
Aby uzyskać więcej informacji, zobacz Odnajdywanie danych & Klasyfikacja.
Microsoft Defender for Cloud
Microsoft Defender for Cloud to ujednolicony pakiet zaawansowanych funkcji zabezpieczeń SQL. Zapewnia jedną lokalizację go-to umożliwiającą włączanie dwóch głównych możliwości i zarządzanie nimi:
- Ocena luk w zabezpieczeniach
- Zaawansowana ochrona przed zagrożeniami
Ocena luk w zabezpieczeniach
Na najwyższym poziomie ocena luk w zabezpieczeniach SQL to usługa skanowania, która zapewnia wgląd w stan zabezpieczeń i zapewnia kroki umożliwiające podejmowanie działań w celu rozwiązania wszelkich potencjalnych problemów. Podczas konfigurowania okresowych skanów cyklicznych usługa umożliwia skanowanie baz danych co siedem dni i sprawdzanie pod kątem wszelkich luk w zabezpieczeniach. Następnie możesz wysłać te raporty do administratorów, właścicieli subskrypcji lub innych osób, które mogą wymagać powiadomienia o zmianach. Aby ta usługa działała, należy określić konto magazynu, na którym będą przechowywane wyniki.
Zaawansowana ochrona przed zagrożeniami
Dzięki usłudze Advanced Threat Protection można wykrywać potencjalne zagrożenia i reagować na nie w miarę ich występowania, odbierając alerty zabezpieczeń dotyczące nietypowych działań. Usługa Advanced Threat Protection stosuje zaawansowane technologie monitorowania i uczenia maszynowego w celu wykrycia, czy wystąpiły jakiekolwiek z następujących zagrożeń:
- Wstrzyknięcie kodu SQL
- Luka w zabezpieczeniach dotycząca wstrzyknięcia kodu SQL
- Eksfiltracja danych
- Niebezpieczna akcja
- Próba ataku siłowego
- Nietypowe logowanie klienta
W dwóch następnych ćwiczeniach poznasz możliwości i scenariusze, które umożliwia usługa Microsoft Defender for Cloud oraz jak chroni przed zagrożeniami, a także ogólne działanie Azure SQL.
Zabezpieczenia na poziomie wiersza
Row-Level Zabezpieczenia umożliwiają kontrolowanie dostępu do wierszy w tabeli bazy danych przy użyciu członkostwa w grupie lub kontekstu wykonywania.
Row-Level Security (RLS) ułatwia implementowanie ograniczeń dostępu do wierszy danych. Można na przykład upewnić się, że pracownicy uzyskują dostęp tylko do tych wierszy danych, które są odpowiednie dla ich działu. Innym przykładem jest ograniczenie dostępu do danych klientów tylko do danych istotnych dla ich firmy.
Logika ograniczeń dostępu znajduje się w warstwie bazy danych, a nie z dala od danych w innej warstwie aplikacji. System bazy danych stosuje ograniczenia dostępu za każdym razem, gdy jest podejmowana próba uzyskania dostępu do danych z dowolnej warstwy. Dzięki temu system zabezpieczeń jest bardziej niezawodny i niezawodny, zmniejszając obszar powierzchni systemu zabezpieczeń.
RLS obsługuje dwa typy predykatów zabezpieczeń.
- Filtry predykatów niejawnie filtrują wiersze dostępne do operacji odczytu (SELECT, UPDATE i DELETE)
- Predykaty blokujące jawnie blokują operacje zapisu (PO WSTAWIENIU, PO AKTUALIZACJI, PRZED AKTUALIZACJĄ, PRZED USUNIĘCIEM), które naruszają predykat