Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
I centri di sicurezza per l'accesso al codice sono incentrati su questi concetti di base: evidenza, gruppi di codice e set di autorizzazioni denominati. In Reporting Services i componenti Gestione report, Progettazione report e Server di report dispongono di un file di criteri che configura la sicurezza dell'accesso di codice per assembly personalizzati, nonché dati, recapito, rendering ed estensioni di sicurezza. Le sezioni seguenti forniscono una panoramica della sicurezza dell'accesso al codice. Per informazioni più dettagliate sugli argomenti trattati in questa sezione, vedere "Modello di criteri di sicurezza" nella documentazione di Microsoft .NET Framework SDK.
Reporting Services usa la sicurezza dell'accesso al codice perché, anche se il server di report è basato sulla tecnologia ASP.NET, esiste una differenza sostanziale tra un'applicazione ASP.NET tipica e il server di report. Un'applicazione ASP.NET tipica non esegue il codice utente. Reporting Services usa invece un'architettura aperta ed estendibile che consente agli utenti di programmare i file di definizione del report usando l'elemento Code del linguaggio di definizione report e di sviluppare funzionalità specializzate in un assembly personalizzato da utilizzare nei report. Inoltre, gli sviluppatori possono progettare e distribuire estensioni avanzate che migliorano le funzionalità del server di report. Con questa potenza e flessibilità è necessario garantire la massima protezione e sicurezza possibile.
Gli sviluppatori di Reporting Services possono usare qualsiasi assembly .NET Framework nei report e chiamare in modo nativo tutte le funzionalità degli assembly distribuiti nella Global Assembly Cache. L'unico elemento che il server di report può controllare è le autorizzazioni concesse per le espressioni di report e gli assembly personalizzati caricati. In Reporting Services, gli assembly personalizzati ricevono autorizzazioni di sola esecuzione per impostazione predefinita.
Prova
L'evidenza è l'informazione usata da Common Language Runtime (CLR) per determinare un criterio di sicurezza per gli assembly di codice. L'evidenza indica al runtime che il codice ha una particolare caratteristica. Le forme comuni di evidenza includono firme digitali e la posizione di un assembly. L'evidenza può anche essere personalizzata per rappresentare altre informazioni significative per l'applicazione.
Sia gli assembly che i domini applicazione ricevono autorizzazioni in base all'evidenza. Ad esempio, il percorso di un assembly a cui Reporting Services sta tentando di accedere è una forma comune di evidenza per gli assembly con nome debole. Questa operazione è nota come evidenza URL. L'evidenza dell'URL per un'estensione per l'elaborazione dati personalizzata distribuita in un server di report potrebbe essere "C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.FsiDataExtension.dll". Il nome sicuro o la firma digitale di un assembly è un'altra forma comune di evidenza. In questo caso, l'evidenza è le informazioni sulla chiave pubblica per un assembly.
Gruppi di codice
Un gruppo di codice è un raggruppamento logico di codice con una condizione specificata per l'appartenenza. Qualsiasi codice che soddisfi la condizione di appartenenza viene incluso nel gruppo. Gli amministratori configurano un criterio di sicurezza gestendo i gruppi di codice e i relativi set di autorizzazioni associati.
Una condizione di appartenenza per un gruppo di codice si basa sull'evidenza. Ad esempio, l'appartenenza a un URL per un gruppo di codice si basa sull'evidenza dell'URL. Common Language Runtime (CLR) usa caratteristiche di identificazione, ad esempio l'evidenza url, per descrivere il codice e determinare se la condizione di appartenenza di un gruppo è stata soddisfatta. Ad esempio, se la condizione di appartenenza di un gruppo di codice è "codice nell'assembly C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.FsiDataExtension.dll", il runtime esamina l'evidenza per determinare se il codice ha origine da tale posizione. Un esempio di voce di configurazione per questo tipo di gruppo di codice potrebbe essere simile al seguente:
<CodeGroup class="UnionCodeGroup"
version="1"
PermissionSetName="FullTrust"
Name="MyCodeGroup"
Description="Code group for my data processing extension">
<IMembershipCondition class="UrlMembershipCondition"
version="1"
Url="C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.FsiDataExtension.dll"
/>
</CodeGroup>
È consigliabile collaborare con l'amministratore di sistema o l'esperto di distribuzione delle applicazioni per determinare il tipo di sicurezza e gruppi di codice di accesso al codice richiesti dagli assembly personalizzati o dalle estensioni di Reporting Services.
Set di autorizzazioni denominati
Un set di autorizzazioni denominato è un set di autorizzazioni che gli amministratori possono associare a un gruppo di codice. La maggior parte dei set di autorizzazioni denominati è costituita da almeno un'autorizzazione, un nome e una descrizione per il set di autorizzazioni. Gli amministratori possono usare set di autorizzazioni denominati per stabilire o modificare i criteri di sicurezza per i gruppi di codice. È possibile associare più gruppi di codice allo stesso set di autorizzazioni denominato. CLR fornisce set di autorizzazioni denominati predefiniti; tra questi sono Nothing, Execution, Internet, LocalIntranet, Everything e FullTrust.
Annotazioni
I dati personalizzati, il recapito, il rendering e le estensioni di sicurezza in Reporting Services devono essere eseguiti nel set di autorizzazioni FullTrust . Collaborare con l'amministratore di sistema per aggiungere i gruppi di codice e le condizioni di appartenenza appropriati per le estensioni di Reporting Services.
È possibile associare livelli personalizzati di autorizzazioni per gli assembly personalizzati usati con i report. Ad esempio, se si vuole consentire a un assembly di accedere a un file specifico, è possibile creare un nuovo set di autorizzazioni denominato con accesso I/O di file specifico e quindi assegnare il set di autorizzazioni al gruppo di codice. Il set di autorizzazioni seguente concede l'accesso in sola lettura al file MyFile.xml:
<PermissionSet class="NamedPermissionSet"
version="1"
Name="MyNewFilePermissionSet"
Description="A special permission set that grants read access to my file.">
<IPermission class="FileIOPermission"
version="1"
Read="C:\MyFile.xml"/>
<IPermission class="SecurityPermission"
version="1"
Flags="Assertion, Execution"/>
</PermissionSet>
Un gruppo di codice a cui si concede questo set di autorizzazioni potrebbe essere simile al seguente:
<CodeGroup class="UnionCodeGroup"
version="1"
PermissionSetName="MyNewFilePermissionSet"
Name="MyNewCodeGroup"
Description="A special code group for my custom assembly.">
<IMembershipCondition class="UrlMembershipCondition"
version="1"
Url="C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin\MyCustomAssembly.dll"/>
</CodeGroup>