Udostępnij za pośrednictwem


Zabezpieczenia dostępu do kodu integracji CLR

Common language runtime (CLR) obsługuje model zabezpieczeń o nazwie zabezpieczenia dostępu kodu dla kod zarządzany.W tym modelu uprawnienia są przyznawane na podstawie tożsamości kod zespołów.Aby uzyskać więcej informacji zobacz "Zabezpieczenia dostępu do kodu" sekcja w.NET Framework SDK.

Zasady zabezpieczeń, która określa uprawnienia do zespołów jest zdefiniowana w trzech miejscach:

  • Zasady komputera: Ta zasada dla obowiązuje cały kod zarządzany uruchomiony w komputerze, na którym SQL Server jest zainstalowany.

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

  • Zasady hosta: Jest to zasada zestaw w górę przez hosta CLR (w tym przypadek SQL Server), obowiązuje dla zarządzanego kodu w tym hoście.

Obsługiwane przez środowisko CLR mechanizm zabezpieczenia dostępu kodu opiera się na założeniu, że środowisko wykonawcze mogą obsługiwać zarówno pełni zaufane 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ń udzielonych podczas uruchomienia wewnątrz kod zarządzany SQL Server jest punktem przecięcia zestaw uprawnień udzielonych przez powyżej poziomów trzech zasad.Nawet jeśli SQL Server udziela wirtualny plik dziennika uprawnień wirtualny plik dziennikaie załadowanym w SQL Server, ewentualne wirtualny plik dziennika uprawnienia przyznane użytkownikowi kod może być zasady dalszego ograniczone przez użytkownika i poziom komputera.

SQL Server Host zasad poziomu zestawów uprawnień

wirtualny plik dziennika z kodu zabezpieczenia przyznane uprawnienia do zespołów przez SQL Server poziom zasad hosta jest określany przez uprawnienie wirtualny plik dziennika określone podczas tworzenia wirtualny plik dziennikau.Istnieją trzy zestawy uprawnień: SAFE, EXTERNAL_ACCESS and UNSAFE (specified using the PERMISSION_SET option of Tworzenie zestawu (Transact-SQL)).

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

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

Stałe zasady dla zestawów CLR i SQL Server zestawów systemowych udziela im pełne zaufanie.

Użytkownik określił część SQL Server hosta zasad jest oparty na właściciela wirtualny plik dziennika, określając jedną z trzech pakiety uprawnień dla każdego wirtualny plik dziennika.Aby uzyskać więcej informacji o uprawnieniach, wymienionych 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 z SAFE uprawnień nie można uzyskać dostępu do zasobów systemowych zewnętrznych, takich jak pliki, sieci, zmienne środowiskowe lub rejestru.

SAFE zestawy mają następujące uprawnienia i wartości:

Uprawnienie

Wartości / opis

SecurityPermission

Execution: Uprawnienia do wykonać kod zarządzany.

SqlClientPermission

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

AllowBlankPassword = false: Puste hasła nie są dozwolone.

EXTERNAL_ACCESS

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

EXTERNAL_ACCESS zestawy mają również następujące uprawnienia i wartości:

Uprawnienie

Wartości / opis

DistributedTransactionPermission

Unrestricted: Transakcje rozproszone są dozwolone.

DNSPermission

Unrestricted: Uprawnienia do żądania informacji z serwerów nazw.

EnvironmentPermission

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

EventLogPermission

Administer:Dopuszczalne są następujące akcje: Tworzenie źródło zdarzenie, czytania istniejących dzienników, usuwanie źródło zdarzenies lub dzienniki odpowiadać zapisów czyszczenie dziennika zdarzeń, nasłuchiwania zdarzeń i uzyskiwania dostępu do kolekcja wszystkich dzienników zdarzeń.

FileIOPermission

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

KeyContainerPermission

Unrestricted: Pełny dostęp do klucz pojemników jest dozwolone.

NetworkInformationPermission

Access: Polecenie ping jest dozwolone.

RegistryPermission

Allows read rights to HKEY_CLASSES_ROOT, HKEY_LOCAL_MACHINE, HKEY_CURRENT_USER, HKEY_CURRENT_CONFIG, and HKEY_USERS.

SecurityPermission

Assertion:Zdolność do potwierdzenia, że wywołaniach ten kod ma wymaganych uprawnień dla operacji.

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

Execution: Uprawnienia do wykonać kod zarządzany.

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

SmtpPermission

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

SocketPermission

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

SqlClientPermission

Unrestricted: Dozwolone jest pełny dostęp do elementu datasource.

StorePermission

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

WebPermission

Connect: Połączenia wychodzące do zasobów sieci web są dozwolone.

NIEBEZPIECZNE

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

UNSAFEbiorąc pod uwagę zespoły FullTrust.

Uwaga dotycząca zabezpieczeńUwaga dotycząca zabezpieczeń

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żliwe jest EXTERNAL_ACCESS Kod personifikować jawnie obiektu wywołującego uwierzytelniania systemu Windows zabezpieczeń kontekstu.Ponieważ domyślnie jest wykonać jako SQL Server konto usługa, uprawnienia do wykonać EXTERNAL_ACCESS należy udzielać tylko do logowania do zaufanych do uruchamiania jako konto usługa.Z perspektywa zabezpieczeń EXTERNAL_ACCESS i UNSAFE zestawy są identyczne.Jednakże EXTERNAL_ACCESS zespołów zapewniają różne wiarygodności i niezawodności zabezpieczenia, które są nie w UNSAFE zespołów.Określanie UNSAFE umożliwia kodu w wirtualny plik dziennika do wykonywania operacji nielegalnego przeciwko SQL Server proces miejsca i stąd można złamanie niezawodności i skalowalności SQL Server.Aby uzyskać więcej informacji o tworzeniu zestawów CLR w SQL Server, zobacz Zarządzanie CLR integracji zespoły.

Uzyskiwanie dostępu do zasobów zewnętrznych

Jeśli typ zdefiniowany przez użytkownika (UDT), procedura składowana lub innego typu konstrukcji wirtualny plik dziennika jest zarejestrowany z SAFE uprawnień zestaw, następnie wykonywania kodu zarządzanego w konstrukcji nie mógł uzyskać dostępu do zasobów zewnętrznych.Jednakże jeśli EXTERNAL_ACCESS lub UNSAFE podano 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żeli

Następnie

Kontekst wykonywania odpowiada SQL Server logowania.

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

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

W kontekście zabezpieczeń dostępu do zasób zewnętrznego SQL Server konta usługa.

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

Odmowa dostępu i wyjątek zabezpieczeń.

Kontekst wykonywania odpowiada logowania systemu Windows i kontekst wykonania jest oryginalny obiekt wywołujący i przeprowadzić personifikacji wywołującego.

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

Podsumowanie zestawu uprawnień

Poniżej podsumowano ograniczenia i uprawnienia udzielone SAFE, EXTERNAL_ACCESS, i UNSAFE zestawów uprawnień.

SAFE

EXTERNAL_ACCESS

UNSAFE

Code Access Security Permissions

Tylko do wykonywania

Wykonanie + dostęp do zasobów zewnętrznych

Bez ograniczeń (w tym p i Invoke)

Programming model restrictions

Tak

Tak

Brak ograniczeń

Verifiability requirement

Tak

Tak

Nie

Local data access

Tak

Tak

Tak

Ability to call native code

Nie

Nie

Tak