Dela via


Serverkonfiguration: strikt clr-säkerhet

gäller för:SQL Server

Styr tolkningen av behörigheten SAFE, EXTERNAL_ACCESSeller UNSAFE i SQL Server. Mer information om dessa behörigheter finns i Designsammansättningar.

Värde Beskrivning
0 Avaktiverad. Tillhandahålls för bakåtkompatibilitet. Det är inte rekommenderat att sätta detta värde till 0.
1 Aktiverat. Gör att databasmotorn ignorerar PERMISSION_SET informationen om sammansättningarna och alltid tolkar dem som UNSAFE. I SQL Server 2017 (14.x) och senare versioner 1 är standardvärdet.

Kodåtkomstsäkerhet stöds inte längre

CLR använder Code Access Security (CAS) i .NET Framework, som inte längre stöds som en säkerhetsgräns. En CLR-sammansättning som skapats med PERMISSION_SET = SAFE kan komma åt externa systemresurser, anropa ohanterad kod och hämta sysadmin-privilegier. I SQL Server 2017 (14.x) och senare versioner clr strict security behandlar SAFE och EXTERNAL_ACCESS sammansättningar som om de är markerade UNSAFE.

Vi rekommenderar att du signerar alla sammansättningar med ett certifikat eller en asymmetrisk nyckel, med en motsvarande inloggning som har beviljats UNSAFE ASSEMBLY behörighet i master-databasen. SQL Server-administratörer kan också lägga till sammansättningar i en lista över sammansättningar som databasmotorn bör lita på. Mer information finns i sys.sp_add_trusted_assembly.

Anmärkningar

När PERMISSION_SET är aktiverat ignoreras alternativen i CREATE ASSEMBLY- och ALTER ASSEMBLY-instruktionerna vid körning, men PERMISSION_SET-alternativen bevaras i metadata. Genom att ignorera det här alternativet minimeras störningar i befintliga kodrader.

CLR strict security är en advanced option.

Efter att du aktiverar strikt säkerhet misslyckas assembly-filer som inte är signerade att läsas in. Du måste antingen ändra eller släppa och återskapa varje sammansättning så att den signeras med ett certifikat eller en asymmetrisk nyckel som har en motsvarande inloggning med behörigheten UNSAFE ASSEMBLY på servern.

Behörigheter

Ändra det här alternativet

Kräver CONTROL SERVER behörighet eller medlemskap i den fasta serverrollen sysadmin .

Skapa en CLR-assembly

Följande behörigheter krävs för att skapa en CLR-sammansättning när CLR strict security är aktiverad:

  • Användaren måste ha behörigheten CREATE ASSEMBLY

  • Ett av följande villkor måste också vara sant:

    • Sammansättningen är signerad med ett certifikat eller en asymmetrisk nyckel som har en motsvarande inloggning med behörigheten UNSAFE ASSEMBLY på servern. Det rekommenderas att signera sammansättningen.

    • Databasen har egenskapen TRUSTWORTHY inställd på ON, och databasen ägs av en inloggning som har behörighet UNSAFE ASSEMBLY på servern. Det här alternativet rekommenderas inte.

Exempel

I följande exempel visas först den aktuella inställningen för clr strict security alternativet och anger sedan alternativvärdet till 1 (aktiverat).

EXECUTE sp_configure 'clr strict security';
GO

EXECUTE sp_configure 'clr strict security', '1';
RECONFIGURE;
GO