Sdílet prostřednictvím


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.Impersonatenemá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í.