Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
SQL Server používá identifikátory zabezpečení pro jednotlivé služby (SID), označované také jako instanční objekty zabezpečení, aby bylo možné udělit oprávnění přímo konkrétní službě. Tuto metodu používá SQL Server k udělení oprávnění ke službám modulu a agenta (NT SERVICE\MSSQL$<InstanceName> a NT SERVICE\SQLAGENT$<InstanceName> v uvedeném pořadí). Pomocí této metody mohou tyto služby přistupovat k databázovému stroji pouze v případě, že jsou služby spuštěné. Další informace najdete v tématu KB2620201 (odkaz na archiv).
Stejnou metodu lze použít při udělování oprávnění jiným službám. Použití SID služby eliminuje režii při správě a údržbě účtů služeb a poskytuje přesnější a podrobnější kontrolu nad oprávněními udělenými systémovým prostředkům.
Příklady služeb, ve kterých je možné použít SID služby, jsou:
- System Center Operations Manager Health Service (NT SERVICE\HealthService)
- Služba Windows Server Failover Clustering (WSFC) (NT SERVICE\ClusSvc)
Některé služby nemají ve výchozím nastavení identifikátor SID služby. Identifikátor SID služby musí být vytvořen pomocí SC.exe. Tuto metodu přijali správci microsoft System Center Operations Manageru k udělení oprávnění ke službě HealthService v rámci SQL Serveru.
Po vytvoření a potvrzení identifikátoru SID služby musí být uděleno oprávnění v rámci SQL Serveru. Udělení oprávnění se provádí vytvořením přihlášení systému Windows pomocí aplikace SQL Server Management Studio (SSMS) nebo dotazu Transact-SQL. Po vytvoření přihlášení může být udělena oprávnění, přidána do rolí a mapována na databáze stejně jako jakékoli jiné přihlášení.
Návod
Pokud dojde k chybě Login failed for user 'NT AUTHORITY\SYSTEM' , ověřte, že identifikátor SID služby existuje pro požadovanou službu, bylo v SQL Serveru vytvořeno přihlášení identifikátoru SID služby a příslušná oprávnění byla udělena identifikátoru SID služby na SQL Serveru.
Zabezpečení
Eliminace účtů služeb
Tradičně se účty služeb používaly k tomu, aby se služby mohly přihlásit k SQL Serveru. Účty služeb přidávají další vrstvu složitosti správy, protože je nutné udržovat a pravidelně aktualizovat heslo účtu služby. Přihlašovací údaje účtu služby může navíc použít jednotlivec, který se pokouší maskovat aktivity při provádění akcí v instanci.
Podrobná oprávnění k systémovým účtům
Systémové účty mají historicky udělená oprávnění vytvořením přihlášení pro účty LocalSystem (NT AUTHORITY\SYSTEM v en-us) nebo NetworkService (NT AUTHORITY\NETWORK SERVICE v en-us) a udělením těchto přihlašovacích oprávnění. Tato metoda uděluje jakémukoli procesu nebo službě oprávnění k SQL, které běží jako systémový účet.
Použití identifikátoru SID služby umožňuje udělit oprávnění konkrétní službě. Služba má přístup pouze k prostředkům, ke kterým byla udělena oprávnění při spuštění. Například pokud je HealthService spuštěna jako LocalSystem a je jí udělena View Server State, účet LocalSystem bude mít oprávnění pouze na View Server State, když běží v kontextu HealthService. Pokud se jakýkoli jiný proces pokusí o přístup ke stavu serveru SQL jako LocalSystem, bude odepřen přístup.
Examples
A. Vytvoření identifikátoru SID služby
Následující příkaz PowerShell vytvoří Service SID ve zdravotní službě System Center Operations Manager.
sc.exe --% sidtype "HealthService" unrestricted
Důležité
--% Řekne PowerShellu, aby přestal parsovat zbytek příkazu. To je užitečné při použití starších příkazů a aplikací.
B. Dotazování identifikátoru SID služby
Pokud chcete zkontrolovat identifikátor SID služby nebo zajistit, aby identifikátor SID služby existoval, spusťte v PowerShellu následující příkaz.
sc.exe --% qsidtype "HealthService"
Důležité
--% Řekne PowerShellu, aby přestal parsovat zbytek příkazu. To je užitečné při použití starších příkazů a aplikací.
C. Přidání nově vytvořeného identifikátoru SID služby jako přihlášení
Následující příklad vytvoří přihlášení pro službu stavu nástroje System Center Operations Manager pomocí jazyka T-SQL.
CREATE LOGIN [NT SERVICE\HealthService] FROM WINDOWS
GO
D. Přidejte existující SID služby jako přihlašovací jméno
Následující příklad vytvoří přihlášení pro clusterovou službu pomocí T-SQL. Udělení oprávnění ke službě clusteru přímo eliminuje nutnost udělit účtu SYSTEM nadměrná oprávnění.
CREATE LOGIN [NT SERVICE\ClusSvc] FROM WINDOWS
GO
E. Udělit oprávnění pro identifikátor SID služby
Udělte oprávnění vyžadovaná ke správě skupin dostupnosti ke službě clusteru.
GRANT ALTER ANY AVAILABILITY GROUP TO [NT SERVICE\ClusSvc]
GO
GRANT CONNECT SQL TO [NT SERVICE\ClusSvc]
GO
GRANT VIEW SERVER STATE TO [NT SERVICE\ClusSvc]
GO
Poznámka:
Odebrání SID přihlášení služby nebo jejich odebrání z role serveru sysadmin může způsobit problémy různým součástem SQL Serveru, které se připojují k databázovému stroji SQL Serveru. Mezi problémy patří:
- Agent SQL Serveru se nemůže spustit nebo připojit ke službě SQL Serveru
- Instalační programy systému SQL Server narazí na problém uvedený v následujícím článku znalostní báze Microsoft Knowledge Base: https://mskb.pkisolutions.com/kb/955813
Pro výchozí instanci SQL Serveru můžete tuto situaci opravit přidáním identifikátoru SID služby pomocí následujících příkazů Transact-SQL:
CREATE LOGIN [NT SERVICE\MSSQLSERVER] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]
ALTER ROLE sysadmin ADD MEMBER [NT SERVICE\MSSQLSERVER]
CREATE LOGIN [NT SERVICE\SQLSERVERAGENT] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]
ALTER ROLE sysadmin ADD MEMBER [NT SERVICE\SQLSERVERAGENT]
Pro pojmenovanou instanci SQL Serveru použijte následující příkazy Transact-SQL:
CREATE LOGIN [NT SERVICE\MSSQL$SQL2019] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]
ALTER ROLE sysadmin ADD MEMBER [NT SERVICE\MSSQL$SQL2019]
CREATE LOGIN [NT SERVICE\SQLAgent$SQL2019] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]
ALTER ROLE sysadmin ADD MEMBER [NT SERVICE\SQLAgent$SQL2019]
V tomto příkladu SQL2019 je název instance SQL Serveru.
Další kroky
Další informace o struktuře SID služby najdete v tématu struktura SERVICE_SID_INFO.
Přečtěte si o dalších možnostech, které jsou k dispozici při vytváření přihlášení.
Pokud chcete použít zabezpečení na základě rolí s identifikátory SID služby, přečtěte si informace o vytváření rolí na SQL Serveru.
Přečtěte si o různých způsobech udělení oprávnění identifikátorům SID služby na SQL Serveru.
Další informace o konfiguraci účtů služeb pro SQL Server najdete v tématu Konfigurace účtů a oprávnění služeb systému Windows.