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 SAFE
e 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 suON
e il database è di proprietà di un accesso che dispone dell'autorizzazioneUNSAFE 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