Zostało to wyłączone z pudełka, począwszy od SQL Server 2005, kiedy wprowadzono Narzędzie do konfiguracji obszaru powierzchni
, aby domyślnie zwiększyć bezpieczeństwo programu SQL Server. To narzędzie zostało wycofane, ale nadal możesz kontrolować zachowanie za pomocą sp_configure
. Przykład jest pokazany w MSDN
:
-- To allow advanced options to be changed.
EXEC sp_configure 'show advanced options', 1
GO
-- To update the currently configured value for advanced options.
RECONFIGURE
GO
-- To enable the feature.
EXEC sp_configure 'xp_cmdshell', 1
GO
-- To update the currently configured value for this feature.
RECONFIGURE
GO
(Ja także blogowałem o tym wiele lat temu .)
Powodem jest to, że jest to potencjalna luka w zabezpieczeniach. Jeśli zezwolisz SQL Server na wykonanie xp_cmdshell
, to teoretycznie mogą wysłać dowolne tam polecenie systemu operacyjnego, omijając wszelkie zabezpieczenia, o których myślałeś, że masz. Jest to szczególnie problematyczne, gdy konto usługi SQL Server i/lub konto proxy zostały podniesione do poziomu sysadmin lub innych, ponieważ jest to łatwiejsze niż jawne definiowanie tylko dokładnie tych czynności, które powinny być w stanie zrobić.
Zamiast włączać i wyłączać go w celu obsługi interakcji z wierszem poleceń, popularnym sposobem ujawnienia funkcji systemu operacyjnego przy zachowaniu pewnej kontroli nad bezpieczeństwem jest zaimplementowanie potrzebnych funkcji na poziomie systemu operacyjnego za pomocą SQL-CLR. Oto dobry punkt wyjścia do uzyskania dostępu do system plików z CLR (jednak jeśli rozejrzysz się, znajdziesz znacznie bardziej nowoczesne i wyczerpujące podejścia).