Udostępnij za pośrednictwem


Podszywaniu się i CLR Integracja z zabezpieczeniami

Jeśli kod zarządzany uzyskuje dostęp do zasobów zewnętrznych SQL Server nie automatycznego personifikować bieżącego kontekstu wykonania, na których jest wykonywana procedura. Kod w EXTERNAL_ACCESS i UNSAFE zestawy jawnie może personifikować kontekst wykonania.

Uwaga

W SQL Server 2008, brak zachowanie zmiany w personifikacji. Aby uzyskać więcej informacji zobaczBreaking Changes to Database Engine Features in SQL Server 2008.

Dostawca danych w procesie dostępu udostępnia interfejs programowania aplikacji SqlContext.WindowsIdentity, który może służyć do pobrania tokenu skojarzonego z bieżącego kontekstu zabezpieczeń. Kod zarządzany w EXTERNAL_ACCESS i UNSAFE zestawy można użyć tej metody można uzyskać kontekstu i używać systemu .NET Framework WindowsIdentity.Impersonate Metoda podszycia się pod tym kontekście. Kiedy jawnie personifikuje kod użytkownika, obowiązują następujące ograniczenia:

  • Dostęp do danych w procesie nie jest dopuszczalna, gdy kod zarządzany jest w stanie personifikowanego.Kod może cofnąć personifikacji, a następnie wywołać ją w procesie dostępu do danych.Należy zauważyć, że wymaga przechowywania wartość zwracana ( WindowsImpersonationContext obiekt) oryginału Impersonate Metoda i telefonicznej Undo Ta metoda WindowsImpersonationContext.

    Ograniczenie to oznacza, że po wystąpieniu dostępu do danych w procesie ją zawsze w kontekście bieżącego kontekstu zabezpieczeń obowiązują dla sesja.Nie można modyfikować jawne personifikacji wewnątrz kod zarządzany.

  • Dla kod zarządzany wykonywane asynchronicznie (na przykład za pomocą UNSAFE zestawy tworzenia wątków i uruchamianie kodu w sposób asynchroniczny), w procesie nigdy nie jest dozwolony dostęp do danych. Jest to prawdą niezależnie od tego, czy istnieje personifikacji.

Podczas wykonywania kodu w kontekście personifikowanego innego niż SQL Server, to nie można wykonać wywołania dostępu do danych w procesie, należy ją cofnąć personifikacji kontekstu przed wprowadzeniem danych w procesie połączeń dostępu. Utworzenia dostępu do danych w procesie z zarządzany kod oryginalnego kontekście wykonanie Transact-SQL punkt wejścia w kod zarządzany jest zawsze używana do autoryzacja.

Oba EXTERNAL_ACCESS zespoły i UNSAFE zespoły uzyskują dostęp do zasobów systemu operacyjnego z SQL Server Usługa konta, o ile ich dobrowolnie personifikować bieżący kontekst zabezpieczeń, jak to zostało wcześniej opisane. W związku z tym autorów EXTERNAL_ACCESS zestawy wymagają wyższego poziom zaufania od cen SAFE zestawy, które jest określone przez EXTERNAL ACCESS uprawnienia poziom logowania. Tylko identyfikatory logowania, które są uważane za zaufane na uruchomienie kodu w obszarze SQL Server konto usługa powinno zostać przyznane EXTERNAL ACCESS uprawnienie.