Zabezpečení přístupu ke kódu - Code Access Security

Code Access Security (CAS), v rámci Microsoft .NET , je řešením společnosti Microsoft, které zabraňuje nedůvěryhodnému kódu provádět privilegované akce. Když CLR načte sestavu , získá důkaz pro sestavu a použije ji k identifikaci skupiny kódů , do které sestava patří. Skupina kódů obsahuje sadu oprávnění (jedno nebo více oprávnění ). Kód, který provádí privilegovanou akci, provede požadavek na přístup ke kódu, což způsobí, že CLR projde po zásobníku volání a prozkoumá sadu oprávnění udělenou sestavení každé metody v zásobníku volání. Skupiny kódů a sady oprávnění jsou určeny správcem počítače, který definuje zásady zabezpečení .

Důkaz

Důkazem mohou být jakékoli informace spojené se sestavením. Výchozí důkazy, které používá zabezpečení přístupu ke kódu .NET, jsou:

  • Adresář aplikace: adresář, ve kterém se nachází sestava.
  • Vydavatel: digitální podpis vydavatele sestavy (vyžaduje, aby bylo shromáždění podepsáno prostřednictvím Authenticode ).
  • URL : úplná adresa URL, ze které bylo sestavení spuštěno
  • Web: název hostitele adresy URL/vzdálené domény/VPN.
  • Zóna: zóna zabezpečení, kde se nachází sestava
  • Hash : kryptografický hash sestavy, který identifikuje konkrétní verzi.
  • Silné jméno: kombinace názvu sestavení, verze a veřejného klíče podpisového klíče použitého k podepsání sestavení. Podpisový klíč není certifikát X.509 , ale vlastní pár klíčů generovaný silným nástrojem pro pojmenování, SN.EXE nebo Visual Studio .

Vývojář může použít vlastní důkazy (takzvané důkazy o sestavení), ale to vyžaduje napsání sestavení zabezpečení a ve verzi 1.1 .NET toto zařízení nefunguje.

Důkazy založené na hash sestavy lze snadno získat v kódu. Například v jazyce C# lze důkazy získat pomocí následující klauzule kódu:

this.GetType().Assembly.Evidence

Politika

Zásada je sada výrazů, které používají důkazy k určení členství ve skupině kódů. Skupina kódů poskytuje sadu oprávnění pro sestavení v rámci této skupiny. V .NET existují čtyři zásady:

  • Enterprise: zásada pro skupinu počítačů, které jsou součástí instalace služby Active Directory .
  • Stroj: zásady pro aktuální počítač.
  • Uživatel: zásady pro přihlášeného uživatele.
  • AppDomain: zásady pro provádějící doménu aplikace.

První tři zásady jsou uloženy v souborech XML a jsou spravovány prostřednictvím .NET Configuration Tool 1.1 (mscorcfg.msc). Konečné zásady jsou spravovány prostřednictvím kódu pro aktuální doménu aplikace.

Zabezpečení přístupu k kódu bude u každé zásady představovat důkazy shromáždění a poté bude brát průnik (tj. Oprávnění společná všem generovaným sadám oprávnění) jako oprávnění udělená sestavení.

Ve výchozím nastavení poskytují zásady Enterprise, User a AppDomain plnou důvěryhodnost (to znamená, že umožňují všem sestavením mít všechna oprávnění) a zásady počítače jsou přísnější. Vzhledem k tomu, že je křižovatka přijata, znamená to, že konečná sada oprávnění je určena zásadami počítače.

Všimněte si, že systém zásad byl v rozhraní .NET Framework 4.0 odstraněn.

Skupina kódů

Skupiny kódů spojují důkaz s pojmenovanou sadou oprávnění. Správce používá konfigurační nástroj .NET k určení konkrétního typu důkazu (například Site) a konkrétní hodnoty pro tento důkaz (například www.mysite.com) a poté identifikuje sadu oprávnění, kterou bude skupina kódů udělil.

Požadavky

Kód, který provede nějakou privilegovanou akci, bude vyžadovat jedno nebo více oprávnění. Poptávka přiměje CLR procházet zásobníkem hovorů a pro každou metodu CLR zajistí, aby požadovaná oprávnění byla v udělených oprávněních sestavení metody. Pokud není povolení uděleno, je vyvolána výjimka zabezpečení . Tím se zabrání tomu, aby stažený kód prováděl privilegované akce. Pokud je například sestavení staženo z nedůvěryhodného webu, nebude mít sestavení žádná oprávnění IO souboru, a pokud se tedy toto sestavení pokusí o přístup k souboru, vyvolá výjimku bránící volání.

Reference