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_ACCESS
o 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
, SelfAffectingProcessMgmnt
MayLeakOnAbort
ExternalThreading
SelfAffectingThreading
SharedState
SecurityInfrastructure
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 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