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 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 |