Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Möjligheten att ladda och köra hanterad kod i en SQL Server-värd kräver att värdens krav för både kodåtkomstsäkerhet och värdresursskydd uppfylls. Säkerhetskraven för kodåtkomst anges av en av tre SQL Server-behörighetsuppsättningar: SAFE, EXTERNAL-ACCESS eller UNSAFE. Kod som körs i behörighetsuppsättningarna SAFE eller EXTERNAL-ACCESS måste undvika vissa typer eller medlemmar som har attributet HostProtectionAttribute tillämpat. HostProtectionAttribute är inte en säkerhetsbehörighet, utan snarare en tillförlitlighetsgaranti genom att den identifierar specifika kodstrukturer, antingen typer eller metoder, som värdsystemet kan neka. Användningen av HostProtectionAttribute framtvingar en programmeringsmodell som skyddar värdens stabilitet.
Anmärkning
Code Access Security (CAS) har föråldrats i alla versioner av .NET Framework och .NET. De senaste versionerna av .NET följer inte CAS-anteckningar och skapar fel om CAS-relaterade API:er används. Utvecklare bör söka alternativa sätt att utföra säkerhetsuppgifter.
Skyddsegenskaper för värdar
Värdskyddsattribut identifierar typer eller medlemmar som inte passar värdprogrammeringsmodellen och representerar följande ökande nivåer av tillförlitlighetshot:
Är annars godartade.
Kan leda till destabilisering av serverhanterad användarkod.
Kan leda till destabilisering av själva serverprocessen.
SQL Server tillåter inte användning av en typ eller medlem som har en HostProtectionAttribute som anger HostProtectionResource värdet SharedState, Synchronization, MayLeakOnAborteller ExternalProcessMgmt. Detta förhindrar att sammansättningarna anropar medlemmar som aktiverar delningstillstånd, utför synkronisering, kan orsaka en resursläcka vid avslutning eller påverka integriteten i SQL Server-processen.
Otillåtna typer och medlemmar
I följande tabell identifieras typer och medlemmar vars värden inte tillåts HostProtectionResource av SQL Server.
SQL Server-behörighetsuppsättningar
MED SQL Server kan användarna ange tillförlitlighetskraven för kod som distribueras till en databas. När sammansättningar laddas upp till databasen kan författaren till sammansättningen ange en av tre behörighetsuppsättningar för den sammansättningen: SAFE, EXTERNAL-ACCESS eller UNSAFE.
| Behörighetsuppsättning | SÄKER | EXTERNAL-ACCESS | OSÄKER |
|---|---|---|---|
| Kodåtkomstsäkerhet | Kör endast | Kör + åtkomst till externa resurser | Obegränsat |
| Begränsningar för programmeringsmodell | Ja | Ja | Inga begränsningar |
| Verifierbarhetskrav | Ja | Ja | Nej |
| Möjlighet att anropa intern kod | Nej | Nej | Ja |
SAFE är det mest tillförlitliga och säkra läget med tillhörande begränsningar när det gäller den tillåtna programmeringsmodellen. SAFE-kod har hög tillförlitlighet och säkerhetsfunktioner. SAFE-sammansättningar har tillräcklig behörighet för att köra, utföra beräkningar och ha åtkomst till den lokala databasen. SAFE-sammansättningar måste vara verifierbart typsäkra och får inte anropa ohanterad kod.
EXTERNAL-ACCESS tillhandahåller ett mellanliggande säkerhetsalternativ som ger kod åtkomst till resurser utanför databasen men som fortfarande har tillförlitligheten och säkerheten för SAFE.
UNSAFE är för mycket betrodd kod som bara kan skapas av databasadministratörer. Den här betrodda koden har inga begränsningar för kodåtkomst och kan anropa ohanterad (intern) kod.
SQL Server använder säkerhetsprinciplagret för kodåtkomst på värdnivå för att konfigurera en värdprincip som ger en av de tre uppsättningarna behörigheter baserat på behörighetsuppsättningen som lagras i SQL Server-kataloger. Hanterad kod som körs i databasen hämtar alltid en av dessa kodåtkomstbehörighetsuppsättningar.
Begränsningar för programmeringsmodell
Programmeringsmodellen för hanterad kod i SQL Server kräver funktioner, procedurer och typer som inte kräver användning av tillstånd för flera anrop eller delning av tillstånd över flera användarsessioner. Som tidigare beskrivits kan förekomsten av delat tillstånd orsaka kritiska undantag som påverkar programmets skalbarhet och tillförlitlighet.
Med tanke på dessa överväganden tillåter SQL Server inte användning av statiska variabler och statiska datamedlemmar. För SAFE och EXTERNAL-ACCESS sammansättningar undersöker SQL Server metadata för sammansättningen vid CREATE ASSEMBLY-tiden och misslyckas med att skapa sådana sammansättningar om den hittar användningen av statiska datamedlemmar och variabler.