Megszemélyesítés és hitelesítő adatok kapcsolatokhoz

A következőkre vonatkozik:SQL Server

Az SQL Server közös nyelvi futtatókörnyezeti (CLR) integrációjában a Windows-hitelesítés használata összetett, de biztonságosabb, mint az SQL Server-hitelesítés használata. A Windows-hitelesítés használatakor vegye figyelembe az alábbi szempontokat.

Alapértelmezés szerint a Windowshoz csatlakozó SQL Server-folyamat beolvasja az SQL Server Windows-szolgáltatásfiókjának biztonsági környezetét. A CLR-függvényeket azonban le lehet képezni proxyidentitásra, így a kimenő kapcsolatok más biztonsági környezettel rendelkeznek, mint a Windows-szolgáltatásfiók.

Bizonyos esetekben előfordulhat, hogy a szolgáltatásfiók helyett a SqlContext.WindowsIdentity tulajdonság használatával szeretné megszemélyesíteni a hívót. A WindowsIdentity példány a hívó kódot meghívó ügyfél identitását jelöli, és csak akkor érhető el, ha az ügyfél Windows-hitelesítést használt. Miután beszerezte a WindowsIdentity-példányt, meghívhatja Impersonate a szál biztonsági jogkivonatának módosításához, majd megnyithatja ADO.NET kapcsolatokat az ügyfél nevében.

A SQLContext.WindowsIdentity.Impersonatehívása után nem férhet hozzá a helyi adatokhoz, és nem férhet hozzá a rendszeradatokhoz. Az adatok újbóli eléréséhez fel kell hívnia WindowsImpersonationContext.Undo.

Az alábbi C#-példa bemutatja, hogyan lehet megszemélyesíteni a hívót a SqlContext.WindowsIdentity tulajdonság használatával.

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;
}

Jegyzet

A megszemélyesítés viselkedésének változásairól az SQL Server 2016adatbázismotor-funkcióinak kompatibilitástörő változásairól olvashat.

Továbbá, ha beszerezte a Windows-identitáspéldányt, alapértelmezés szerint nem propagálja azt egy másik számítógépre; Ezt a Windows biztonsági infrastruktúra alapértelmezés szerint korlátozza. Létezik azonban egy delegálási nevű mechanizmus, amely lehetővé teszi a Windows-identitások propagálását több megbízható számítógépen. További információ a delegálásról: Kerberos Protokollváltás és Korlátozott delegálás.

  • SqlContext objektum