Configurazione del server: clr strict security

Si applica a: SQL Server

Controlla l'interpretazione delle autorizzazioni SAFE, EXTERNAL_ACCESS o UNSAFE in SQL Server. Per altre informazioni su queste autorizzazioni, vedere Progettazione di assembly.

valore Descrizione
0 Disabilitati. Disponibile per compatibilità con le versioni precedenti. L'impostazione di questo valore su 0 non è consigliata.
1 Abilitati. Indica al motore di database di ignorare le informazioni PERMISSION_SET sugli assembly e di interpretarli sempre come UNSAFE. In SQL Server 2017 (14.x) e versioni successive, 1 il valore predefinito.

La sicurezza dall’accesso di codice non è più supportata

CLR usa la Sicurezza dall'accesso di codice (CAS, Code Access Security) in .NET Framework, non più supportata come limite di sicurezza. Un assembly CLR creato con PERMISSION_SET = SAFE potrebbe essere in grado di accedere alle risorse di sistema esterne, chiamare codice non gestito e acquisire privilegi sysadmin. In SQL Server 2017 (14.x) e versioni successive, clr strict security considera SAFEe EXTERNAL_ACCESS assembly come se fossero contrassegnati come UNSAFE.

Si consiglia di firmare tutti gli assembly con un certificato o una chiave asimmetrica tramite un account di accesso corrispondente che disponga dell'autorizzazione UNSAFE ASSEMBLY nel database master. Gli amministratori di SQL Server possono anche aggiungere assembly a un elenco di assembly, considerato attendibile dal motore di database. Per altre, vedere sys.sp_add_trusted_assembly.

Osservazioni:

Quando abilitata, l'opzione PERMISSION_SET nelle istruzioni CREATE ASSEMBLY e ALTER ASSEMBLY viene ignorata durante l'esecuzione, ma le opzioni PERMISSION_SET vengono mantenute nei metadati. Ignorando questa opzione, si ridurranno al minimo le interruzioni nelle istruzioni di codice esistenti.

CLR strict security è di tipo advanced option.

Dopo l'abilitazione di strict security, tutti gli assembly non firmati non vengono caricati. È necessario modificare oppure eliminare e ricreare ogni assembly in modo che sia firmato con un certificato o una chiave asimmetrica con un account di accesso corrispondente con l'autorizzazione UNSAFE ASSEMBLY nel server.

Autorizzazioni

Modifica questa opzione

È richiesta l'autorizzazione CONTROL SERVER o l'appartenenza al ruolo predefinito del server sysadmin.

Creare un assembly CLR

Sono necessarie le autorizzazioni seguenti per creare un assembly CLR con CLR strict security abilitata:

  • L'utente deve disporre dell'autorizzazione CREATE ASSEMBLY

  • Una delle condizioni seguenti deve essere rispettata:

    • L'assembly è firmato con un certificato o una chiave asimmetrica con un account di accesso corrispondente con l'autorizzazione UNSAFE ASSEMBLY nel server. È consigliabile firmare l'assembly.

    • La proprietà TRUSTWORTHY del database è impostata su ON e il database è di proprietà di un accesso che dispone dell'autorizzazione UNSAFE ASSEMBLY nel server. Questa opzione non è consigliata.

Esempi

L'esempio seguente mostra prima di tutto l'impostazione corrente dell'opzione clr strict security, quindi impostare il valore su 1 (abilitato).

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