Ć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 pomaga zachować zgodność z przepisami, analizować aktywność bazy danych oraz uzyskać wgląd w odchylenia i anomalie, które mogą oznaczać potencjalne naruszenia zabezpieczeń. W tym ćwiczeniu skonfigurujesz inspekcję na poziomie serwera, ale jest ona również dostępna na poziomie bazy danych.

Alternatywą dla inspekcji programu SQL Server w usłudze Azure SQL Database jest inspekcja usługi Azure SQL. Jest ona obsługiwana przez funkcje inspekcji programu SQL Server i tak jak program SQL Server obsługuje akcje i grupy akcji inspekcji. 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. W przypadku usługi Log Analytics możesz wykonywać na dziennikach zapytania przy użyciu języka zapytań Kusto (KQL) i korzystać z pulpitów nawigacyjnych inspekcji usługi 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 jednym z kolejnych ćwiczeń zobaczysz, jak uzyskać dostęp do i jak korzystać z plików, które są wysyłane do usługi Azure Blob Storage, języka KQL oraz pulpitów nawigacyjnych usługi Log Analytics.

Wykonaj następujące kroki, aby skonfigurować obszar roboczy usługi Log Analytics:

  1. Na pasku wyszukiwania w witrynie Azure Portal wprowadź ciąg Log Analytics, a następnie wybierz pozycję Obszary robocze usługi Log Analytics z wyników. Zostanie wyświetlone okienko Obszary robocze usługi Log Analytics.

  2. Wybierz pozycję Utwórz. Zostanie wyświetlone menu Tworzenie obszaru roboczego usługi Log Analytics.

  3. Na karcie Podstawy 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
    Nazwisko Wprowadź wartość azuresql-la
    Region (Region) Wybierz lokalizację znajdującą się najbliżej Ciebie z poniższej listy

    Bezpłatna piaskownica umożliwia tworzenie zasobów w podzestawie regionów globalnych platformy Azure. Podczas tworzenia zasobów wybierz region z poniższej listy:

    • Zachodnie stany USA 2
    • South Central US
    • Central US
    • East US
    • West Europe
    • Southeast Asia
    • Japonia Wschodnia
    • Brazylia Południowa
    • Australia Południowo-Wschodnia
    • Indie Centralne
  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. Zostanie wyświetlone okienko Przegląd obszaru roboczego usługi Log Analytics.

  6. W witrynie Azure Portal przejdź do bazy danych AdventureWorks .

  7. W menu w obszarze Zabezpieczenia wybierz pozycję Inspekcja. 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 Magazyn, a następnie wypełnij wymagane pola:

    • W polu Subskrypcja z listy rozwijanej wybierz pozycję Subskrypcja Concierge.
    • W polu Konto magazynu z listy rozwijanej wybierz konto, które zaczyna się od sql , a następnie losowy ciąg liter i cyfr.
    • Pozostaw wartość Typ uwierzytelniania magazynu jako domyślną opcję Klucze dostępu do magazynu.

    Konto sql magazynu służy do zbierania plików dziennika XEvent, które są zapisywane jako kolekcja plików obiektów blob w kontenerze o nazwie sqldbauditlogs. W późniejszym działaniu przejrzysz kontener, aby dowiedzieć się, jak pliki dziennika różnią się od usługi Log Analytics.

    Napiwek

    Jeśli nie widzisz żadnych kont magazynu, 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 pozycję Właściwości zaawansowane, aby rozwinąć sekcję i ustawić następujące elementy konfiguracji:

    • W polu Przechowywanie (dni) wprowadź wartość 7
    • W polu Klucz dostępu do magazynu wybierz pozycję Podstawowy.

    Uwaga

    Jeśli nie widzisz właściwości Zaawansowane, wybierz pozycję Zapisz na pasku poleceń, a następnie powtórz instrukcje konfiguracji dla tej strony.

  11. Zaznacz pole wyboru Log Analytics i wypełnij wymagane pola:

    • W polu Subskrypcja wybierz pozycję Subskrypcja Concierge z listy rozwijanej.
    • W przypadku usługi Log Analytics wybierz obszar roboczy usługi Log Analytics utworzony 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. W dalszej części zapoznasz się bardziej szczegółowo z funkcjami inspekcji w usłudze Azure SQL. Dowiesz się, jak analizować dzienniki inspekcji, aby wyświetlić wszystkie zmiany wprowadzone w całym tym module. Poznasz też inne interesujące przypadki użycia.

Rejestr dla usługi Azure SQL Database

Funkcja rejestru zapewnia dowód naruszenia, kryptograficzny dowód integralności danych w 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 skrót SHA-256 przy użyciu struktury danych drzewa Merkle, która tworzy skrót główny reprezentujący wszystkie wiersze w transakcji. Transakcje, które przetwarza baza danych, są następnie również algorytmem SHA-256 przy użyciu struktury danych drzewa Merkle. Wynikiem jest skrót główny, który tworzy blok. Blok jest następnie skrót SHA-256 przez skrót główny bloku, wraz z skrótem głównym poprzedniego bloku jako dane wejściowe funkcji skrótu. Ta funkcja tworzenia skrótów stanowi ł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 rejestru z możliwością aktualizowania, jak i tabele rejestru tylko do dołączania zapewniają możliwości dowodu naruszenia i cyfrowego śledczego.

Ćwiczenie przy użyciu rejestru dla usługi Azure SQL Database

W ćwiczeniu tworzenia bazy danych 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 myLedgerDatabase bazę danych, a następnie wybierz pozycję Nowe zapytanie.

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

    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, $30 i $200.

    INSERT INTO [Account].[Balance]
    VALUES (2, 'Smith', 'John', 500),
    (3, 'Smith', 'Joe', 30),
    (4, 'Michaels', 'Mary', 200);
    
  5. Wyświetl tabelę [Account].[Balance] rejestru z możliwością aktualizowania 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 uwagę na unikatowy identyfikator transakcji skojarzony z transakcją, która wstawiła dane. Ponieważ Johnelement , Joei Mary został wstawiony 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 Nicksaldo z 50 do 100.

    UPDATE [Account].[Balance] SET [Balance] = 100
    WHERE [CustomerID] = 1;
    
  7. [Account].[Balance] Wyświetl widok rejestru 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;
    

    NickSaldo konta zostało pomyślnie zaktualizowane w tabeli rejestru z możliwością aktualizacji do .100
    Widok rejestru pokazuje, że aktualizowanie tabeli rejestru jest wierszem DELETE oryginalnym za pomocą 50polecenia . Saldo odpowiadające nowemu INSERT wierszowi z 100 wyświetlonym nowym saldem dla elementu 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 na podstawie ról.

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 umożliwia śledzenie liczby zakończonych niepowodzeniem i pomyślnych połączeń oraz liczby połączeń zablokowanych przez zaporę.

Firma Microsoft zaleca skonfigurowanie Microsoft Defender dla Chmury, w tym skonfigurowanie alertów dla usługi Advanced Threat Protection. Omówimy te elementy zabezpieczeń w następnej sekcji i ćwiczeniu. Na koniec możesz użyć Microsoft Defender dla Chmury do monitorowania i odbierania zaleceń dotyczących wszystkich zasobów platformy Azure oraz zarządzania nimi.

Odnajdywanie i klasyfikacja danych

Usługa Odnajdywania i klasyfikacji danych stanowi nowy paradygmat ochrony informacji dla usługi Azure SQL Database. Usługa jest przeznaczona do ochrony danych, a nie tylko bazy danych. Ten model 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 w przypadku usługi Azure SQL, ale program SQL Server obsługuje podobną funkcję za pośrednictwem kreatora w programie SQL Server Management Studio.

Aby uzyskać więcej informacji, zobacz Odnajdywanie i klasyfikacja danych.

Microsoft Defender for Cloud Alert

Microsoft Defender dla Chmury to ujednolicony pakiet zaawansowanych funkcji zabezpieczeń SQL. Zapewnia pojedynczą lokalizację, w której można włączać te dwie główne możliwości i zarządzać nimi:

  • Ocena luk w zabezpieczeniach
  • Advanced Threat Protection

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. Skonfigurowanie okresowego skanowania cyklicznego umożliwia tej usłudze skanowanie baz danych co siedem dni i sprawdzanie ich pod kątem luk w zabezpieczeniach. Możesz zdecydować o wysyłaniu tych raportów do administratorów, właścicieli subskrypcji lub innych osób, które powinny być powiadamiane o zmianach. Aby ta usługa działała, należy określić konto magazynu, w którym będą przechowywane wyniki.

Advanced Threat Protection

Dzięki usłudze Advanced Threat Protection możesz wykrywać potencjalne zagrożenia i reagować na nie w miarę ich występowania, otrzymując alerty dotyczące zabezpieczeń w przypadku 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
  • Podatność na wstrzyknięcie 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 Microsoft Defender dla Chmury, a usługa Azure SQL ogólnie włącza i chroni przed nimi.

Zabezpieczenia na poziomie wierszy

Zabezpieczenia na poziomie wiersza umożliwiają używanie członkostwa w grupie lub kontekstu wykonywania w celu kontrolowania dostępu do wierszy w tabeli bazy danych.

Zabezpieczenia na poziomie wiersza ułatwiają 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ń.

Zabezpieczenia na poziomie wiersza obsługują dwa typy predykatów zabezpieczeń.

  • Filtrowanie predykatów dyskretnie filtruje wiersze dostępne do operacji odczytu (SELECT, UPDATE i DELETE)
  • Blokuj predykaty 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 metod umożliwiają monitorowanie zdarzeń związanych z zabezpieczeniami dla usługi Azure SQL Database?