Udostępnij za pośrednictwem


Atrybuty ochrony hosta i programowanie integracji środowiska CLR

Dotyczy:programu SQL Server

Środowisko uruchomieniowe języka wspólnego (CLR) udostępnia mechanizm dodawania adnotacji do interfejsów programowania aplikacji zarządzanych (API), które są częścią programu .NET Framework. Te atrybuty mogą być interesujące dla hosta środowiska CLR, takiego jak SQL Server. Przykłady takich atrybutów ochrony hosta (HPA) obejmują:

  • SharedState, który wskazuje, czy interfejs API uwidacznia możliwość tworzenia stanu udostępnionego lub zarządzania nim (na przykład pól klas statycznych).

  • Synchronization, który wskazuje, czy interfejs API uwidacznia możliwość przeprowadzania synchronizacji między wątkami.

  • ExternalProcessMgmt, który wskazuje, czy interfejs API uwidacznia sposób kontrolowania procesu hosta.

Biorąc pod uwagę te atrybuty, program SQL Server określa listę hpas, które są niedozwolone w środowisku hostowanym za pośrednictwem zabezpieczeń dostępu kodu (CAS). Wymagania cas są określane przez jeden z trzech zestawów uprawnień programu SQL Server: SAFE, EXTERNAL_ACCESSlub UNSAFE. Jeden z tych trzech poziomów zabezpieczeń jest określony, gdy zestaw jest zarejestrowany na serwerze przy użyciu instrukcji CREATE ASSEMBLY. Kod wykonywany w zestawach uprawnień SAFE lub EXTERNAL_ACCESS musi unikać niektórych typów lub elementów członkowskich, które mają zastosowany atrybut System.Security.Permissions.HostProtectionAttribute. Aby uzyskać więcej informacji, zobacz Create an assembly and CLR integration programming model restrictions (Tworzenie zestawu) i ograniczenia modelu programowania integracji środowiska CLR.

HostProtectionAttribute nie jest uprawnieniem zabezpieczeń tak samo jak sposobem na poprawę niezawodności, w tym, że identyfikuje określone konstrukcje kodu, typy lub metody, które host może nie zezwalać. Użycie HostProtectionAttribute wymusza model programowania, który pomaga chronić stabilność hosta.

Atrybuty ochrony hosta

HpAs identyfikują typy lub elementy członkowskie, które nie pasują do modelu programowania hosta i reprezentują następujące rosnące poziomy zagrożenia niezawodności:

  • Są łagodne.
  • Może prowadzić do destabilizacji kodu użytkownika zarządzanego przez serwer.
  • Może prowadzić do destabilizacji samego procesu serwera.

Program SQL Server nie zezwala na użycie typu lub elementu członkowskiego, który ma HostProtectionAttribute, który określa wyliczenie System.Security.Permissions.HostProtectionResource z wartością ExternalProcessMgmt, ExternalThreading, MayLeakOnAbort, SecurityInfrastructure, SelfAffectingProcessMgmt, SelfAffectingThreading, SharedState, Synchronizationlub UI. Uniemożliwia to wywoływanie elementów członkowskich, które umożliwiają udostępnianie stanu, wykonywanie synchronizacji, może spowodować wyciek zasobów po zakończeniu lub wpłynąć na integralność procesu programu SQL Server.

Niedozwolone typy i elementy członkowskie

Poniższe artykuły identyfikują typy i elementy członkowskie, których HostProtectionResource wartości programu SQL Server nie zezwalają.

Listy w tych artykułach zostały wygenerowane na podstawie obsługiwanych zestawów. Aby uzyskać więcej informacji, zobacz Obsługiwane biblioteki programu .NET Framework.

W tej sekcji

Artykuł Opis
niedozwolone typy i elementy członkowskie w Microsoft.VisualBasic.dll Wyświetla listę typów i elementów członkowskich w Microsoft.VisualBasic.dll, których wartości HPA są niedozwolone.
niedozwolone typy i elementy członkowskie w mscorlib.dll Wyświetla listę typów i elementów członkowskich w mscorlib.dll, których wartości HPA są niedozwolone.
niedozwolone typy i elementy członkowskie w System.dll Wyświetla listę typów i elementów członkowskich w System.dll, których wartości HPA są niedozwolone.
niedozwolone typy i elementy członkowskie w System.Data.dll Wyświetla listę typów i elementów członkowskich w System.Data.dll, których wartości HPA są niedozwolone.
niedozwolone typy i elementy członkowskie w System.Core.dll Wyświetla listę typów i elementów członkowskich w System.Core.dll, których wartości HPA są niedozwolone.