Důležité informace o zabezpečení sestavení

Při vytváření sestavení, můžete určit sadu oprávnění, kterou sestavení požaduje ke spuštění. Sestavení je založeno na legitimaci ať má udělena určitá oprávnění nebo ne.

Legitimace používá dva odlišné způsoby:

  • Výsledná sada legitimací, která se používá pro rozlišení zásad je vytvořena spojením vstupní legitimace s legitimací shromážděnou zavaděčem. Mezi metody používající tuto sémantiku patří Assembly.Load, Assembly.LoadFrom a Activator.CreateInstance.

  • Nezměněná vstupní legitimace je použita jako výsledná sada legitimace, která slouží k rozlišení zásad. Mezi metody používající tuto sémantiku patří Assembly.Load(byte[]) a AppDomain.DefineDynamicAssembly().

Volitelná oprávnění mohou být udělena zásadami zabezpečení, nastavenými v počítači, ve kterém bude spuštěno sestavení. Chcete-li, aby váš kód zpracoval všechny potenciální výjimky zabezpečení, proveďte jeden z následujících kroků:

  • Je nutné, aby váš kód měl u všech oprávnění vloženu žádost o oprávnění, a rovněž je nutné zpracovat selhání při zatížení, ke kterým dochází, pokud nejsou oprávnění udělena.

  • Nepoužívejte žádost o oprávnění pro získání oprávnění, která může požadovat váš kód. Buďte však připraveni zpracovat výjimky zabezpečení, ke kterým může dojít, pokud oprávnění nejsou udělena.

    PoznámkaPoznámka

    Zabezpečení je komplexní oblast. Na výběr je mnoho možností.Další informace naleznete v tématu Klíčové koncepty zabezpečení.

V okamžiku načtení je legitimace sestavení použita jako vstup pro zásady zabezpečení. Zásady zabezpečení jsou ustanoveny společností a správcem počítače, stejně jako nastavení uživatelských zásad a určení sady oprávnění, která je udělena při spuštění celému spravovanému kódu. Zásady zabezpečení mohou být ustanoveny pro vydavatele sestavení (Pokud má signaturu vygenerovanou podpisovým nástrojem), pro web a zónu (v podmínkách aplikace Internet Explorer), odkud bylo sestavení staženo nebo pro silný název sestavení. Správce počítače například může stanovit zásady zabezpečení, které umožňují veškerému kódu, který je stažený z webu a je podepsaný danou softwarovou společností přístup k databázi v počítači, ale neposkytuje přístup k zápisu na disk počítače.

Silně pojmenovaná sestavení a podepisovací nástroje

Sestavení můžete podepsat dvěma odlišnými, ale vzájemně se doplňujícími, způsoby: silným názvem nebo pomocí Signcode.exe (File Signing Tool) v technologii .NET Framework verze 1.0 a 1.1 nebo SignTool.exe (Sign Tool) v novějších verzích technologie .NET Framework. Podepsání sestavení silným názvem přidá šifrování s veřejným klíčem do souboru obsahujícího manifest sestavení. Podepsání silným názvem pomáhá ověřit jedinečnost názvu, zabraňuje jeho falšování a poskytuje volající s nějakou identitou, když je odkaz vyřešen.

Nicméně žádná úroveň důvěryhodnosti není asociována se silným názvem, který činí nástroje Signcode.exe (File Signing Tool) a SignTool.exe (Sign Tool) důležitými. Tyto dva podepisovací nástroje vyžadují, aby vydavatel prokázal svou identitu autoritě třetí strany a získal tak certifikát. Tento certifikát je pak vložený do souboru a správce ho může využít při rozhodnutí, zda lze důvěřovat pravosti kódu.

K sestavení můžete přidělit obojí - silný název i digitální podpis vytvořený pomocí Signcode.exe (File Signing Tool) a SignTool.exe (Sign Tool) nebo můžete použít obě samostatně. Tyto podepisovací nástroje mohou podepsat pouze jeden soubor najednou; pro podepsání sestavení s větším počtem souborů je potřeba podepsat soubor, který obsahuje manifest sestavení. Silný název je uložen v souboru obsahující manifest sestavení, ale signatura vytvořena pomocí Signcode.exe (File Signing Tool) nebo SignTool.exe (Sign Tool) je uložena ve vyhrazeném sektoru přenositelného spustitelného souboru (PE), který obsahuje manifest sestavení. Podepisování sestavení pomocí Signcode.exe (File Signing Tool) a SignTool.exe (Sign Tool) může být použito (se silným názvem nebo bez) tehdy, pokud již existuje hierarchie důvěryhodnosti, která závisí na podpisech vygenerovaných pomocí Signcode.exe (File Signing Tool) a SignTool.exe (Sign Tool) nebo když vaše zásady používají pouze část klíče a nekontrolují řetěz certifikátů.

PoznámkaPoznámka

Při používání silného názvu i nástroje pro vytvoření podpisu v sestavení je nutné, aby byl nejdřív přiřazen silný název.

Modul CLR (Common Language Runtime) také provádí ověření hash hodnoty; manifest sestavení obsahuje seznam všech souborů tvořících sestavení včetně hash hodnoty každého souboru, který existoval, když byl manifest vytvořen. Při nahrávání každého ze souborů, je vytvořen jeho otisk (hash hodnota) a tato hodnota je pak porovnána s otiskem uloženým v manifestu.  Pokud se dvě hash hodnoty neshodují, pak selže načtení sestavení.

Protože silné pojmenování a podepisování pomocí Signcode.exe (File Signing Tool) a SignTool.exe (Sign Tool) zaručuje integritu, tak zásady zabezpečení přístupu kódu můžete založit na těchto dvou formách legitimace sestavení. Silné pojmenování a podepisování pomocí Signcode.exe (File Signing Tool) a SignTool.exe (Sign Tool) zaručuje integritu prostřednictvím digitálních podpisů a certifikátů. Všechny zmíněné technologie – ověření hash hodnoty, silné pojmenovávání a podepisování pomocí Signcode.exe (File Signing Tool) a SignTool.exe (Sign Tool)– pracují společně, aby zaručili, že sestavení nebylo žádným způsobem změněno.

Viz také

Odkaz

SignTool.exe (Sign Tool)

Signcode.exe (File Signing Tool)

Koncepty

Sestavení se silným názvem

Sestavení v modulu CLR (Common Language Runtime)