Jak povolit účtů není členem "xp_cmdshell" provedení rozšířené uložené procedury SQL Server 2000

Souhrn

Tento článek popisuje, jak nakonfigurovat účet serveru proxy Agent serveru SQL Server Microsoft Windows úrovně použitelné pro přihlášení SQL, které nejsou členy
pevné role serveru sysadmin . Tento článek také obsahuje odkazy na další informace pro řešení potíží, které mohou nastat při pokusu o vytvoření účtu serveru proxy.

ÚVOD

Xp_cmdshell Rozšířená uložená procedura spustí prostředí Windows příkazového řádku z v rámci Microsoft SQL Server 2000. Při spuštění xp_cmdshell Rozšířená uložená procedura členem role sysadmin dlouhodobého serveru spustí proces příkazového prostředí systému Windows pomocí kontextu zabezpečení účtu služby systému Windows, serveru SQL Server. Například pokud je SQL Server spuštěn pod přihlášení systému Windows, který má oprávnění správce v počítači, uživatel, který otevře příkazový řádek s xp_cmdshell Rozšířená uložená procedura obdrží přístup k systému Windows jako místní správce. Standardně je uděleno oprávnění ke spuštění xp_cmdshell Rozšířená uložená procedura pouze pro členy role dlouhodobého serveru sysadmin . Toto oprávnění umožňuje odradit eskalace práv.

Pokud chcete spustit nové procesy systému Windows se sníženou úrovní práv, můžete nakonfigurovat účet systému Windows s odpovídající úroveň oprávnění účtu serveru proxy Agent serveru SQL Server.

Další informace

Při pokusu o spuštění xp_cmdshell Rozšířená uložená procedura z přihlášení serveru SQL Server, který není členem role sysadmin serveru a účtu serveru proxy Agent serveru SQL Server nebyl správně nastaven, může se zobrazit chybové zprávy podobné následujícím:
Msg 50001, úroveň 1, stát 50001
xpsql.cpp: Chyba 997 z GetProxyAccount na řádku 499
Msg 50001, úroveň 1, stát 50001
xpsql.cpp: Chyba 317 z GetProxyAccount na řádku 499
Msg 50001, úroveň 1, stát 50001

xpsql.cpp: došlo k chybě 0 z GetProxyAccount na řádku 499
Msg 50001, úroveň 1, stát 50001
xpsql.cpp: Chyba 87 z GetProxyAccount na řádku 499
Používáte-li umožnit uživatelům bez sysadmin spustit xp_cmdshell Rozšířená uložená procedura v SQL Server 2000, je nutné nakonfigurovat účet serveru proxy a serveru SQL Server spouštěcí účet být členem místní skupiny Administrators. Jakmile SQL Server spustí úlohy nebo příkazů pro uživatele, kteří nejsou členy sysadmin pevné role serveru, pomocí účtu serveru proxy Agent serveru SQL a xp_cmdshell Rozšířená uložená procedura. Windows bezpečnostních pověření pro účet serveru proxy jsou uloženy v databázi tajemství místního úřadu zabezpečení (LSA). Tyto informace lze přístup pouze správci systému Windows. Proto pokud spouštěcí účet serveru SQL Server není členem místní skupiny Administrators, uživatele nelze uložit nebo načíst pověření zabezpečení systému Windows se přihlásit jako účet serveru proxy a xp_cmdshell Rozšířená uložená procedura se nezdaří. S cílem umožnit uživatelům bez sysadmin spustit xp_cmdshell Rozšířená uložená procedura, spouštěcí účet serveru SQL Server musí být členem místní skupiny Administrators.

Chcete-li nakonfigurovat server proxy účet pro přihlášení serveru SQL Server, které nejsou členy sysadmin pevné role serveru, použijte jednu z následujících metod.

Metoda 1: Použití SQL Server Enterprise Manager

Nakonfigurujte účet systému Windows

Chcete-li nastavit účet systému Windows Chcete-li povolit uživatelům bez sysadmin spustit xp_cmdshell Rozšířená uložená procedura, postupujte takto:
  1. Spustíte SQL Server Enterprise Manager.
  2. V programu SQL Server Enterprise Manager rozbalte položku Microsoft SQL Servera potom rozbalte položku Skupina serverů SQL.
  3. Rozbalte instanci serveru SQL Server, který chcete nastavit pro účet serveru proxy.
  4. Rozbalte položku Správa, klepněte pravým tlačítkem myši SQL Server Agenta klepněte na příkaz Vlastnosti.
  5. V dialogovém okně Vlastnosti agenta serveru SQL klepněte na kartu Systémové úlohy .
  6. Ve skupinovém rámečku není členem úlohy krok proxy účetklepněte na tlačítko zrušte zaškrtnutí políčka pouze uživatelé s oprávněními SysAdmin můžete provést kroky CmdExec a ActiveScripting úlohy .
  7. V dialogovém okně SQL Server Agent serveru proxy účetzadejte název účtu systému Windows v poli uživatelské jméno.
  8. Do pole heslo zadejte heslo systému Windows.
  9. Do pole doména zadejte název domény, který má účet systému Windows je členem a poté klepněte na tlačítko OK .

Přidat přihlašovací účet serveru SQL Server

Chcete-li přidat přihlášení serveru SQL Server účet, který chcete udělit oprávnění ke spuštění xp_cmdshell Rozšířená uložená procedura, postupujte takto:
  1. Rozbalte v SQL Server organizace Manager
    Zabezpečení.
  2. V podokně přihlášení klepněte pravým tlačítkem myši SQL Server přihlašovací účet, který chcete udělit oprávnění a klepněte na tlačítko
    Vlastnosti.

    Poznámka: Pokud účet není již přidány, můžete vytvořit proxy účet systému Windows jako účet pro přihlášení.
  3. V dialogovém okně Vlastnosti přihlášení serveru SQL klepněte na kartu Database Access .
  4. V seznamu Zadejte databázi, kterou může získat přístup tomuto přihlášení klepnutím zaškrtněte políčko Povolit pro hlavní databáze a klepněte na tlačítko OK.
  5. Rozbalte databází, rozbalte položku
    předlohya poté klepněte na tlačítko Rozšířit uložené procedury.
  6. Vyhledejte a klepněte pravým tlačítkem myši
    xp_cmdshell rozšířené uložené procedury a potom klepněte na tlačítko
    Vlastnosti.
  7. V dialogovém okně Rozšířené vlastnosti uložené procedury klepněte na tlačítko oprávnění.
  8. Zaškrtněte políčko EXEC pro spuštění přihlašovací účet, který chcete udělit oprávnění k serveru SQL Server a potom klepněte na tlačítko OK .

Metoda 2: Spuštění skriptu jazyka Transact-SQL

Spusťte následující skript jazyka Transact-SQL chcete-li povolit účet systému Windows ke spuštění xp_cmdshell Rozšířená uložená procedura:
-- Set database to master.USE master
GO

-- Add a valid Windows account as proxy account.
EXECUTE xp_sqlagent_proxy_account N'SET'
, N'<DomainName>'
, N'<WindowsAccount>'
, N'<WindowsPassword>'
GO
-- Get the proxy account to determine whether it is set up correctly.
EXECUTE xp_sqlagent_proxy_account N'GET'
GO

-- Enable non-system administrators to run the job and to execute xp_cmdshell.
EXECUTE msdb..sp_set_sqlagent_properties @sysadmin_only = 0
GO

Poznámka: V tomto skriptu je < Název_domény > účet systému Windows je členem domény.
< WindowsAccount > je název účtu systému Windows.
< WindowsPassword > je heslo účtu systému Windows.

Chcete-li přidat přihlášení serveru SQL Server účet, který chcete udělit oprávnění ke spuštění xp_cmdshell Rozšířená uložená procedura, spusťte následující skript jazyka Transact-SQL:
USE masterGO

-- Grant database access to the SQL Server login account that you want to provide access.
EXEC sp_grantdbaccess '<SQLLogin>'
GO

-- Grant execute permission on xp_cmdshell to the SQL Server login account.
GRANT exec ON xp_cmdshell TO <SQLLogin>
GO
Poznámka: V tomto skriptu < SQLLogin > je přihlášení serveru SQL Server, který chcete udělit oprávnění ke spuštění xp_cmdshell Rozšířená uložená procedura.

Poznámka: Účet serveru proxy je účet systému Windows, v jehož kontextu zabezpečení úlohy Agent serveru SQL Server nebo příkazy příkazového řádku spustit. Při nastavování účtu systému Windows pro SQL Server Agent proxy účet musí obsahovat účet systému Windows "Přihlásit jako dávkovou úlohu" uživatelské právo na úrovni.

Odkazy

Další informace o xp_cmdshell rozšířené uložené procedury naleznete v tématu "Reference jazyka Transact-SQL" v SQL Server Books Online.

Další informace o účtu serveru proxy Agent serveru SQL Server naleznete na následujících webech Microsoft Developer Network (MSDN):Další informace o tom, jak nastavit příslušná oprávnění proxy účet klepněte na následující číslo článku databáze Microsoft Knowledge Base:

283811 jak změnit účet služby SQL Server nebo SQL Server Agent bez použití SQL Enterprise Manager serveru SQL Server 2000 nebo SQL Server Správce konfigurace, SQL Server 2005

Vlastnosti

ID článku: 890775 - Poslední kontrola: 16. 1. 2017 - Revize: 1

Váš názor