Ćwiczenie — klasyfikacja danych, dynamiczne maskowanie danych i inspekcja SQL

Ukończone

W tym ćwiczeniu wykorzystasz wiedzę zdobytą w trakcie pracy z tym modułem podczas analizy scenariusza. Dowiesz się, jak dodać nowe klasyfikacje danych i dynamiczne maski danych, a następnie poznasz różne metody przeprowadzania inspekcji użytkowników próbujących przeglądać kolumny oznaczone na potrzeby klasyfikacji danych. To ćwiczenie łączy kilka pojęć, które zostały już poznane w module dotyczącym zarządzania zabezpieczeniami.

Konfigurowanie klasyfikacji danych i maskowanie

  1. W witrynie Azure Portal przejdź do wystąpienia bazy danych usługi Azure SQL Database (nie do serwera logicznego).

  2. W okienku z lewej w obszarze Zabezpieczenia wybierz pozycję Odnajdywanie i klasyfikacja danych.

  3. Wybierz kartę Klasyfikacja , a następnie wybierz pozycję Dodaj klasyfikację.

    Screenshot of how to add a new classification.

    W poprzednim ćwiczeniu dodano wszystkie zalecane klasyfikacje kolumn. W tym kroku ręcznie dodasz do listy kolumn sklasyfikowanych potencjalnie poufne kolumny.

  4. W tabeli SalesLT Customer zidentyfikowano i sklasyfikowano FirstName odnajdywanie danych i LastName klasyfikację, ale nie MiddleName. Użyj list rozwijanych, aby dodać ją teraz, a następnie wybierz pozycję Dodaj klasyfikację.

    Screenshot of how to add a name-related classification for MiddleName.

  5. Wybierz pozycję Zapisz.

  6. Upewnij się, że klasyfikacja została pomyślnie dodana, wyświetlając kartę Przegląd , i upewnij się, że MiddleName jest ona teraz wyświetlana na liście kolumn sklasyfikowanych w schemacie SalesLT.

  7. W okienku z lewej wybierz pozycję Przegląd, aby wrócić do przeglądu bazy danych.

    Dynamiczne maskowanie danych (DDM) jest dostępne zarówno w usłudze Azure SQL, jak i w usłudze SQL Server. DDM ta ogranicza ujawnianie danych przez maskowanie danych poufnych w przypadku użytkowników bez uprawnień na poziomie programu SQL Server, a nie na poziomie aplikacji, gdzie konieczne jest kodowanie tych typów reguł. Usługa Azure SQL zaleca elementy do zamaskowania. Można też ręcznie dodać maski.

    W następnych krokach zamaskujesz FirstNamekolumny , MiddleNamei LastName , które zostały przejrzene w poprzednim kroku.

  8. W witrynie Azure Portal przejdź do usługi Azure SQL Database. W okienku po lewej stronie w obszarze Zabezpieczenia wybierz pozycję Dynamiczne maskowanie danych, a następnie wybierz pozycję Dodaj maskę.

  9. Na listach rozwijanych wybierz schemat SalesLT , tabelę Customer i kolumnę FirstName . Możesz przejrzeć opcje maskowania, ale opcja domyślna jest odpowiednia w tym scenariuszu. Wybierz przycisk Dodaj, aby dodać regułę maskowania.

    Screenshot of how to add First Name mask.

  10. Powtórz poprzednie kroki dla kolumn MiddleName i LastName w tej tabeli.

    Teraz istnieją trzy reguły maskowania podobne do pokazanych poniżej:

    Screenshot of how to review all masking rules.

  11. Wybierz pozycję Zapisz.

  12. W okienku z lewej wybierz pozycję Przegląd, aby wrócić do przeglądu bazy danych.

Pobieranie danych, które są sklasyfikowane i maskowane

Następnie zasymulujesz kogoś, kto wysyła zapytanie do kolumn sklasyfikowanych i eksploruje dynamiczne maskowanie danych w akcji.

  1. Przejdź do programu SQL Server Management Studio (SSMS).

  2. Aby utworzyć nowe zapytanie w bazie danych AdventureWorks, kliknij prawym przyciskiem myszy bazę danych, a następnie wybierz pozycję Nowe zapytanie.

  3. Uruchom następujące zapytanie, aby zwrócić dane sklasyfikowane i w niektórych przypadkach kolumny oznaczone do maskowania danych. Wybierz pozycję Wykonaj , aby uruchomić zapytanie.

    SELECT TOP 10 FirstName, MiddleName, LastName
    FROM SalesLT.Customer;
    

    W wynikach powinno być wyświetlanych 10 pierwszych imion i nazwisk bez zastosowanego maskowania. Dlaczego? Ponieważ jesteś administratorem tego serwera logicznego usługi Azure SQL Database.

    Screenshot of SQL query results with no mask.

  4. W poniższym zapytaniu utworzysz nowego użytkownika i uruchomisz poprzednie zapytanie jako ten użytkownik. Użyjesz też instrukcji EXECUTE AS w celu spersonifikowania użytkownika Bob. Po uruchomieniu EXECUTE AS instrukcji kontekst wykonywania sesji jest przełączany na identyfikator logowania lub użytkownika. Oznacza to, że uprawnienia są sprawdzane względem nazwy logowania lub użytkownika zamiast osoby wykonującej EXECUTE AS polecenie (w tym przypadku ty). REVERT następnie służy do zatrzymywania personifikacji logowania lub użytkownika.

    Kilka pierwszych części poleceń powtarza się z poprzedniego ćwiczenia. Utwórz nowe zapytanie przy użyciu następujących poleceń, a następnie wybierz pozycję Wykonaj , aby uruchomić zapytanie i obserwować wyniki.

    -- Create a new SQL user and give them a password
    CREATE USER Bob WITH PASSWORD = 'c0mpl3xPassword!';
    
    -- Until you run the following two lines, Bob has no access to read or write data
    ALTER ROLE db_datareader ADD MEMBER Bob;
    ALTER ROLE db_datawriter ADD MEMBER Bob;
    
    -- Execute as our new, low-privilege user, Bob
    EXECUTE AS USER = 'Bob';
    SELECT TOP 10 FirstName, MiddleName, LastName
    FROM SalesLT.Customer;
    REVERT;
    

    Teraz w wynikach powinno zostać wyświetlonych pierwszych 10 nazwisk z zastosowanym maskowaniem. Bobowi nie udzielono dostępu do niemaskowanej postaci tych danych.

    Screenshot of SQL query results with mask.

    Co w przypadku, gdy z jakiegoś powodu Bob potrzebuje dostępu do tych nazwisk i uzyskuje do niego uprawnienia?

    Użytkowników wykluczonych z maskowania można zaktualizować w witrynie Azure Portal, przechodząc do okienka Dynamiczne maskowanie danych w obszarze Zabezpieczenia, ale można to zrobić również przy użyciu języka T-SQL.

  5. Kliknij prawym przyciskiem myszy bazę danych AdventureWorks i wybierz pozycję Nowe zapytanie, a następnie wprowadź następujące zapytanie, aby umożliwić Bobowi wykonywanie zapytań dotyczących wyników nazw bez maskowania. Wybierz pozycję Wykonaj , aby uruchomić zapytanie.

    GRANT UNMASK TO Bob;  
    EXECUTE AS USER = 'Bob';
    SELECT TOP 10 FirstName, MiddleName, LastName
    FROM SalesLT.Customer;
    REVERT;  
    

    Wyniki powinny zawierać pełne nazwiska.

    Screenshot of SQL query results with no mask.

  6. Możesz również usunąć uprawnienia użytkownika z pytaniami i potwierdzić tę akcję, uruchamiając następujące polecenia języka T-SQL w nowym zapytaniu:

    -- Remove unmasking privilege
    REVOKE UNMASK TO Bob;  
    
    -- Execute as Bob
    EXECUTE AS USER = 'Bob';
    SELECT TOP 10 FirstName, MiddleName, LastName
    FROM SalesLT.Customer;
    REVERT;  
    

    Wyniki powinny zawierać maskowane nazwiska.

    Screenshot of SQL query results with mask.

Przeglądanie dzienników inspekcji w programie SSMS

Jako administrator, możesz zechcieć przejrzeć i przeanalizować, kto uzyskuje dostęp do baz danych, a w szczególności — do danych sklasyfikowanych. Następnie możesz przejrzeć pliki inspekcji wysyłane do usługi Azure Blob Storage. W pierwszej kolejności należy scalić pliki inspekcji, jeśli dzienniki obejmują wiele plików. Można to zrobić przy użyciu programu SSMS, wykonując następujące czynności:

  1. Wybierz pozycję Plik>Otwórz>Scal pliki inspekcji.

    Screenshot of how to open audit files.

  2. Wybierz Dodaj.

    Screenshot of how to add a new file.

  3. Wybierz pozycję Dodaj z usługi Azure Blob Storage, a następnie wybierz pozycję Połączenie.

    Screenshot of how to add from Azure Blob storage.

  4. Zaloguj się na platformie Azure przy użyciu konta używanego w tym module.

    Screenshot of how to sign in to Azure.

  5. Wybierz kolejno subskrypcję, konto magazynu i kontener obiektów blob, do którego zgodnie z konfiguracją mają trafiać dzienniki inspekcji. Nazwa konta magazynu powinna rozpoczynać się od sql. Kontener będzie miał nazwę sqldbauditlogs. Jeśli nie ma kontenera o tej nazwie, utworzono inne konto magazynu na potrzeby inspekcji; zamiast tego użyj tego.

  6. Wybierz serwer logiczny usługi Azure SQL Database i bazę AdventureWorks danych. Upewnij się, że wartość Od czasu jest wcześniejsza niż podczas rozpoczynania ćwiczeń. Wybierz przycisk OK.

  7. Okno potwierdzenia będzie informować o liczbie pobieranych i scalanych plików. Wybierz przycisk OK.

  8. Przejrzyj pliki, a następnie wybierz przycisk OK po raz ostatni.

    Teraz są wyświetlane wszystkie dzienniki inspekcji. Wyszukaj informację o wykonanym przez siebie testowaniu maskowania za pomocą użytkownika Bob. Lista powinna znajdować się w dolnej części.

  9. Wybierz instrukcję, a następnie przejrzyj informacje w okienku szczegółów. Na przykład w przypadku jednego z zapytań, za pomocą którego Bob próbował wyświetlić dane sklasyfikowane, poniżej pola data_sensitivity_information można przejrzeć te dane sklasyfikowane.

  10. Kliknij dwukrotnie wartość data_sensitivity_information w okienku Szczegóły. Zostanie otwarte okno podręczne, w którym można łatwiej odczytać dane.

    Oto przykład tego, co można zobaczyć w obszarze data_sensitivity_information:

    <sensitivity_attributes max_rank="20" max_rank_desc="Medium"><sensitivity_attribute label="Confidential - GDPR" label_id="bf91e08c-f4f0-478a-b016-23422b2a65ff" information_type="Name" information_type_id="57845286-7598-22f5-3422-15b24aeb125e" rank="20" rank_desc="Medium"/></sensitivity_attributes>
    

    Następnie ten scalony plik można wyeksportować do pliku XEL lub CSV albo do tabeli w celu przeprowadzenia dodatkowej analizy. Można także wysyłać zapytania dotyczące plików zdarzeń rozszerzonych za pomocą programu Azure PowerShell.

Przeglądanie dzienników inspekcji w witrynie Azure Portal

Analizowanie dzienników inspekcji zależy od preferencji użytkownika. W tej sekcji zapoznasz się z wysyłaniem zapytań dotyczących dzienników zabezpieczeń w witrynie Azure Portal za pomocą usługi Log Analytics.

  1. W witrynie Azure Portal przejdź do AdventureWorks bazy danych. W okienku po lewej stronie w obszarze Zabezpieczenia wybierz pozycję Inspekcja, a następnie wybierz przycisk Wyświetl dzienniki inspekcji na pasku zadań.

    Teraz powinno być widoczne zapytanie dotyczące rekordów zdarzeń, opcje uruchamiania w Edytor Power Query (uruchamianie zapytań T-SQL za pośrednictwem portalu), opcje usługi Log Analytics, Wyświetlanie pulpitu nawigacyjnego i nie tylko.

    Screenshot of how to view audit records.

    Możesz się przyjrzeć, aby zrozumieć, jakie są niektóre opcje.

  2. Wybierz pozycję Log Analytics. Aby uzyskać dostęp do przycisku Log Analytics, może być konieczne wybranie pozycji Odśwież. Jeśli zobaczysz ekran Wprowadzenie, wybierz przycisk OK. Spowoduje to przejście do edytora zapytań, ale nie będzie w nim używany język T-SQL. W tym widoku można wykonywać zapytania dotyczące dzienników przy użyciu języka Kusto Query Language (KQL) przeznaczonego dla profesjonalistów SQL, który jest łatwy w używaniu i rozumieniu.

    Zapytanie domyślne dotyczy kategorii SQLSecurityAuditEvents. Chociaż teraz możesz użyć tej kategorii do wyświetlania zdarzeń związanych z zabezpieczeniami, to narzędzie może być również używane do wykonywania zapytań dotyczących innych dzienników i kategorii platformy Azure w usłudze Log Analytics. Na potrzeby tego kroku można wyszukać instrukcje, w których Bob próbował uzyskać dostęp do poufnych informacji. Aby uzyskać te same informacje, które pokazano w programie SSMS, rozwiń szczegóły wiersza, wybierając > przycisk.

    Może upłynąć kilka minut, zanim pojawią się wyniki. Możesz odświeżyć zapytanie, ponownie wybierając pozycję Uruchom.

    W ramach tego ćwiczenia nie zajmujemy się zbyt szczegółowo badaniem dzienników za pomocą zapytań KQL, ale we wcześniejszych materiałach referencyjnych znajduje się wiele zasobów, z których możesz skorzystać później.

    W następnym kroku zapoznasz się z dostępnym w zabezpieczeniach SQL pulpitem nawigacyjnym opartym na usłudze Log Analytics, który umożliwia monitorowanie i inspekcję dzienników oraz innych działań związanych ze środowiskiem SQL. Aby wrócić do okienka Rekordy inspekcji, zamknij okno zapytania usługi Log Analytics, wybierając pozycję X w prawym górnym rogu.

  3. Wybierz pozycję Wyświetl pulpit nawigacyjny.

    Screenshot of the log analytics dashboard.

    Zostanie wyświetlony przeglądowy pulpit nawigacyjny.

  4. Wybierz pozycję Azure SQL — dostęp do danych poufnych, aby wyświetlić więcej szczegółów.

    Może być konieczne odczekanie trzech do pięciu minut i wybranie pozycji Odśwież, zanim elementy zostaną tu wyświetlone.

    Możesz użyć tych szczegółowych informacji, aby dowiedzieć się:

    • Ile zapytań uzyskuje dostęp do danych poufnych.
    • Do jakich typów i do których danych poufnych jest uzyskiwany dostęp.
    • Które podmioty zabezpieczeń uzyskują dostęp do danych poufnych.
    • Które adresy IP uzyskują dostęp do danych poufnych.

    Zapoznaj się z dostępnymi tutaj informacjami i tym, jak możesz przeprowadzać inspekcję użycia za pomocą tego narzędzia. Możesz nawet wybrać każdą z nich i wyświetlić powiązane dzienniki w usłudze Log Analytics.

  5. Gdy skończysz, zamknij okienko Azure SQL — dostęp do danych poufnych, wybierając pozycję X w prawym górnym rogu.

  6. Po powrocie do okienka przeglądu pulpitu nawigacyjnego inspekcji wybierz pozycję Azure SQL — Zabezpieczenia Szczegółowe informacje.

    Ten pulpit nawigacyjny wyświetla więcej informacji o inspekcji, które ułatwiają zrozumienie działań bazy danych i uzyskanie wglądu w anomalie. Poświęć kilka minut na zapoznanie się z tymi opcjami i przechodzenie do ich szczegółów.

Oprócz wyświetlania tych szczegółowych informacji dla usług Azure SQL na platformie Azure można używać Microsoft Defender dla Chmury do monitorowania problemów występujących w całym majątku platformy Azure i zarządzania nimi oraz zarządzania nimi. Jeśli chcesz przyjrzeć się dostępności poza usługą Azure SQL Defender dla Chmury, możesz wyszukać i wybrać Microsoft Defender dla Chmury w witrynie Azure Portal. W zależności od poziomu subskrypcji dostęp może być ograniczony.