SQL Server programozási és gazdagépvédelmi attribútumok
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 a EXTERNAL-ACCESS engedélykészleten belül végrehajtó kódnak kerülnie kell az attribútummal rendelkező HostProtectionAttribute bizonyos típusokat vagy tagokat. Ez HostProtectionAttribute nem olyan biztonsági engedély, mint megbízhatósági garancia abban, hogy azonosítja azokat a kódszerkezeteket, akár típusokat, akár módszereket, amelyeket a gazdagép elutasíthat. A használata kényszeríti a HostProtectionAttribute programozási modellt, amely segít megvédeni a gazdagép stabilitását.
Feljegyzé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épvé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 következő növekvő szintjét 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 HostProtectionAttributeHostProtectionResourceSharedStatea , Synchronization, MayLeakOnAbortvagy .ExternalProcessMgmt Ez megakadályozza, hogy a szerelvények olyan tagokat hívjanak meg, amelyek engedélyezik a megosztási állapotot, szinkronizálást hajtanak végre, erőforrásszivárgást okozhatnak a leállításkor, vagy befolyásolhatják az SQL Server-folyamat integritását.
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 | KÜLSŐ HOZZÁFÉRÉS | 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 | Nem korlátozott |
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 szerelvények elegendő engedélyt kapnak a futtatáshoz, a számítások elvégzéséhez és a helyi adatbázishoz való hozzáféréshez. A SAFE szerelvényeknek ellenőrizhetően biztonságosnak kell lenniük, és nem hívhatnak nem felügyelt kódot.
Az EXTERNAL-ACCESS egy 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épszintű kódhozzáférési biztonsági házirendréteg használatával állít be egy gazdagépházirendet, amely az SQL Server-katalógusokban tárolt engedélykészlet alapján a három engedélycsoport 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 a több meghívásban vagy az állapot több felhasználói munkamenetben való megosztását. 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 AS Standard kiadás MBLY 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.