Ćwiczenie — zarządzanie zabezpieczeniami

Ukończone

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:

  1. 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 .

  2. Wybierz pozycję Utwórz. Pojawi się menu Utwórz obszar roboczy Log Analytics.

  3. 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
  4. Wybierz pozycję Przejrzyj i utwórz, poczekaj na zweryfikowanie danych wejściowych, a następnie wybierz pozycję Utwórz. Zaczekaj na wdrożenie zasobu.

  5. Wybierz pozycję Przejdź do zasobu. Wyświetli się okienko Przegląd dla obszaru roboczego usługi Log Analytics.

  6. Na portalu Azure przejdź do bazy danych AdventureWorks.

  7. 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.

  8. Wybierz przełącznik slajdu, aby włączyć inspekcję usługi Azure SQL.

  9. 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.

  10. 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.

  11. 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).
  12. 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.

  1. Otwórz program SSMS i połącz się z serwerem logicznym usługi Azure SQL Database.

  2. Kliknij prawym przyciskiem myszy bazę danych myLedgerDatabase, a następnie wybierz pozycję Nowe zapytanie.

  3. Dodaj nazwę Nick Jones jako nowego klienta z saldem otwarcia w wysokości USD 50.

    INSERT INTO [Account].[Balance]
    VALUES (1, 'Jones', 'Nick', 50);
    
  4. Wstaw nazwy John Smith, Joe Smithi Mary 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);
    
  5. 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, Joei Mary 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ę.
  6. Zaktualizuj saldo Nickz 50 na 100.

    UPDATE [Account].[Balance] SET [Balance] = 100
    WHERE [CustomerID] = 1;
    
  7. 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 Nickzostało pomyślnie zaktualizowane w tabeli aktualizowalnego rejestru na 100.
    Widok rejestru pokazuje, że aktualizacja tabeli rejestru to operacja DELETE na oryginalnym wierszu z 50. Saldo z odpowiadającym INSERT nowego wiersza z 100 pokazuje nowe saldo dla Nick.

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

Test wiedzy

1.

Które z poniższych sposobów umożliwiają monitorowanie zdarzeń związanych z zabezpieczeniami dla usługi Azure SQL Database?