Udostępnij za pośrednictwem


Zabezpieczenia programu Access CLR integracja kodu

Aparat plików wykonywalnych języka wspólnego (CLR) obsługuje model zabezpieczeń, nazywany kodem dostępu zabezpieczeń dla kod zarządzany.W tym modelu uprawnienia są przyznawane do zespołów na podstawie tożsamości kod.Aby uzyskać więcej informacji zobacz sekcję "zabezpieczenia dostępu kodu" w pakiet SDK systemu .NET Framework.

Zasady zabezpieczeń, które określa zestawy uprawnień jest zdefiniowana w trzech różnych miejscach:

  • Zasady komputera: Jest to zasady obowiązujące dla całego kod zarządzany uruchomionych na komputerze, na których SQL Server został zainstalowany.

  • Zasady użytkownika: Jest to zasady obowiązują dla kod zarządzany przez proces. Dla SQL Server, zasady użytkownika jest specyficzny dla konta systemu Windows, na którym SQL Server Usługa jest uruchomiona.

  • Zasady hosta: przypadek zasada przez hosta CLR (w tym przypadek SQL Server), są włączone dla zarządzanego kodu w tym hoście.

zabezpieczenia dostępu kodu Mechanizm obsługiwane przez środowisko CLR opiera się na założeniu, że w czasie wykonywania może obsługiwać zarówno pełni zaufany i częściowo zaufanego kodu.The resources that are protected by CLR code access security are typically wrapped by managed application programming interfaces that requirethe corresponding permission before allowing access to the resource.The demandfor the permission is satisfied only if all the callers (at the assembly level) in the call stack have the corresponding resource permission.

Zestaw zabezpieczenia dostępu kodu uprawnień przypisanych do uruchamianej wewnątrz kod zarządzany SQL Server to punkt przecięcia się zbiór uprawnień przydzielonych przez powyżej poziomy trzech zasad. Nawet wtedy, gdy SQL Server udziela wirtualny plik dziennika uprawnień do wirtualny plik dziennika w SQL Server, ewentualnych zbiór uprawnień do kodu użytkownika może być zasady dalsze ograniczone przez użytkownika i poziomie komputera.

SQL Server Host zasady poziom uprawnień zestawów

wirtualny plik dziennika kodu dostępu zabezpieczeń uprawnień udzielonych zestawów przez SQL Server Host poziom zasad zależy od wirtualny plik dziennika określonej podczas tworzenia wirtualny plik dziennika uprawnień. Istnieją trzy zestawy uprawnień: SAFE, EXTERNAL_ACCESS i UNSAFE (określane przy użyciu PERMISSION_SET OpcjaCREATE MONTAŻOWYCH (języka Transact-SQL)).

SQL Server dostarcza poziomu zasad zabezpieczeń na poziomie hosta do środowiska CLR podczas obsługi; ta zasada jest możliwy poziom zasad dodatkowe poniżej poziomów dwóch zasad, które są zawsze w obiekcie.Zasada ta jest zestaw dla każdej domena aplikacji, utworzony przez SQL Server. Ta zasada nie jest przeznaczony dla domyślnej domena aplikacji będzie obowiązywać po SQL Server tworzy wystąpienie środowiska CLR.

The SQL Server host-level policy is a combination of SQL Server fixedpolicy for system assemblies and user-specified policy for user assemblies.

Stałe zasad dla środowiska CLR zestawów i SQL Server zestawy system przydziela je pełne zaufanie.

Użytkownik określił część SQL Server Host zasad jest oparty na właściciela wirtualny plik dziennika określające jedną z trzech pakiety uprawnień dla każdego wirtualny plik dziennika. Aby uzyskać więcej informacji na temat zabezpieczeń, uprawnienia wymienione poniżej zobacz .NET Framework SDK.

BEZPIECZNE

Only internal computation and local data access are allowed.SAFE is the most restrictive permission set.Kod wykonywany przez wirtualny plik dziennika o SAFE uprawnienia nie może uzyskać dostępu do zasobów zewnętrznych systemowych, takich jak pliki, w sieci, zmiennych środowiskowych lub w rejestrze.

SAFE zespoły mają następujące uprawnienia i wartości:

Uprawnienia

Value(s) / opis

SecurityPermission

Execution: Uprawnienia do wykonać kod zarządzany.

SqlClientPermission

Context connection = true, context connection = yes: Mogą być używane tylko połączenia kontekstu i ciąg połączenia można określić tylko wartość "połączenia kontekstu = true"lub "połączenia kontekstu = yes".

AllowBlankPassword = false: Nie są dozwolone puste hasła.

EXTERNAL_ACCESS

Zestawy EXTERNAL_ACCESS mają takie same uprawnienia jak SAFE zespoły z dodatkową możliwość dostępu do zasobów zewnętrznych systemowych, takich jak pliki, zmiennych środowiskowych, sieci i rejestru.

EXTERNAL_ACCESS zespoły są także następujące uprawnienia i wartości:

Uprawnienia

Value(s) / opis

DistributedTransactionPermission

Unrestricted: Transakcje rozproszone są dozwolone.

DNSPermission

Unrestricted: Uprawnienia do żądania informacji od serwery nazw domen.

EnvironmentPermission

Unrestricted: Pełny dostęp do zmiennych środowiskowych systemu i użytkownika jest dozwolone.

EventLogPermission

Administer: Dopuszczalne są następujące czynności: Tworzenie urządzenie źródłowe zdarzenie, istniejące dzienniki usuwania źródeł zdarzeń lub dzienniki, odpowiadając na pozycji, wyczyścić dziennik zdarzeń, słuchanie zdarzenie i uzyskiwania dostępu do kolekcja wszystkich dzienników zdarzeń do czytania.

FileIOPermission

Unrestricted: Pełny dostęp do plików i folderów jest dozwolone.

KeyContainerPermission

Unrestricted: Pełny dostęp do kontenery kluczy jest dozwolone.

NetworkInformationPermission

Access: Wywołanie jest dozwolone.

RegistryPermission

Umożliwia prawa odczytu HKEY_CLASSES_ROOT, HKEY_LOCAL_MACHINE, HKEY_CURRENT_USER, HKEY_CURRENT_CONFIG, a HKEY_USERS.

SecurityPermission

Assertion: Zdolność do potwierdzenia, że wszystkie obiekty wywołujące ten kod ma wymaganych uprawnień dla tej operacji.

ControlPrincipal: Zdolność do manipulacji obiektu głównego.

Execution: Uprawnienia do wykonać kod zarządzany.

SerializationFormatter: Zdolność do dostarczania usług serializacji.

SmtpPermission

Access: Dozwolone są połączenia wychodzące do host SMTP port 25.

SocketPermission

Connect: Dozwolone są połączenia wychodzące (wszystkie porty, wszystkie protokoły) na adres transportu.

SqlClientPermission

Unrestricted: Pełny dostęp do źródło danych jest dozwolone.

StorePermission

Unrestricted: Pełny dostęp do magazynów certyfikat X.509 jest dozwolone.

WebPermission

Connect: Dozwolone są połączenia wychodzące do zasobów sieci web.

NIEBEZPIECZNE

UNSAFE umożliwia zestawów nieograniczony dostęp do zasobów, zarówno wewnątrz jak i na zewnątrz SQL Server. Kod wykonywany w programie UNSAFE wirtualny plik dziennika mogą również wywoływać kod niezarządzany.

UNSAFE zespoły są podane. FullTrust.

Security noteSecurity Note:

SAFE is the recommended permission setting for assemblies that perform computation and data management tasks without accessing resources outside SQL Server.EXTERNAL_ACCESS is recommended for assemblies that access resources outside SQL Server.EXTERNAL_ACCESS assemblies by default execute as the SQL Server service account.Może się zdarzyć, że EXTERNAL_ACCESS Kod jawnie personifikować kontekst zabezpieczeń uwierzytelnianie systemu Windows obiektu wywołującego. Ponieważ wartość domyślna to wykonać jak SQL Server konto usługa, uprawnienia do wykonania EXTERNAL_ACCESS tylko należy podać logowania zaufanego do uruchamiania jako konto usługa. Z perspektywa zabezpieczeń EXTERNAL_ACCESS i UNSAFE zestawy są identyczne. Jednak EXTERNAL_ACCESS Zestawy zawierają różne niezawodność oraz zabezpieczenia niezawodności, które nie znajdują się w UNSAFE zespoły. Określanie UNSAFE Umożliwia kod w zestawie do wykonywania niedozwolonych czynności przed SQL Server przetwarzanie miejsca i w związku z tym potencjalnie mogą wpłynąć na niezawodności i skalowalności SQL Server. Aby uzyskać więcej informacji na temat tworzenia zestawów CLR w SQL Server, zobacz Zarządzanie CLR integracja zestawy.

Uzyskiwanie dostępu do zasobów zewnętrznych

Jeśli jest zarejestrowany typ zdefiniowany przez użytkownika (UDT), procedura przechowywana lub innego typu wirtualny plik dziennika konstrukcja SAFE ustawić uprawnienia, a następnie w konstrukcji kod zarządzany jest w stanie uzyskać dostęp do zasobów zewnętrznych. Jednak jeśli albo EXTERNAL_ACCESS lub UNSAFE określone zestawy uprawnień i kod zarządzany próbuje uzyskać dostęp do zasobów zewnętrznych SQL Server stosuje się następujące zasady:

Jeśli

Następnie

Kontekst wykonywania odpowiada SQL Server Zaloguj się.

Próby dostępu do zasobów zewnętrznych są odrzucane i wyjątek zabezpieczeń.

Kontekst wykonywania odpowiada identyfikator logowania systemu Windows i kontekst wykonania jest oryginalny obiekt wywołujący.

W kontekście zabezpieczeń uzyskiwany jest dostęp do zasób zewnętrznych SQL Server konto usługa.

Obiekt wywołujący nie jest oryginalny obiekt wywołujący.

Odmowa dostępu i wyjątek zabezpieczeń.

Kontekst wykonywania odpowiada identyfikator logowania systemu Windows i jest oryginalny obiekt wywołujący, a obiekt wywołujący ma były traktowane.

Program Access używa kontekstu zabezpieczeń wywołującego, a nie konta usługa.

Podsumowanie zestaw uprawnień

Na poniższym wykresie podsumowano ograniczenia i uprawnienia udzielone SAFE, EXTERNAL_ACCESS, a UNSAFE zestawy uprawnień.

SAFE

EXTERNAL_ACCESS

UNSAFE

Code Access Security Permissions

Tylko do wykonywania

wykonać + dostęp do zasobów zewnętrznych

Bez ograniczeń (łącznie z P/Invoke)

Programming model restrictions

Tak

Tak

Bez ograniczeń

Verifiability requirement

Tak

Tak

Nie

Local data access

Tak

Tak

Tak

Ability to call native code

Nie

Nie

Tak