Personifikacja i CLR integracji zabezpieczeń
Gdy kod zarządzany uzyskuje dostęp do zasobów zewnętrznych, SQL Server automatycznie nie personifikować bieżący kontekst wykonanie, pod którym jest wykonywanie rutynowych.Kod EXTERNAL_ACCESS i UNSAFE zespołów jawnie może personifikować bieżącego kontekstu wykonanie.
Ostrzeżenie
Aby uzyskać informacje dotyczące zmiany zachowanie personifikacji, zobacz Dzielenie zmienia funkcje aparatu bazy danych programu SQL Server 2008 R2.
Dostawca dostępu do danych w trakcie udostępnia interfejs programowania aplikacji SqlContext.WindowsIdentity, który może służyć do pobrania tokenu skojarzonego z bieżącego kontekstu zabezpieczeń.Zarządzany kod w EXTERNAL_ACCESS i UNSAFE zestawy można zastosować tę metoda pobierania kontekstu i używania.NET Framework WindowsIdentity.Impersonate metoda personifikować tego kontekstu.Jawnie personifikuje kod użytkownika dotyczą następujące ograniczenia:
Dostęp do danych w trakcie nie jest dozwolone, gdy kod zarządzany jest w stanie personifikowanym.Kod można cofnąć personifikacji, a następnie wywołać w procesie dostępu do danych.Uwaga ta wymaga przechowywania wartości zwracanej ( WindowsImpersonationContext obiektu) oryginału Impersonate metody i telefonicznej Undo to metoda WindowsImpersonationContext.
Ograniczenie to oznacza, że po wystąpieniu dostępu do danych w trakcie go zawsze w kontekście bieżącego kontekstu zabezpieczeń w sesja.Nie można modyfikować jawne personifikacji wewnątrz kod zarządzany.
Dla kod zarządzany przetwarzania asynchronicznego (na przykład za pomocą UNSAFE zespołów tworzenia wątków i uruchamianie kodu asynchronicznie), w trakcie nigdy nie jest dozwolony dostęp do danych.To PRAWDA, czy istnieje personifikacji.
Gdy kod jest wykonywany w kontekście personifikowanym, który różni się od SQL Server, nie może wykonywać wywołania dostępu do danych w trakcie; należy ją cofnąć personifikacji kontekstu przed wprowadzeniem danych w trakcie połączenia dostępu.Gdy dostęp do danych w trakcie jest dokonywane z kod zarządzany, pierwotnym kontekście wykonanie Transact-SQL punkty wejścia do kodu zarządzanego jest zawsze używana do autoryzacja.
Obie EXTERNAL_ACCESS zespołów i UNSAFE zespołów dostęp do zasobów systemu operacyjnego z SQL Server konto, usługa, chyba że ich dobrowolnie personifikować bieżącego kontekstu zabezpieczeń w sposób opisany wcześniej.W związku z tym autorów EXTERNAL_ACCESS zespołów wymagają wyższego poziom zaufania niż SAFE zespołów, które jest określony przez EXTERNAL ACCESS logowania poziom uprawnień.Tylko logowania, którzy są zaufane na uruchomienie kodu w SQL Server konto usługa powinny być przyznawane EXTERNAL ACCESS uprawnienia.