Aracılığıyla paylaş


Kimliğe bürünme ve bağlantılar için kimlik bilgileri

De SQL Serverortak dil çalışma zamanı (clr) tümleştirme Windows kimlik doğrulaması kullanarak, karmaşık, ama daha güvenli SQL Server kimlik doğrulaması kullanarak daha. Windows kimlik doğrulaması kullanırken, aşağıdaki konuları göz önünde bulundurun.

Varsayılan olarak, bir SQL Server işlemi Windows üzerinden bağlanan Windows SQL Server hizmet hesabının güvenlik bağlamını devralır. Ancak böylece, giden bağlantılar farklı güvenlik içeriği Windows hizmet hesabını daha bir clr ilevi bir proxy kimlik için eşlemek daha mümkündür.

Bazı durumlarda kullanarak arayan taklit etmek isterseniz SqlContext.WindowsIdentityözelliği hizmeti hesabı olarak çalışan yerine. WindowsIdentityÖrneği, çağıran kodun çağrılan ve istemci Windows kimlik doğrulaması kullanıldığında kullanılabilir istemci kimliğini gösterir. Sen aldıktan sonra WindowsIdentityörneği, sen-ebilmek seslenmek Impersonateiş parçacığının güvenlik belirteci değiştirmek ve ado açın.AĞ bağlantıları istemci adına.

Aramadan sonra SQLContext.WindowsIdentity.Impersonate, yerel verilere erişemezsiniz ve sistem verilerine erişemiyor. Veri erişim tekrar aramak zorunda WindowsImpersonationContext.Undo.

Aşağıdaki örnek kullanarak arayan taklit gösterilmiştir SqlContext.WindowsIdentityözellik.

Visual C#

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

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

[!NOT]

Kimliğe bürünme davranış değişiklikleri hakkında daha fazla bilgi için bkz: En son değişiklikleri SQL Server 2012 veritabanı altyapısı özellikleri.

Ayrıca, eğer elde ettiğiniz MicrosoftWindows kimlik örneği, varsayılan olarak bu örneği başka bir bilgisayara; yay can't Windows Güvenlik alt yapısı, varsayılan olarak kısıtlar. Orada, ancak "temsilci" adı verilen bir mekanizma birden fazla güvenilen bilgisayarda Windows kimlik yayılmasını sağlayan. TechNet makalesine, temsilci seçme hakkında daha fazla bilgi edinebilirsiniz "Kerberos protokolü geçiş ve kısıtlı temsilci".

Ayrıca bkz.

Kavramlar

SqlContext nesne