Zagadnienia dotyczące zabezpieczeń zestawów
Podczas kompilowania zestawu można określić zestaw uprawnień wymaganych przez zestaw. To, czy określone uprawnienia są przyznane do zestawu, czy nie, zależy od dowodów.
Istnieją dwa wyraźnie różniące się sposoby używania dowodów:
Dowód wejściowy jest scalany z dowodami zebranymi przez moduł ładujący w celu utworzenia ostatecznego zestawu dowodów stosowanego do rozpoznawania zasad. Metody korzystające z tej semantyki obejmują Assembly.Load, Assembly.LoadFrom i Activator.CreateInstance.
Dowód wejściowy jest używany w niezmienionej formie jako ostateczny zestaw dowodów stosowanych do rozpoznawania zasad. Metody korzystające z tej semantyki obejmują Assembly.Load(byte[]) i AppDomain.DefineDynamicAssembly().
Opcjonalne uprawnienia można przyznać za pomocą zasad zabezpieczeń ustawionych na komputerze, na którym zostanie uruchomiony zestaw. Jeśli kod ma obsługiwać wszystkie potencjalne wyjątki zabezpieczeń, można wykonać jedną z następujących czynności:
Wstawić żądania o uprawnienia dla wszystkich uprawnień, których wymaga kod, oraz obsługiwać z wyprzedzeniem niepowodzenia w czasie ładowania, które występują w razie nieprzyznania uprawnień.
W celu uzyskania uprawnień wymaganych przez kod nie używać żądań o uprawnienia, ale przygotować się na obsługę wyjątków zabezpieczeń w razie nieprzyznania uprawnień.
Uwaga
Zabezpieczenia to skomplikowana dziedzina, w której istnieje wiele opcji do wyboru. Aby uzyskać więcej informacji, zobacz Kluczowe pojęcia dotyczące zabezpieczeń.
Podczas ładowania dowód zestawu jest wykorzystywany jako dane wejściowe dla zasad zabezpieczeń. Zasady zabezpieczeń są ustanawiane przez przedsiębiorstwo i administratora komputera, a także przez ustawienia zasad użytkownika i określa zestaw uprawnień przyznanych wszystkim zarządzanym kodzie podczas wykonywania. Zasady zabezpieczeń można ustanowić dla wydawcy zestawu (jeśli ma on wygenerowany podpis narzędzia podpisywania), dla witryny sieci Web i strefy (która była koncepcją programu Internet Explorer), z której został pobrany zestaw, lub dla silnej nazwy zestawu. Na przykład administrator komputera może ustanowić zasady zabezpieczeń, które pozwalają, aby kod pobrany z witryny internetowej i podpisany przez producenta danego oprogramowania miał dostęp do bazy danych na komputerze, ale nie przyznają dostępu umożliwiającego zapis na dysku komputera.
Zestawy o silnych nazwach i narzędzia podpisywania
Ostrzeżenie
Nie należy polegać na silnych nazwach zabezpieczeń. Zapewniają one tylko unikatową tożsamość.
Zestaw można podpisać na dwa różne, ale uzupełniające sposoby: za pomocą silnej nazwy lub przy użyciu SignTool.exe (narzędzia podpisywania). Podpisywanie zestawu przy użyciu silnej nazwy powoduje dodanie szyfrowania klucza publicznego do pliku zawierającego manifest zestawu. Podpisywanie za pomocą silnej nazwy pomaga zweryfikować unikatowość nazwy, zapobiec podszywaniu się pod nazwę oraz dostarczyć obiektom wywołującym jakąś tożsamość podczas rozpoznawania odwołań.
Żaden poziom zaufania nie jest skojarzony z silną nazwą, co sprawia, że SignTool.exe (narzędzie podpisywania) jest ważne. Te dwa narzędzia podpisywania wymagają, aby wydawca potwierdził swoją tożsamość wobec zewnętrznego urzędu i uzyskał certyfikat. Certyfikat jest następnie osadzany w pliku i na jego podstawie administrator może decydować, czy ufa autentyczności kodu.
Możesz nadać zarówno silną nazwę, jak i podpis cyfrowy utworzony przy użyciu SignTool.exe (narzędzia podpisywania) do zestawu lub użyć go samodzielnie. Oba narzędzia podpisywania mogą podpisywać tylko jeden plik jednocześnie. W przypadku zestawu wieloplikowego podpisuje się plik zawierający manifest zestawu. Silna nazwa jest przechowywana w pliku zawierającym manifest zestawu, ale podpis utworzony przy użyciu SignTool.exe (narzędzia podpisywania) jest przechowywany w zarezerwowanym miejscu w pliku przenośnym pliku wykonywalnym (PE) zawierającym manifest zestawu. Podpisywanie zestawu przy użyciu SignTool.exe (narzędzia podpisywania) może być używane (z silną nazwą lub bez silnej nazwy), gdy masz już hierarchię zaufania, która opiera się na SignTool.exe (narzędziu podpisywania) wygenerowanych podpisów lub gdy zasady używają tylko części klucza i nie sprawdzają łańcucha zaufania.
Uwaga
Jeśli do zestawu ma być stosowana silna nazwa i podpis z narzędzia podpisywania, najpierw należy przypisać silną nazwę.
Środowisko uruchomieniowe języka wspólnego również dokonuje weryfikacji skrótu. Manifest zestawu zawiera listę wszystkich plików tworzących zestaw, a także skrót każdego pliku utworzony podczas kompilowania manifestu. Przy wczytywaniu każdego pliku jego wartość jest skracana i porównywana z wartością skrótu przechowywaną w manifeście. Jeśli skróty różnią się od siebie, zestaw nie jest wczytywany.
Silne nazewnictwo i podpisywanie przy użyciu narzędzia SignTool.exe (Sign Tool) gwarantuje integralność za pomocą podpisów cyfrowych i certyfikatów. Wszystkie wymienione technologie, czyli weryfikacja skrótu, silne nazewnictwo i podpisywanie przy użyciu SignTool.exe (narzędzia podpisywania) współpracują ze sobą, aby upewnić się, że zestaw nie został w żaden sposób zmieniony.