Attributi di protezione host e programmazione dell'integrazione con CLR

Si applica a: SQL Server

Common Language Runtime (CLR) fornisce un meccanismo per annotare le API (Managed Application Programming Interface) che fanno parte di .NET Framework con determinati attributi di interesse per un host di CLR, ad esempio SQL Server, a partire da SQL Server 2005 (9.x). Di seguito sono riportati alcuni esempi di attributi di protezione host:

  • SharedState, che indica se l'API espone la possibilità di creare o gestire lo stato condiviso , ad esempio campi di classe statici.

  • Sincronizzazione, che indica se l'API espone la possibilità di eseguire la sincronizzazione tra thread.

  • ExternalProcessMgmt, che indica se l'API espone un modo per controllare il processo host.

Dato questi attributi, SQL Server specifica un elenco di HPA non consentiti nell'ambiente ospitato tramite la sicurezza dell'accesso al codice. I requisiti cas vengono specificati da uno dei tre set di autorizzazioni di SQL Server: SAFE, EXTERNAL_ACCESS o UNSAFE. Uno di questi tre livelli di sicurezza viene specificato quando l'assembly viene registrato nel server usando l'istruzione CREATE ASSEMBLY . Il codice in esecuzione all'interno dei set di autorizzazioni SAFE o EXTERNAL_ACCESS deve evitare determinati tipi o membri con l'attributo System.Security.Permissions.HostProtectionAttribute applicato. Per altre informazioni, vedere Creazione di un assembly e restrizioni del modello di programmazione dell'integrazione CLR.

HostProtectionAttribute non è un'autorizzazione di sicurezza tanto quanto un modo per migliorare l'affidabilità, in quanto identifica costrutti di codice specifici, tipi o metodi, che l'host potrebbe non consentire. L'uso di HostProtectionAttribute applica un modello di programmazione che consente di proteggere la stabilità dell'host.

Attributi di protezione host

Gli attributi di protezione host identificano i tipi o i membri non inclusi nel modello di programmazione host e rappresentano i livelli di pericolo per l'affidabilità, riportati di seguito in ordine crescente di gravità:

  • Sono altrimenti innocui.

  • Possono determinare la destabilizzazione del codice utente gestito dal server.

  • Possono determinare la destabilizzazione del processo del server stesso.

SQL Server non consente l'uso di un tipo o di un membro con hostProtectionAttribute che specifica un'enumerazione System.Security.Permissions.HostProtectionResource con un valore di ExternalProcessMgmt, ExternalThreading, MayLeakOnAbort, SecurityInfrastructure, SelfAffectingProcessMgmnt, SelfAffectingThreading, SharedState, Synchronization o UI. In questo modo si impedisce agli assembly di chiamare membri che consentono la condivisione dello stato, eseguono sincronizzazioni, possono causare perdite di risorse al momento della terminazione o compromettono l'integrità del processo di SQL Server.

Tipi e membri non consentiti

Gli argomenti seguenti identificano tipi e membri i cui valori HostProtectionResource non sono consentiti da SQL Server.

Nota

Gli elenchi presenti in questi argomenti sono stati generati dagli assembly supportati. Per altre informazioni, vedere Librerie .NET Framework supportate.

In questa sezione

Tipi e membri non consentiti in Microsoft.VisualBasic.dll
Vengono elencati i tipi e i membri di Microsoft.VisualBasic.dll, i cui valori degli attributi di protezione host non sono consentiti.

Tipi e membri non consentiti in mscorlib.dll
Elenca i tipi e i membri in mscorlib.dll, i cui valori degli attributi di protezione host non sono consentiti.

Tipi e membri non consentiti in System.dll
Elenca i tipi e i membri in System.dll, i cui valori degli attributi di protezione host non sono consentiti.

Tipi e membri non consentiti in System.Data.dll
Elenca i tipi e i membri in System.Data.dll, i cui valori degli attributi di protezione host non sono consentiti.

Tipi e membri non consentiti in System.Core.dll
Elenca i tipi e i membri in System.Core.dll, i cui valori degli attributi di protezione host non sono consentiti.

Vedi anche

Sicurezza dall'accesso di codice dell'integrazione con CLR
Restrizioni relative al modello di programmazione dell'integrazione con CLR
Creazione di un assembly