Informazioni sui criteri di sicurezzaUnderstanding Security Policies

Qualsiasi codice eseguito da un server di report deve far parte di criteri di sicurezza dall'accesso di codice specifici.Any code that is executed by a report server must be part of a specific code access security policy. Tali criteri di sicurezza sono costituiti da gruppi di codice che eseguono il mapping dell'evidenza a un insieme di set di autorizzazioni denominati.These security policies consist of code groups that map evidence to a set of named permission sets. I gruppi di codice sono spesso associati a un set di autorizzazioni denominato che specifica le autorizzazioni consentite per il codice appartenente al gruppo specifico.Often, code groups are associated with a named permission set that specifies the allowable permissions for code in that group. In fase di esecuzione l'evidenza viene usata da un host trusted o dal caricatore per determinare i gruppi di codice cui il codice appartiene e, di conseguenza, le autorizzazioni per concedere il codice.The runtime uses evidence provided by a trusted host or by the loader to determine which code groups the code belongs to and, therefore, which permissions to grant the code. Reporting ServicesReporting Services aderisce a questo tipo di architettura relativa ai criteri di sicurezza come definito da Common Language Runtime (CLR) di MicrosoftMicrosoft .NET Framework.NET Framework. adheres to this security policy architecture as defined by the MicrosoftMicrosoft .NET Framework.NET Framework common language runtime (CLR). Nelle sezioni seguenti vengono descritti i diversi tipi di codice in Reporting ServicesReporting Services e le regole dei criteri associate.The following sections describe the various types of code in Reporting ServicesReporting Services and the policy rules associated with them.

Assembly del server di reportReport Server Assemblies

Gli assembly del server di report contengono codice incluso nel prodotto Reporting ServicesReporting Services.Report server assemblies are those that contain code that is part of the Reporting ServicesReporting Services product. Reporting ServicesReporting Services viene scritto usando assembly del codice gestito. Tutti questi assembly hanno un nome sicuro, ossia sono firmati digitalmente. is written using managed code assemblies; all of these assemblies are strong-named (that is, digitally signed). I gruppi di codice per questi assembly vengono definiti usando StrongNameMembershipCondition, che offre evidenza basata sulle informazioni relative alla chiave pubblica per il nome sicuro dell'assembly.The code groups for these assemblies are defined using the StrongNameMembershipCondition, which provides evidence based on public key information for the assembly's strong name. Al gruppo di codice viene concesso il set di autorizzazioni FullTrust.The code group is granted the FullTrust permission set.

Estensioni del server di report (rendering, dati, recapito e sicurezza)Report Server Extensions (Rendering, Data, Delivery, and Security)

Le estensioni del server di report sono estensioni per dati personalizzati, per il recapito, per il rendering e di sicurezza create dall'utente o da terze parti per estendere le funzionalità di Reporting ServicesReporting Services.Report server extensions are custom data, delivery, rendering, and security extensions that you or other third-parties create in order to extend the functionality of Reporting ServicesReporting Services. È necessario concedere l'autorizzazione FullTrust a queste estensioni o al codice assembly nei file di configurazione dei criteri associati al componente di Reporting ServicesReporting Services a cui viene applicata l'estensione.You must grant FullTrust to these extensions or assembly code in the policy configuration files associated with the Reporting ServicesReporting Services component you are extending. Le estensioni incluse in Reporting ServicesReporting Services sono firmate con la chiave pubblica del server di report e ricevono il set di autorizzazioni FullTrust.Extensions shipped as a part of Reporting ServicesReporting Services are signed with the report server public key and receive the FullTrust permission set.

Importante

Per concedere l'autorizzazione FullTrust alle estensioni di terze parti è necessario modificare i file di configurazione dei criteri di Reporting ServicesReporting Services.You must modify the Reporting ServicesReporting Services policy configuration files to allow FullTrust for any third-party extensions. Se non si aggiunge un gruppo di codice con autorizzazione FullTrust per le estensioni personalizzate, queste non potranno essere usate dal server di report.If you do not add a code group with FullTrust for your custom extensions, they cannot be used by the report server.

Per altre informazioni sui file di configurazione dei criteri in Reporting ServicesReporting Services, vedere Uso di file di criteri di sicurezza di Reporting Services.For more information about the policy configuration files in Reporting ServicesReporting Services, see Using Reporting Services Security Policy Files.

Espressioni usate nei reportExpressions Used in Reports

Le espressioni del report sono espressioni di codice inline o metodi definiti dall'utente contenuti nell'elemento Code di un file RDL.Report expressions are inline code expressions or user-defined methods contained within the Code element of a report definition language file. Nei file dei criteri è disponibile un gruppo di codice già configurato che concede a queste espressioni il set di autorizzazioni Execution per impostazione predefinita.There is a code group that is already configured in the policy files that grants these expressions the Execution permission set by default. Il gruppo di codice è analogo al seguente:The code group looks like the following:

<CodeGroup  
   class="UnionCodeGroup"  
   version="1"  
   PermissionSetName="Execution"  
   Name="Report_Expressions_Default_Permissions"  
   Description="This code group grants default permissions for code in report expressions and Code element. ">  
    <IMembershipCondition  
       class="StrongNameMembershipCondition"  
       version="1"  
       PublicKeyBlob="002400..."  
    />  
</CodeGroup>  

L'autorizzazione Execution consente l'esecuzione del codice che non può tuttavia usare le risorse protette.Execution permission allows code to run (execute), but not to use protected resources. Tutte le espressioni presenti all'interno di un report vengono compilate in un assembly (denominato assembly "delle espressioni") archiviato come parte del report compilato.All expressions found within a report are compiled into an assembly (called an "expression host" assembly) that is stored as a part of the compiled report. Quando il report viene eseguito, il server di report carica l'assembly delle espressioni ed effettua chiamate in tale assembly per eseguire le espressioni.When the report is executed, the report server loads the expression host assembly and makes calls into that assembly to execute expressions. Gli assembly delle espressioni vengono firmati con una chiave specifica usata per definire il gruppo di codice per tutte le espressioni.Expression host assemblies are signed with a specific key that is used to define the code group for all expression hosts.

Le espressioni del report fanno riferimento a raccolte di modelli a oggetti del report (campi, parametri e così via) ed eseguono semplici attività, ad esempio operazioni aritmetiche e di stringa.Report expressions reference report object model collections (fields, parameters, etc.) and perform simple tasks like arithmetic and string operations. Per il codice che esegue queste semplici operazioni è necessaria solo l'autorizzazione Execution.Code that performs these simple operations only requires Execution permission. Per impostazione predefinita, ai metodi definiti dall'utente nell'elemento Code e agli assembly personalizzati viene concessa l'autorizzazione Execution in Reporting ServicesReporting Services.By default, user-defined methods in the Code element and any custom assemblies are granted Execution permission in Reporting ServicesReporting Services. Di conseguenza, per la maggior parte delle espressioni, non è necessario modificare alcun file di criteri di sicurezza per la configurazione corrente.Thus, for most expressions, the current configuration does not require that you modify any security policy files. Per concedere autorizzazioni aggiuntive agli assembly delle espressioni, è necessario che un amministratore modifichi i file di configurazione dei criteri del server di report e di Progettazione report e il gruppo di codice delle espressioni del report.To grant additional permissions to expression host assemblies, an administrator needs to modify the policy configuration files of the report server and Report Designer, and change the report expressions code group. Poiché è un'impostazione globale, la modifica di autorizzazioni predefinite per le espressioni influisce su tutti i report.Because it is a global setting, changing default permissions for the expression hosts affects all reports. Per tale ragione, è consigliabile posizionare tutto il codice per cui è necessario usare sicurezza aggiuntiva in un assembly personalizzato.For this reason, it is highly recommended that you place all code that requires additional security into a custom assembly. Le autorizzazioni necessarie verranno concesse solo a tale assembly.Only this assembly will be granted the permissions you need.

Importante

Affinché sia possibile usarlo nei report, il codice che effettua chiamate ad assembly esterni oppure a risorse protette deve essere incorporato in un assembly personalizzato.Code that calls external assemblies or protected resources should be incorporated into a custom assembly for use in reports. In questo modo è possibile esercitare maggiore controllo sulle autorizzazioni richieste e asserite dal codice.Doing so gives you more control over the permissions requested and asserted by your code. È consigliabile non effettuare chiamate ai metodi protetti all'interno dell'elemento Code.You should not make calls to secure methods within the Code element. Per farlo è infatti necessario concedere l'autorizzazione FullTrust all'host delle espressioni del report e a tutto il codice personalizzato verrà concesso l'accesso completo a CLR.Doing so requires you to grant FullTrust to the report expression host and grants all custom code full access to the CLR.

Attenzione

Non concedere l'autorizzazione FullTrust al gruppo di codice per un host delle espressioni del report.Do not grant FullTrust to the code group for a report expression host. In caso contrario, a tutte le espressioni del report viene consentito di effettuare chiamate di sistema protette.If you do, you enable all report expressions to make protected system calls.

Assembly personalizzati cui si fa riferimento nei reportCustom Assemblies Referenced in Reports

Alcune espressioni del report possono chiamare assembly del codice di terze parti, denominati assembly personalizzati in Reporting ServicesReporting Services.Some report expressions can call third-party code assemblies, also known in Reporting ServicesReporting Services as custom assemblies. Per essere usati in un server di report, è necessario che a questi assembly sia concessa almeno l'autorizzazione Execution nei file di configurazione dei criteri.The report server expects these assemblies to have at least Execution permission in the policy configuration files. Per impostazione predefinita, i file dei criteri inclusi in Reporting ServicesReporting Services concedono l'autorizzazione Execution a tutti gli assembly avviati dall'area Risorse del computer.By default, policy files that ship with Reporting ServicesReporting Services grant Execution permission to all assemblies starting from the 'My Computer' zone. È possibile concedere autorizzazioni aggiuntive agli assembly personalizzati in base alle proprie esigenze.You can grant additional permissions to custom assemblies as needed.

In alcuni casi, potrebbe essere necessario eseguire un'operazione che richiede autorizzazioni per il codice specifiche in un'espressione del report.In some cases, you may need to perform an operation that requires specific code permissions in a report expression. Se si verifica questa situazione, in genere un'espressione del report deve effettuare una chiamata a un metodo della libreria CLR protetto, ad esempio un metodo che esegue l'accesso ai file oppure al Registro di sistema.Typically, this means that a report expression needs to make a call to a secured CLR library method (such as one that accesses files or the system registry). Nella documentazione di .NET Framework.NET Framework vengono descritte le autorizzazioni per il codice necessarie per effettuare la chiamata protetta. Al codice che esegue quest'ultima operazione è necessario concedere tali autorizzazioni di sicurezza specifiche.The .NET Framework.NET Framework documentation describes the code permissions that are required to make this secure call; to execute the call, the calling code must be granted these specific, secure permissions. Se si effettua una chiamata da un'espressione del report o dall'elemento Code è necessario concedere all'assembly delle espressioni le autorizzazioni appropriate.If you make the call from a report expression or the Code element, the expression host assembly must be granted the appropriate permissions. Una volta concesse alle espressioni, tuttavia, le autorizzazioni specifiche vengono concesse a tutto il codice eseguito in tutte le espressioni di qualsiasi report.However, once you grant the expression host the permissions, all code that runs in any expression in any report is now granted that specific permission. L'esecuzione della chiamata da un assembly personalizzato cui sono state concesse le autorizzazioni specifiche è molto più sicura a livello di sicurezza.It is much more secure to make the call from a custom assembly and grant that custom assembly the specific permissions.

Vedere ancheSee Also

Sicurezza dall'accesso di codice in Reporting Services Code Access Security in Reporting Services
Sviluppo sicuro (Reporting Services)Secure Development (Reporting Services)