Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A felügyelt kód SQL Server-gazdagépen való betöltéséhez és végrehajtásához meg kell felelnie a gazdagépnek a kódhozzáférés biztonságára és a gazdagép erőforrás-védelmére vonatkozó követelményeinek. A kódhozzáférés biztonsági követelményeit az SQL Server három engedélykészletének egyike határozza meg: SAFE, EXTERNAL-ACCESS vagy UNSAFE. A SAFE vagy EXTERNAL-ACCESS engedélykészleten belül végrehajtó kódnak kerülnie kell az attribútummal rendelkező HostProtectionAttribute bizonyos típusokat vagy tagokat. A HostProtectionAttribute nem annyira biztonsági engedély, mint amennyire megbízhatósági garancia, mivel azonosít olyan kódszerkezeteket – akár típusokat, akár metódusokat –, amelyeket a gazdagép esetleg elutasíthat. A HostProtectionAttribute használata olyan programozási modellt hoz létre, amely segít megvédeni a szerver stabilitását.
Megjegyzés:
A Code Access Security (CAS) elavult a .NET-keretrendszer és a .NET összes verziójában. A .NET legújabb verziói nem tartják tiszteletben a CAS-megjegyzéseket, és cas-okkal kapcsolatos API-k használata esetén hibákat okoznak. A fejlesztőknek alternatív módot kell keresnie a biztonsági feladatok elvégzésére.
Gazdagépvédelmi attribútumok
A gazdagép védelmi attribútumok olyan típusokat vagy tagokat azonosítanak, amelyek nem felelnek meg a gazdagép programozási modelljének, és a megbízhatósági fenyegetés növekvő szintjeit képviselik.
Egyébként jóindulatúak.
A kiszolgáló által felügyelt felhasználói kód destabilizálásához vezethet.
A kiszolgálói folyamat destabilizálásához vezethet.
Az SQL Server nem engedélyezi olyan típus vagy tag használatát, amely HostProtectionAttribute értéket a HostProtectionResourceSharedState, Synchronization, MayLeakOnAbort vagy ExternalProcessMgmt ad meg. Ez megakadályozza, hogy a szerelvények olyan tagokat hívjanak meg, amelyek engedélyezik az állapot megosztását, szinkronizálást végeznek, erőforrások szivárgását okozhatják a leállításkor, vagy hatással vannak az SQL Server-folyamat integritására.
Nem engedélyezett típusok és tagok
Az alábbi táblázat azokat a típusokat és tagokat azonosítja, amelyek HostProtectionResource értékeit az SQL Server nem engedélyezi.
SQL Server engedélykészletek
Az SQL Server lehetővé teszi, hogy a felhasználók megadják az adatbázisba telepített kód megbízhatósági követelményeit. Amikor a szerelvényeket feltölti az adatbázisba, a szerelvény szerzője három engedélykészlet egyikét adhatja meg az adott szerelvényhez: SAFE, EXTERNAL-ACCESS vagy UNSAFE.
| Engedélykészlet | BIZTONSÁGOS | EXTERNAL-ACCESS | NEM BIZTONSÁGOS |
|---|---|---|---|
| Kódhozzáférés biztonsága | Csak végrehajtás | Végrehajtás + hozzáférés külső erőforrásokhoz | Korlátlan |
| Programozási modell korlátozásai | Igen | Igen | Nincsenek korlátozások |
| Ellenőrizhetőségi követelmény | Igen | Igen | Nem |
| Natív kód meghívásának képessége | Nem | Nem | Igen |
A SAFE a legmegbízhatóbb és legbiztonságosabb mód az engedélyezett programozási modellre vonatkozó korlátozásokkal. A SAFE-kód magas megbízhatósági és biztonsági funkciókkal rendelkezik. A SAFE összeállítások elegendő engedélyt kapnak a számítások elvégzéséhez, a futtatáshoz és a helyi adatbázishoz való hozzáféréshez. A SAFE assembly-eknek ellenőrizhetően típusbiztonságosnak kell lenniük, és nem hívhatnak unmanaged kódot.
EXTERNAL-ACCESS köztes biztonsági lehetőséget biztosít, amely lehetővé teszi, hogy a kód hozzáférjen az adatbázison kívüli erőforrásokhoz, de továbbra is rendelkezik a SAFE megbízhatóságával és biztonságosságával.
A UNSAFE olyan megbízható kód, amelyet csak adatbázis-rendszergazdák hozhatnak létre. Ez a megbízható kód nem rendelkezik kódhozzáférés-korlátozásokkal, és meghívhat nem felügyelt (natív) kódot.
Az SQL Server a gazdagép szintű kódhozzáférési biztonsági irányelvi réteg használatával állít össze egy gazdagép irányelvet, amely az SQL Server-katalógusokban tárolt engedélykészlet alapján a három engedélykészlet egyikét biztosítja. Az adatbázisban futó felügyelt kód mindig megkapja az ilyen kódhozzáférés-engedélykészletek egyikét.
Programozási modell korlátozásai
Az SQL Server felügyelt kódjának programozási modellje olyan függvényeket, eljárásokat és típusokat igényel, amelyek nem igénylik az állapot fenntartását több meghívás során, illetve az állapot megosztását több felhasználói munkamenet között. A korábban leírtaknak megfelelően a megosztott állapot jelenléte kritikus kivételeket okozhat, amelyek befolyásolják az alkalmazás méretezhetőségét és megbízhatóságát.
Ezen szempontok figyelembevételével az SQL Server nem engedélyezi a statikus változók és a statikus adattagok használatát. A SAFE és EXTERNAL-ACCESS szerelvények esetében az SQL Server a CREATE ASSEMBLY időpontban megvizsgálja a szerelvény metaadatait, és nem hozza létre az ilyen szerelvényeket, ha statikus adattagok és változók használatát találja.