Inspekcja programu SQL Server (aparat bazy danych)
Dotyczy:programu SQL Server
Azure 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. Wszystkie wersje obsługują inspekcje na poziomie bazy danych począwszy od programu SQL Server 2016 (13.x) SP1. Wcześniej inspekcja na poziomie bazy danych była ograniczona do wersji Enterprise, Developer i Evaluation. Aby uzyskać więcej informacji, zobacz funkcje obsługiwane przez wersje programu SQL Server 2016.
Notatka
Ten temat dotyczy programu SQL Server. W przypadku usługi SQL Database zobacz Wprowadzenie do inspekcji bazy danych SQL.
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 Zdarzenia rozszerzone.
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 akcji audytu na poziomie serwera opisano w artykule Grupy akcji audytu SQL Server i akcje.
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 audytowych na poziomie bazy danych i akcje audytowe zostały opisane w artykule Grupy akcji audytowych programu 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ą przystawki zasad zabezpieczeń (secpol.msc). W systemie Windows Vista lub Windows Server 2008 (i nowszych) można ustawić bardziej szczegółową aplikację wygenerowaną 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ż silnik bazy danych może uzyskać dostęp do pliku, loginy programu SQL Server z uprawnieniem CONTROL SERVER mogą uzyskiwać dostęp do plików inspekcji za pomocą silnika bazy danych. Aby zarejestrować dowolnego użytkownika, który odczytuje plik inspekcji, zdefiniuj inspekcję na master.sys.fn_get_audit_file
. Rejestruje logowania z uprawnieniem 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 obiekt docelowy otrzyma 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.
Utwórz audyt i zdefiniuj cel.
Utwórz specyfikację audytu serwera lub specyfikację audytu bazy danych, która jest zmapowana na inspekcję. Włącz specyfikację inspekcji.
Włącz inspekcję.
Odczytywanie zdarzeń audytu przy użyciu podglądu zdarzeń systemu Windows , podglądu plików dziennika lub funkcji fn_get_audit_file.
Aby uzyskać więcej informacji, zobacz Tworzenie specyfikacji inspekcji serwera i inspekcji serwera i Tworzenie specyfikacji inspekcji serwera i inspekcji bazy danych.
Zagadnienia dotyczące
W przypadku awarii podczas inicjowania inspekcji serwer nie zostanie uruchomiony. W takim przypadku można uruchomić serwer przy użyciu opcji -f w wierszu polecenia.
Gdy błąd inspekcji powoduje zamknięcie serwera lub jego nieuruchomienie się, ponieważ dla inspekcji określono ON_FAILURE=SHUTDOWN, 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 każdą inspekcję, w której określono ON_FAILURE=SHUTDOWN, aby uruchamiała się w tej sesji jako ON_FAILURE=CONTINUE. Po uruchomieniu programu SQL Server przy użyciu flagi -m komunikat MSG_AUDIT_SHUTDOWN_BYPASSED jest zapisywany w dzienniku 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, spowoduje oddzielone specyfikacji 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ć osieroconą specyfikację inspekcji 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 będzie rejestrować zdarzeń inspekcji.
Dublowanie baz danych i inspekcja programu SQL Server
Baza danych, która ma zdefiniowaną specyfikację inspekcji bazy danych i która używa dublowania bazy danych, będzie zawierać 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 UTWÓRZ AUDYT Z GUID =<GUID z źródłowego audytu serwera>.
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 DATABASE AUDIT SPECIFICATION | 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. |
CREATE DATABASE AUDIT SPECIFICATION | 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. |
DROP DATABASE AUDIT SPECIFICATION | 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 katalogu
W poniższej tabeli wymieniono widoki wykazu, których można użyć do inspekcji programu SQL Server.
Widoki wykazu | Opis |
---|---|
sys.database_audit_specifications | Zawiera informacje o specyfikacjach audytu bazy danych w audycie programu SQL Server na instancji serwera. |
sys.database_audit_specification_details | 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.server_audit_specifications | Zawiera informacje o specyfikacji audytu serwera w audycie SQL Server na wystąpieniu serwera. |
sys.server_audit_specifications_details | 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ąć inspekcję serwera lub specyfikację inspekcji serwera, uprawnieni użytkownicy serwera wymagają uprawnienia ALTER ANY SERVER AUDIT lub CONTROL SERVER. Aby utworzyć, zmienić lub usunąć specyfikację inspekcji bazy danych, użytkownicy bazy danych muszą posiadać uprawnienia ALTER ANY DATABASE AUDIT lub ALTER lub CONTROL w bazie danych. Ponadto główne podmioty muszą mieć uprawnienia do nawiązywania połączenia z bazą danych, lub uprawnienia ALTER ANY SERVER AUDIT lub CONTROL SERVER.
Uprawnienie WYŚWIETL DOWOLNĄ DEFINICJĘ zapewnia dostęp do wyświetlania widoków audytowych na poziomie serwera, a uprawnienie VIEW DEFINITION zapewnia dostęp do wyświetlania widoków audytowych na poziomie bazy danych. Odmowa tych uprawnień uniemożliwia wyświetlanie 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 (Transact-SQL).
Ostrożność
Osoby w roli administratora systemu mogą manipulować dowolnym elementem audytu, a osoby w roli db_owner mogą manipulować specyfikacjami audytu w bazie danych. Inspekcja programu SQL Server sprawdzi, czy logowanie, które tworzy lub zmienia specyfikację inspekcji, ma co najmniej uprawnienie ALTER ANY DATABASE AUDIT. Nie jest to jednak weryfikowane podczas dołączania bazy danych. Należy przyjąć, że wszystkie specyfikacje inspekcji bazy danych są tak wiarygodne, jak osoby należące do ról sysadmin lub db_owner.
Powiązane zadania
Tworzenie inspekcji serwera i specyfikacji inspekcji serwera
tworzenie specyfikacji inspekcji serwera i inspekcji bazy danych
Wyświetlanie dziennika audytu programu SQL Server
zapisywanie zdarzeń inspekcji programu SQL Server w dzienniku zabezpieczeń
Artykuły ściśle związane z inspekcją
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.
opcja konfiguracji serwera w trybie 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.