Attributi di protezione host e programmazione di integrazione 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. Questi attributi potrebbero essere di interesse per un host di CLR, ad esempio SQL Server. 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).Synchronization
, 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 Creare un di assembly e restrizioni del modello di programmazione dell'integrazione CLR.
Il 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 del HostProtectionAttribute
applica un modello di programmazione che consente di proteggere la stabilità dell'host.
Attributi di protezione host
Gli HPA identificano i tipi o i membri che non soddisfano il modello di programmazione host e rappresentano i livelli crescenti di minaccia per l'affidabilità seguenti:
- 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
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 articoli seguenti identificano tipi e membri i cui valori di HostProtectionResource
SQL Server non sono consentiti.
Gli elenchi in questi articoli sono stati generati dagli assembly supportati. Per altre informazioni, vedere librerie .NET Framework supportate.
In questa sezione
Articolo | Descrizione |
---|---|
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. |
Contenuto correlato
- di sicurezza dall'accesso di codice a CLR
- restrizioni del modello di programmazione di integrazione CLR
- Creare un di assembly