Udostępnij za pomocą


Inspekcja programu SQL Server (aparat bazy danych)

Dotyczy:programu SQL ServerAzure SQL Managed Instance

Przeprowadzanie audytu instancji silnika bazy danych SQL Server lub pojedynczej bazy danych obejmuje śledzenie i rejestrowanie zdarzeń, które występują w silniku bazy danych. Inspekcja programu SQL Server umożliwia tworzenie inspekcji serwerów, które mogą zawierać specyfikacje inspekcji serwera dla zdarzeń na poziomie serwera oraz specyfikacje inspekcji bazy danych dla zdarzeń na poziomie bazy danych. Zdarzenia inspekcji można zapisywać w dziennikach zdarzeń lub w plikach inspekcji.

Ważny

Funkcja języka T-SQL w usłudze Azure SQL Managed Instance wykazuje pewne zmiany w zachowaniu. Zobacz różnice języka T-SQL w usłudze Azure SQL Managed Instance w porównaniu z programem SQL Server, aby uzyskać szczegółowe informacje na temat wszystkich zmian zachowania języka T-SQL.

Istnieje kilka poziomów inspekcji dla programu SQL Server, w zależności od wymagań dotyczących instytucji rządowych lub standardów dla instalacji. Inspekcja programu SQL Server udostępnia narzędzia i procesy, które należy włączyć, przechowywać i wyświetlać inspekcje na różnych obiektach serwera i bazy danych.

Można rejestrować grupy akcji inspekcji serwera na wystąpienie oraz grupy akcji inspekcji bazy danych lub akcje inspekcji bazy danych dla bazy danych. Zdarzenie inspekcji występuje za każdym razem, gdy napotkano akcję z możliwością inspekcji.

Wszystkie wersje programu SQL Server obsługują inspekcje na poziomie serwera. W programie SQL Server 2016 (13.x) z dodatkiem Service Pack 1 lub nowszym wszystkie wersje obsługują inspekcje na poziomie bazy danych. Wcześniej inspekcja na poziomie bazy danych była ograniczona do wersji Enterprise, Developer i Evaluation. Aby uzyskać więcej informacji, zobacz Wersje i obsługiwane funkcje programu SQL Server 2016.

Notatka

Ten artykuł dotyczy programu SQL Server. W przypadku usługi SQL Database zobacz Inspekcja dla usług Azure SQL Database i Azure Synapse Analytics.

Składniki inspekcji programu SQL Server

inspekcji to połączenie kilku elementów w jeden pakiet dla określonej grupy akcji serwera lub akcji bazy danych. Składniki inspekcji programu SQL Server łączą się w celu utworzenia danych wyjściowych nazywanych inspekcją, podobnie jak definicja raportu połączona z elementami grafiki i danych tworzy raport.

Audyt programu SQL Server używa zdarzeń rozszerzonych do tworzenia audytu. Aby uzyskać więcej informacji na temat zdarzeń rozszerzonych, zobacz Omówienie zdarzeń rozszerzonych.

Inspekcja programu SQL Server

Obiekt inspekcji programu SQL Server zbiera pojedyncze wystąpienie akcji serwera lub na poziomie bazy danych oraz grup akcji do monitorowania. Inspekcja jest na poziomie wystąpienia programu SQL Server. Możesz mieć wiele audytów dla instancji SQL Server.

Podczas definiowania inspekcji należy określić lokalizację wyników audytu. Jest to miejsce docelowe inspekcji. Audyt jest tworzony w stanie wyłączonym i nie wykonuje automatycznych audytów żadnych działań. Po włączeniu inspekcji miejsce docelowe inspekcji odbiera dane z inspekcji.

Specyfikacja inspekcji serwera

Obiekt Server Audit Specification należy do audytu. Można utworzyć jedną specyfikację audytu serwera na audyt, ponieważ oba są tworzone w zakresie instancji SQL Server.

Specyfikacja inspekcji serwera zbiera wiele grup działań na poziomie serwera generowanych przez funkcję Zdarzenia rozszerzone. Grupy działań kontroli można uwzględnić w specyfikacji kontroli serwera. Grupy akcji inspekcji to wstępnie zdefiniowane grupy akcji, które są zdarzeniami niepodzielnymi występującymi w aparacie silnika bazy danych. Te akcje są wysyłane do inspekcji, która rejestruje je w obiekcie docelowym.

Grupy działań audytu na poziomie serwera zostały opisane w artykule Grupy i działania audytu serwera SQL Server.

Notatka

Ze względu na ograniczenia wydajności nie przeprowadzamy inspekcji tabel tempdb i tymczasowych. Chociaż grupa akcji zakończona w partii przechwytuje instrukcje dotyczące tabel tymczasowych, może nie poprawnie wypełniać nazw obiektów. Jednak tabela źródłowa jest zawsze poddawana audytowi, zapewniając, że wszystkie wstawki z tabeli źródłowej do tabel tymczasowych są rejestrowane.

Specyfikacja inspekcji bazy danych

Obiekt Database Audit Specification jest częścią audytu SQL Server. Możesz utworzyć jedną specyfikację inspekcji bazy danych dla bazy danych programu SQL Server na inspekcję.

Specyfikacja inspekcji bazy danych zbiera akcje inspekcji na poziomie bazy danych zgłoszone przez funkcję Zdarzenia rozszerzone. Możesz dodać grupy akcji inspekcji lub zdarzenia inspekcji do specyfikacji inspekcji bazy danych. Zdarzenia audytu to niepodzielne akcje, które mogą być poddawane audytowi przez aparat programu SQL Server. Grupy akcji kontrolnych są wstępnie zdefiniowanymi grupami działań. Oba znajdują się w zakresie bazy danych programu SQL Server. Te akcje są wysyłane do inspekcji, która rejestruje je w obiekcie docelowym. Nie dołączaj do specyfikacji audytu bazy danych użytkownika obiektów o zakresie serwera, takich jak widoki systemowe.

Grupy akcji audytu na poziomie bazy danych i akcje audytu zostały opisane w artykule Grupy akcji audytu SQL Server i akcje.

Cel

Wyniki inspekcji są wysyłane do obiektu docelowego, który może być plikiem, dziennikiem zdarzeń zabezpieczeń systemu Windows lub dziennikiem zdarzeń aplikacji systemu Windows. Dzienniki muszą być okresowo przeglądane i archiwizowane, aby upewnić się, że miejsce docelowe ma wystarczającą ilość miejsca do zapisu większej liczby rekordów.

Ważny

Każdy uwierzytelniony użytkownik może odczytywać i zapisywać dane w dzienniku zdarzeń aplikacji systemu Windows. Dziennik zdarzeń aplikacji wymaga niższych uprawnień niż dziennik zdarzeń zabezpieczeń systemu Windows i jest mniej bezpieczny niż dziennik zdarzeń zabezpieczeń systemu Windows.

Zapisywanie w dzienniku zabezpieczeń systemu Windows wymaga dodania konta usługi SQL Server do Generowanie inspekcji zabezpieczeń zasady. Domyślnie system lokalny, usługa lokalna i usługa sieciowa są częścią tych zasad. To ustawienie można skonfigurować za pomocą modułu zasad zabezpieczeń (secpol.msc). Ponadto należy włączyć zasadę zabezpieczeń Inspekcja dostępu do obiektów zarówno dla powodzenia, jak i niepowodzenia. To ustawienie można skonfigurować za pomocą modułu zasad zabezpieczeń (secpol.msc). W systemie Windows Vista lub Windows Server 2008 (i nowszych) można ustawić bardziej szczegółowe zasady wygenerowane z wiersza polecenia przy użyciu programu zasad inspekcji (AuditPol.exe). Aby uzyskać więcej informacji na temat kroków umożliwiających zapisywanie w dzienniku zabezpieczeń systemu Windows, zobacz Zapisywanie zdarzeń inspekcji programu SQL Server w dzienniku zabezpieczeń. Aby uzyskać więcej informacji na temat programu Auditpol.exe, zobacz artykuł z bazy wiedzy 921469, Jak używać zasad grupy do konfigurowania szczegółowej inspekcji zabezpieczeń. Dzienniki zdarzeń systemu Windows są globalne dla systemu operacyjnego Windows. Aby uzyskać więcej informacji na temat dzienników zdarzeń systemu Windows, zobacz Podgląd zdarzeń — omówienie. Jeśli potrzebujesz bardziej precyzyjnych uprawnień dla inspekcji, użyj docelowego pliku binarnego.

Podczas zapisywania informacji inspekcji w pliku, aby zapobiec manipulacji, możesz ograniczyć dostęp do lokalizacji pliku w następujący sposób:

  • Konto usługi programu SQL Server musi mieć zarówno uprawnienie odczyt, jak i zapis.

  • Administratorzy inspekcji zazwyczaj wymagają uprawnień do odczytu i zapisu. Przyjęto założenie, że administratorzy inspekcji są kontami systemu Windows do administrowania plikami inspekcji, takimi jak kopiowanie ich do różnych udziałów, tworzenie kopii zapasowych itd.

  • Czytelnicy inspekcji, autoryzowani do odczytu plików, muszą uzyskać uprawnienia do odczytu.

Nawet gdy silnik bazy danych zapisuje do pliku, inni użytkownicy systemu Windows mogą odczytać plik inspekcji, jeśli mają uprawnienia. Silnik bazy danych nie stosuje blokady wyłącznej uniemożliwiającej operacje odczytu.

Ponieważ aparat bazy danych może uzyskać dostęp do pliku, loginy programu SQL Server, które mają CONTROL SERVER uprawnienia, mogą używać aparatu bazy danych, aby uzyskać dostęp do plików audytu. Aby zarejestrować dowolnego użytkownika, który odczytuje plik inspekcji, zdefiniuj inspekcję na master.sys.fn_get_audit_file. Rejestruje logowania z uprawnieniami CONTROL SERVER , które miały dostęp do pliku inspekcji za pośrednictwem programu SQL Server.

Jeśli administrator inspekcji kopiuje plik do innej lokalizacji (w celu archiwizacji itd.), listy kontroli dostępu (ACL) w nowej lokalizacji powinny zostać zredukowane do następujących uprawnień:

  • Administrator inspekcji — odczyt/zapis
  • Czytnik audytu — odczyt

Zalecamy generowanie raportów inspekcji z oddzielnego wystąpienia programu SQL Server, takiego jak wystąpienie programu SQL Server Express, do którego mają dostęp tylko administratorzy inspekcji lub czytelnicy inspekcji. Korzystając z oddzielnego wystąpienia silnika bazy danych do celów raportowania, można uniemożliwić nieuprawnionym użytkownikom uzyskanie dostępu do zapisów inspekcji.

Możesz zapewnić dodatkową ochronę przed nieautoryzowanym dostępem, szyfrując folder, w którym plik inspekcji jest przechowywany przy użyciu szyfrowania dysków funkcją Windows BitLocker lub systemu plików szyfrowania systemu Windows.

Aby uzyskać więcej informacji na temat rekordów inspekcji zapisywanych w obiekcie docelowym, zobacz rekordy inspekcji programu SQL Server.

Omówienie korzystania z inspekcji programu SQL Server

Do zdefiniowania inspekcji można użyć programu SQL Server Management Studio lub Transact-SQL. Po utworzeniu i włączeniu inspekcji element docelowy odbiera wpisy.

Dzienniki zdarzeń systemu Windows można odczytać przy użyciu narzędzia podglądu zdarzeń w systemie Windows. W przypadku obiektów docelowych plików można użyć podglądu plików dziennika w programie SQL Server Management Studio lub funkcji fn_get_audit_file do odczytu pliku docelowego.

Ogólny proces tworzenia i używania inspekcji jest następujący.

  1. Utwórz audyt i zdefiniuj cel.
  2. Utwórz specyfikację audytu serwera lub specyfikację audytu bazy danych, która jest zmapowana na inspekcję. Włącz specyfikację inspekcji.
  3. Włącz inspekcję.
  4. Odczytywanie zdarzeń inspekcji przy użyciu Podglądu zdarzeń systemu Windows, Podglądu plików dziennika lub fn_get_audit_file funkcji.

Aby uzyskać więcej informacji, zobacz Utwórz audyt serwera i specyfikację audytu serwera oraz Utwórz audyt serwera i specyfikację audytu bazy danych.

Zagadnienia dotyczące

W przypadku awarii podczas inicjowania inspekcji serwer nie uruchamia się. W takim przypadku serwer można uruchomić przy użyciu -f opcji w wierszu polecenia.

Gdy błąd inspekcji powoduje zamknięcie serwera lub jego nieuruchomienie, ponieważ element ON_FAILURE = SHUTDOWN jest określony dla audytu, zdarzenie MSG_AUDIT_FORCED_SHUTDOWN jest zapisywane w dzienniku. Ponieważ zamknięcie następuje przy pierwszym napotkaniu tej opcji, zdarzenie jest rejestrowane tylko raz. To zdarzenie jest zapisywane po komunikacie o błędzie inspekcji powodującym zamknięcie. Administrator może pominąć zamknięcia wywołane inspekcją, uruchamiając program SQL Server w trybie pojedynczego użytkownika przy użyciu flagi -m . Jeśli rozpoczniesz pracę w trybie pojedynczego użytkownika, zmienisz na niższy poziom każdą inspekcję, w przypadku której określono ON_FAILURE = SHUTDOWN do uruchomienia w tej sesji jako ON_FAILURE = CONTINUE. Po uruchomieniu programu SQL Server z flagą -m komunikat jest zapisywany w dzienniku MSG_AUDIT_SHUTDOWN_BYPASSED błędów.

Aby uzyskać więcej informacji na temat opcji uruchamiania usługi, zobacz Opcje uruchamiania usługi aparatu bazy danych.

Dołączanie bazy danych ze zdefiniowaną inspekcją

Dołączanie bazy danych, która ma specyfikację inspekcji i określa identyfikator GUID, który nie istnieje na serwerze, powoduje osieroconą specyfikację inspekcji. Ponieważ inspekcja z pasującym identyfikatorem GUID nie istnieje w wystąpieniu serwera, żadne zdarzenia inspekcji nie są rejestrowane. Aby rozwiązać tę sytuację, użyj polecenia ALTER DATABASE AUDIT SPECIFICATION, aby połączyć porzuconą specyfikację audytu z istniejącym audytem serwera. Możesz też użyć polecenia , CREATE SERVER AUDIT aby utworzyć nową inspekcję serwera z określonym identyfikatorem GUID.

Bazę danych, która ma zdefiniowaną specyfikację inspekcji, można dołączyć do innej wersji programu SQL Server, która nie obsługuje inspekcji programu SQL Server, takiej jak SQL Server Express, ale nie rejestruje zdarzeń inspekcji.

Dublowanie bazy danych i inspekcja programu SQL Server

Baza danych, która ma zdefiniowaną specyfikację inspekcji bazy danych i która używa dublowania bazy danych, obejmuje specyfikację inspekcji bazy danych. Aby poprawnie działało na zmirrowanych wystąpieniach SQL, należy skonfigurować następujące elementy:

  • Serwer lustrzany musi mieć audyt z tym samym identyfikatorem GUID, aby specyfikacja audytu bazy danych mogła zapisywać rekordy audytów. Można to skonfigurować za pomocą polecenia CREATE AUDIT WITH GUID = <guid-from-source-server-audit>.

  • W przypadku obiektów docelowych plików binarnych konto usługi serwera dublowania musi mieć odpowiednie uprawnienia do lokalizacji, w której jest zapisywany dziennik inspekcji.

  • W przypadku obiektów docelowych dziennika zdarzeń systemu Windows zasady zabezpieczeń na komputerze, na którym znajduje się serwer lustrzany, muszą zezwalać na dostęp konta usługi do dziennika zdarzeń zabezpieczeń lub aplikacji.

Administratorzy inspekcji

Członkowie sysadmin stałej roli serwera są identyfikowani jako użytkownik dbo w każdej bazie danych. Aby przeprowadzić inspekcję akcji administratorów, przeprowadź inspekcję akcji użytkownika dbo.

Tworzenie inspekcji i zarządzanie nimi za pomocą Transact-SQL

Aby zaimplementować wszystkie aspekty inspekcji programu SQL Server, można użyć instrukcji DDL, dynamicznych widoków zarządzania i funkcji oraz widoków wykazu.

Instrukcje języka definicji danych

Następujące instrukcje DDL umożliwiają tworzenie, modyfikowanie i usuwanie specyfikacji inspekcji:

Instrukcje DDL Opis
#ALTER AUTHORIZATION Zmienia własność zabezpieczanego obiektu.
ALTER SPECYFIKACJA AUDYTOWANIA BAZY DANYCH Zmienia obiekt specyfikacji inspekcji bazy danych przy użyciu funkcji inspekcji programu SQL Server.
ALTER SERVER AUDIT Zmienia obiekt inspekcji serwera przy użyciu funkcji inspekcji programu SQL Server.
ZMIEŃ SPECYFIKACJĘ AUDYTU SERWERA Zmienia obiekt specyfikacji inspekcji serwera przy użyciu funkcji inspekcji programu SQL Server.
Tworzenie specyfikacji audytu bazy danych Tworzy obiekt specyfikacji inspekcji bazy danych przy użyciu funkcji inspekcji programu SQL Server.
UTWÓRZ AUDYT SERWERA Tworzy obiekt inspekcji serwera przy użyciu inspekcji programu SQL Server.
UTWÓRZ SPECYFIKACJĘ AUDYTU SERWERA Tworzy obiekt specyfikacji inspekcji serwera przy użyciu funkcji inspekcji programu SQL Server.
USUŃ SPECYFIKACJĘ AUDYTU BAZY DANYCH Usuwa obiekt specyfikacji audytu bazy danych przy użyciu funkcji audytu SQL Server.
ZRZUĆ AUDYT SERWERA Usuń obiekt audytu serwera przy użyciu funkcji audytu programu SQL Server.
USUŃ SPECYFIKACJĘ AUDYTU SERWERA Usuwa obiekt specyfikacji audytu serwera przy użyciu funkcji audytu programu SQL Server.

Dynamiczne widoki i funkcje

W poniższej tabeli wymieniono dynamiczne widoki i funkcję, których można użyć do inspekcji programu SQL Server.

Dynamiczne widoki i funkcje Opis
sys.dm_audit_actions Zwraca wiersz dla każdej akcji audytu, którą można zgłosić w dzienniku audytu, oraz każdej grupy akcji audytu, którą można skonfigurować w ramach inspekcji SQL Server.
sys.dm_server_audit_status Zawiera informacje o bieżącym stanie inspekcji.
sys.dm_audit_class_type_map Zwraca tabelę, która mapuje pole class_type w dzienniku audytu na pole class_desc w sys.dm_audit_actions.
fn_get_audit_file Zwraca informacje z pliku inspekcji utworzonego przez inspekcję serwera.

Widoki wykazu

W poniższej tabeli wymieniono widoki wykazu, których można użyć do inspekcji programu SQL Server.

Widoki wykazu Opis
specyfikacje kontroli baz danych sys.database_audit_specifications Zawiera informacje o specyfikacjach audytu bazy danych w audycie programu SQL Server na instancji serwera.
sys.szczegóły_specyfikacji_audytu_bazy_danych Zawiera informacje o specyfikacjach dotyczących audytu bazy danych w ramach audytu programu SQL Server w kontekście wystąpienia serwera dla wszystkich baz danych.
sys.server_audits Zawiera jeden wiersz dla każdej inspekcji programu SQL Server w wystąpieniu serwera.
sys.specyfikacje_audytu_serwera Zawiera informacje o specyfikacji audytu serwera w audycie SQL Server na wystąpieniu serwera.
sys.szczegóły_specyfikacji_audytu_serwera Zawiera informacje o szczegółach specyfikacji audytu serwera (akcje) w audycie SQL Server w wystąpieniu serwera.
sys.server_file_audits Zawiera rozszerzone informacje o typie audytu plików w audycie SQL Server na wystąpieniu serwera.

Uprawnienia

Każda funkcja i polecenie inspekcji programu SQL Server mają indywidualne wymagania dotyczące uprawnień.

Aby utworzyć, zmienić lub usunąć kontrolę serwera lub specyfikację inspekcji serwera, podmioty zabezpieczeń serwera wymagają ALTER ANY SERVER AUDIT lub CONTROL SERVER uprawnień. Aby utworzyć, zmienić lub usunąć specyfikację audytu bazy danych, podmioty bazy danych potrzebują ALTER ANY DATABASE AUDIT uprawnień lub ALTER uprawnień do bazy danych. Ponadto użytkownicy muszą mieć uprawnienia do nawiązania połączenia z bazą danych lub posiadać uprawnienia ALTER ANY SERVER AUDIT lub CONTROL SERVER.

Uprawnienie VIEW ANY DEFINITION zapewnia dostęp do wyświetlania widoków inspekcji na poziomie serwera i VIEW DEFINITION zapewnia dostęp do wyświetlania widoków inspekcji na poziomie bazy danych. Odmowa tych uprawnień znosi możliwość wyświetlania widoków katalogu, nawet jeśli podmiot zabezpieczeń ma uprawnienia ALTER ANY SERVER AUDIT lub ALTER ANY DATABASE AUDIT.

Aby uzyskać więcej informacji na temat udzielania praw i uprawnień, zobacz GRANT.

Ostrożność

Użytkownicy w roli administratora systemu mogą ingerować w dowolny składnik inspekcji, a użytkownicy w roli db_owner mogą ingerować w specyfikacje inspekcji w bazie danych. Inspekcja programu SQL Server sprawdza, czy logowanie, które tworzy lub zmienia specyfikację inspekcji, ma co najmniej ALTER ANY DATABASE AUDIT uprawnienie. Nie jest to jednak weryfikowane podczas dołączania bazy danych. Należy założyć, że wszystkie specyfikacje inspekcji bazy danych są tak wiarygodne, jak osoby pełniące rolę sysadmin lub db_owner.

Artykuł Opis
Właściwości serwera — strona zabezpieczeń W tym artykule wyjaśniono, jak włączyć inspekcję logowania dla programu SQL Server. Rekordy inspekcji są przechowywane w dzienniku aplikacji systemu Windows.
Konfiguracja serwera: tryb inspekcji c2 Wyjaśnia tryb inspekcji zgodności zabezpieczeń C2 w programie SQL Server.
Kategoria Zdarzeń Audytu Bezpieczeństwa (SQL Server Profiler) Objaśnia zdarzenia inspekcji, których można używać w programie SQL Server Profiler. Aby uzyskać więcej informacji, zobacz SQL Server Profiler.
Ślad SQL W tym artykule wyjaśniono, jak można używać funkcji śledzenia SQL z poziomu własnych aplikacji w celu ręcznego tworzenia śladów zamiast używania programu SQL Server Profiler.
wyzwalacze DDL Objaśnienie sposobu używania wyzwalaczy języka DDL (Data Definition Language) do śledzenia zmian w bazach danych.
Microsoft TechNet: SQL Server TechCenter: Zabezpieczenia i Ochrona SQL Server 2005 Zawiera informacje up-to-date dotyczące zabezpieczeń programu SQL Server.