Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Możliwość ładowania i wykonywania kodu zarządzanego na hoście programu SQL Server wymaga spełnienia wymagań hosta dotyczących zabezpieczeń dostępu kodu i ochrony zasobów hosta. Wymagania dotyczące zabezpieczeń dostępu do kodu są określane przez jeden z trzech zestawów uprawnień programu SQL Server: SAFE, EXTERNAL-ACCESS lub UNSAFE. Kod wykonywany w zestawach uprawnień SAFE lub EXTERNAL-ACCESS musi unikać niektórych typów lub elementów członkowskich, które mają atrybut HostProtectionAttribute zastosowany. Element HostProtectionAttribute nie jest uprawnieniem do zabezpieczeń tak samo jak gwarancja niezawodności, ponieważ identyfikuje określone konstrukcje kodu, typy lub metody, których host może nie zezwalać. Użycie HostProtectionAttribute wymusza model programowania, który pomaga chronić stabilność hosta.
Uwaga / Notatka
Zabezpieczenia dostępu kodu (CAS) zostały wycofane we wszystkich wersjach programu .NET Framework i .NET. Najnowsze wersje platformy .NET nie honorują adnotacji CAS i generują błędy, jeśli są używane interfejsy API związane z usługą CAS. Deweloperzy powinni szukać alternatywnych sposobów wykonywania zadań zabezpieczeń.
Atrybuty ochrony hosta
Atrybuty ochrony hosta 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 HostProtectionAttribute określa wartość HostProtectionResource, SharedState, Synchronization, MayLeakOnAbort lub ExternalProcessMgmt. 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 członkowie
W poniższej tabeli przedstawiono typy i członków, których HostProtectionResource wartości są niedozwolone w programie SQL Server.
Zestawy uprawnień programu SQL Server
Program SQL Server umożliwia użytkownikom określenie wymagań dotyczących niezawodności kodu wdrożonego w bazie danych. Gdy zestawy są przekazywane do bazy danych, autor zestawu może określić jeden z trzech zestawów uprawnień dla tego zestawu: BEZPIECZNY, DOSTĘP ZEWNĘTRZNY lub NIEBEZPIECZNY.
Zestaw uprawnień | BEZPIECZNY | EXTERNAL-ACCESS | NIEBEZPIECZNY |
---|---|---|---|
Zabezpieczenie dostępu do kodu | Wykonaj tylko | Wykonywanie i dostęp do zasobów zewnętrznych | Bez ograniczeń |
Ograniczenia modelu programowania | Tak | Tak | Brak ograniczeń |
Wymaganie dotyczące weryfikowania | Tak | Tak | Nie. |
Możliwość wywoływania kodu natywnego | Nie. | Nie. | Tak |
SAFE to najbardziej niezawodny i bezpieczny tryb ze skojarzonymi ograniczeniami w zakresie dozwolonego modelu programowania. Kod SAFE ma wysoką niezawodność i funkcje zabezpieczeń. Zestawy SAFE mają wystarczające uprawnienia do uruchamiania, wykonywania obliczeń i uzyskiwania dostępu do lokalnej bazy danych. Zestawy SAFE muszą być bezpieczne w trybie weryfikowalnym i nie mogą wywoływać kodu niezarządzanych.
EXTERNAL-ACCESS zapewnia pośrednią opcję zabezpieczeń, umożliwiając kodowi dostęp do zasobów spoza bazy danych, zachowując jednocześnie niezawodność i bezpieczeństwo SAFE.
NIEBEZPIECZNY jest przeznaczony dla wysoce zaufanego kodu, który można utworzyć tylko przez administratorów bazy danych. Kod ten, jako zaufany, nie podlega żadnym ograniczeniom dostępu i może wywoływać kod niezarządzany (natywny).
Program SQL Server używa warstwy zasad zabezpieczeń dostępu kodu na poziomie hosta do konfigurowania zasad hosta, które udzielają jednego z trzech zestawów uprawnień na podstawie zestawu uprawnień przechowywanych w wykazach programu SQL Server. Kod zarządzany uruchomiony wewnątrz bazy danych zawsze pobiera jeden z tych zestawów uprawnień dostępu do kodu.
Ograniczenia modelu programowania
Model programowania dla kodu zarządzanego w programie SQL Server wymaga funkcji, procedur i typów, które nie wymagają użycia stanu przechowywanego w wielu wywołaniach ani udostępniania stanu w wielu sesjach użytkownika. Ponadto, jak opisano wcześniej, obecność stanu współużytkowanego może spowodować krytyczne wyjątki wpływające na skalowalność i niezawodność aplikacji.
Biorąc pod uwagę te zagadnienia, program SQL Server nie zezwala na używanie zmiennych statycznych i elementów członkowskich danych statycznych. W przypadku zestawów SAFE i EXTERNAL-ACCESS program SQL Server analizuje metadane zestawu w czasie TWORZENIA ZESTAWU i kończy się niepowodzeniem podczas tworzenia takich zestawów, jeśli znajdzie użycie statycznych elementów członkowskich i zmiennych danych.