Condividi tramite


Attributi di protezione host e programmazione dell'integrazione con CLR

Common Language Runtime (CLR) fornisce un meccanismo per annotare le interfacce di programmazione dell'applicazione gestita (API) che fanno parte di .NET Framework con determinati attributi che possono essere di interesse per un host di CLR, ad esempio SQL Server, a partire da SQL Server 2005. Di seguito sono riportati alcuni esempi di attributi di protezione host:

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

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

  • ExternalProcessMgmt, che indica se l'API espone una modalità per controllare il processo host.

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

HostProtectionAttribute rappresenta più una modalità per migliorare l'affidabilità che un'autorizzazione di sicurezza, in quanto identifica i costrutti di codice specifici, tipi o metodi, che possono essere disattivati dall'host. L'utilizzo di HostProtectionAttribute impone un modello di programmazione che consente di migliorare 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 un HostProtectionAttribute oggetto che specifica un'enumerazione System.Security.Permissions.HostProtectionResource con un valore di ExternalProcessMgmt, SelfAffectingProcessMgmntMayLeakOnAbortExternalThreadingSelfAffectingThreadingSharedStateSecurityInfrastructureSynchronizationo .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 HostProtectionResource valori 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.

Contenuto della 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.

Vedere anche

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