Zosobnění a přihlašovací údaje pro připojení
platí pro:SQL Server
V integraci modulu CLR (Common Language Runtime) SQL Serveru je použití ověřování systému Windows složité, ale je bezpečnější než použití ověřování SQL Serveru. Při použití ověřování systému Windows mějte na paměti následující aspekty.
Ve výchozím nastavení proces SQL Serveru, který se připojuje k Systému Windows, získá kontext zabezpečení účtu služby SYSTÉMU SQL Server Windows. Je ale možné namapovat funkci CLR na identitu proxy serveru, aby její odchozí připojení měla jiný kontext zabezpečení než účet služby Systému Windows.
V některých případech můžete chtít zosobnit volajícího pomocí vlastnosti SqlContext.WindowsIdentity
místo spuštění jako účtu služby. Instance WindowsIdentity
představuje identitu klienta, který vyvolal volající kód, a je k dispozici pouze v případě, že klient použil ověřování systému Windows. Po získání instance WindowsIdentity
můžete zavolat Impersonate
změnit token zabezpečení vlákna a pak otevřít ADO.NET připojení jménem klienta.
Po volání SQLContext.WindowsIdentity.Impersonate
nemáte přístup k místním datům a nemáte přístup k systémovým datům. Pokud chcete znovu získat přístup k datům, musíte volat WindowsImpersonationContext.Undo
.
Následující příklad jazyka C# ukazuje, jak zosobnit volajícího pomocí vlastnosti SqlContext.WindowsIdentity
.
WindowsIdentity clientId = null;
WindowsImpersonationContext impersonatedUser = null;
clientId = SqlContext.WindowsIdentity;
// This outer try block is used to protect from
// exception filter attacks which would prevent
// the inner finally block from executing and
// resetting the impersonation.
try
{
try
{
impersonatedUser = clientId.Impersonate();
if (impersonatedUser != null)
return GetFileDetails(directoryPath);
else return null;
}
finally
{
if (impersonatedUser != null)
impersonatedUser.Undo();
}
}
catch
{
throw;
}
Poznámka
Informace o změnách chování při zosobnění najdete v tématu Zásadní změny funkcí databázového stroje v SQL Serveru 2016.
Navíc pokud jste získali instanci identity systému Windows, nemůžete tuto instanci rozšířit do jiného počítače; Infrastruktura zabezpečení Systému Windows to ve výchozím nastavení omezuje. Existuje však mechanismus označovaný jako delegování, který umožňuje šíření identit systému Windows napříč několika důvěryhodnými počítači. Další informace o delegování najdete v tématu přechod protokolu Kerberos a omezené delegování.