Kódhozzáférés biztonsága - Code Access Security
A Code Access Security (CAS) a Microsoft .NET keretrendszerben a Microsoft megoldása annak megakadályozására, hogy a megbízhatatlan kód privilegizált műveleteket hajtson végre. Amikor a CLR terhelések egy szerelvény fog szerezni bizonyíték a szerelvény, és ennek segítségével azonosítsa a kód csoportban , hogy a szerelvény tartozik. A kódcsoport engedélykészletet (egy vagy több engedélyt ) tartalmaz. Kód, amely végrehajt egy kiváltságos akció elvégzi a kód hozzáférési igény , aminek hatására a CLR járni a hívási verem , és megvizsgálja a az engedéllyel nyújtott az összeállítás minden módszer a hívási verem. A kódcsoportokat és az engedélykészleteket a gép rendszergazdája határozza meg, aki meghatározza a biztonsági házirendet .
Bizonyíték
Bizonyíték lehet bármilyen, a közgyűléshez kapcsolódó információ. A .NET kód hozzáférési biztonsága által használt alapértelmezett bizonyítékok a következők:
- Alkalmazáskönyvtár: az a könyvtár, amelyben az összeállítás található.
- Kiadó: az összeállítás kiadójának digitális aláírása (megköveteli, hogy az összeállítást alá kell írni Authenticode -on keresztül ).
- URL : a teljes URL, ahonnan az összeállítást elindították
- Webhely: az URL/távoli tartomány/VPN hosztneve.
- Zóna: az a biztonsági zóna, ahol a szerelvény található
- Hash : a szerelvény kriptográfiai kivonata, amely egy adott verziót azonosít.
- Erős név: a szerelvény nevének, verziójának és az összeállítás aláírásához használt aláíró kulcs nyilvános kulcsának kombinációja. Az aláíró kulcs nem X.509 tanúsítvány, hanem egy egyedi kulcspár, amelyet az erős névadó eszköz, az SN.EXE vagy a Visual Studio generált .
A fejlesztő használhat egyedi bizonyítékokat (úgynevezett összeszerelési bizonyítékokat), de ehhez biztonsági összeállítás szükséges, és a .NET 1.1 verziójában ez a lehetőség nem működik.
Az összeállítás hash -jén alapuló bizonyítékokat kódban könnyen meg lehet szerezni. Például a C# -ban a bizonyítékot a következő kódmondattal lehet beszerezni:
this.GetType().Assembly.Evidence
Irányelv
A házirend olyan kifejezések halmaza, amelyek bizonyítékok alapján határozzák meg a kódcsoporttagságot. A kódcsoport engedélyeket ad a csoporton belüli összeszerelésekhez. A .NET -ben négy irányelv van:
- Vállalat: házirend az Active Directory -telepítés részét képező gépcsaládra .
- Gép: az aktuális gép házirendje.
- Felhasználó: a bejelentkezett felhasználó házirendje.
- AppDomain: a végrehajtó alkalmazás tartomány házirendje.
Az első három házirend XML -fájlokban van tárolva, és a .NET Configuration Tool 1.1 (mscorcfg.msc) segítségével kezelhető. A végső házirend az aktuális alkalmazástartomány kódján keresztül történik.
A kódhozzáférés biztonsága minden egyes házirendhez bemutatja az összeállítás bizonyítékait, majd a metszéspontot (vagyis az összes generált engedélykészlet közös jogosultságait) a szerelvénynek adott engedélyeknek tekinti.
Alapértelmezés szerint az Enterprise, User és AppDomain házirendek teljes körű bizalmat adnak (vagyis lehetővé teszik, hogy minden szerelvény minden jogosultsággal rendelkezzen), és a Machine házirend szigorúbb. Mivel a metszéspont megtörtént, ez azt jelenti, hogy a végleges engedélykészletet a Gép házirend határozza meg.
Vegye figyelembe, hogy a házirend -rendszer megszűnt a .NET -keretrendszer 4.0 -ban.
Kódcsoport
A kódcsoportok bizonyítékot társítanak egy megnevezett engedélykészlethez. A rendszergazda a .NET konfigurációs eszközzel határozza meg a bizonyítékok egy adott típusát (például webhely) és a bizonyíték egy adott értékét (például www.mysite.com), majd azonosítja az engedélykészletet, amely a kódcsoport lesz megadott.
Igények
Az a kód, amely valamilyen kiváltságos műveletet hajt végre, egy vagy több jogosultságot igényel. A kereslet a CLR -t járja a híváskötegen, és minden módszer esetében a CLR biztosítja, hogy a kért engedélyek szerepeljenek a metódus összeállított engedélyeiben. Ha az engedélyt nem adják meg, akkor biztonsági kivétel kerül érvénybe. Ez megakadályozza, hogy a letöltött kód privilegizált műveleteket hajtson végre. Például, ha egy összeállítást egy nem megbízható webhelyről töltenek le, akkor az összeállítás nem rendelkezik fájl -IO jogosultságokkal, így ha ez az összeállítás megpróbál hozzáférni egy fájlhoz, kivételt hoz létre, amely megakadályozza a hívást.