Sicurezza dall'accesso di codice in Reporting ServicesCode Access Security in Reporting Services

La sicurezza dall'accesso di codice si basa su tre concetti principali, ovvero evidenza, gruppi di codice e set di autorizzazione denominati.Code access security centers on these core concepts: evidence, code groups, and named permission sets. In Reporting ServicesReporting Services i componenti Gestione report, Progettazione report e server di report dispongono ognuno di un file di criteri che configura la sicurezza dall'accesso di codice per assembly personalizzati ed estensioni per i dati, il recapito, il rendering e di sicurezza.In Reporting ServicesReporting Services, the Report Manager, Report Designer, and Report Server components each have a policy file that configures code access security for custom assemblies as well as data, delivery, rendering, and security extensions. Nelle sezioni seguenti viene fornita una panoramica sulla sicurezza dall'accesso di codice.The following sections provide an overview of code access security. Per ulteriori informazioni sugli argomenti trattati in questa sezione, vedere "Modello di criteri di sicurezza" nel MicrosoftMicrosoft .NET Framework.NET Framework documentazione SDK.For more detailed information about the topics covered in this section, see "Security Policy Model" in the MicrosoftMicrosoft .NET Framework.NET Framework SDK documentation.

In Reporting ServicesReporting Services la sicurezza dall'accesso di codice viene utilizzata perché, anche se il server di report è compilato in base a tecnologia ASP.NETASP.NET, è presente una differenza sostanziale tra un'applicazione ASP.NETASP.NET tipica e il server di report. Reporting ServicesReporting Services uses code access security because, although the report server is built on ASP.NETASP.NET technology, there is a substantial difference between a typical ASP.NETASP.NET application and the report server. Mentre un'applicazione ASP.NETASP.NET tipica non esegue codice utente,A typical ASP.NETASP.NET application does not execute user code. Al contrario, Reporting ServicesReporting Services utilizza un'architettura aperta ed estensibile che consente agli utenti di programmare in base al file di definizione del report utilizzando il codice elemento del linguaggio di definizione del Report e di sviluppare funzionalità specifiche in un assembly personalizzato da utilizzare nei report.In contrast, Reporting ServicesReporting Services uses an open and extensible architecture that allows users to program against the report definition files using the Code element of the Report Definition Language and to develop specialized functionality into a custom assembly for use in reports. Gli sviluppatori possono inoltre progettare e distribuire estensioni potenti che consentono di ottimizzare le funzionalità del server di report.Furthermore, developers can design and deploy powerful extensions that enhance the capabilities of the report server. Queste caratteristiche di potenza e flessibilità determinano la necessità di utilizzare il maggior livello di sicurezza possibile.With this power and flexibility comes the need to provide as much protection and security as possible.

Gli sviluppatori di Reporting ServicesReporting Services possono utilizzare qualsiasi assembly di .NET Framework.NET Framework nei report e sfruttare tutte le funzionalità degli assembly distribuiti nella Global Assembly Cache (CAG). Reporting ServicesReporting Services developers can use any .NET Framework.NET Framework assembly in their reports and natively call upon all of the functionality of assemblies deployed to the global assembly cache. L'unico elemento che il server di report può controllare sono le autorizzazioni concesse per le espressioni del report e per gli assembly personalizzati caricati.The only thing that the report server can control is what permissions are given for report expressions and loaded custom assemblies. In Reporting ServicesReporting Services, assembly personalizzati ricevano Execute-solo le autorizzazioni per impostazione predefinita.In Reporting ServicesReporting Services, custom assemblies receive Execute-only permissions by default.

EvidenzaEvidence

Per evidenza si intendono le informazioni utilizzate da Common Language Runtime (CLR) per stabilire criteri di sicurezza per gli assembly del codice.Evidence is the information that the common language runtime (CLR) uses to determine a security policy for code assemblies. In fase di esecuzione l'evidenza indica che al codice sono associate caratteristiche specifiche.Evidence indicates to the runtime that code has a particular characteristic. Forme comuni di evidenza includono ad esempio le firme digitali e il percorso di un assembly.Common forms of evidence include digital signatures and the location of an assembly. È possibile inoltre personalizzare l'evidenza per rappresentare altre informazioni significative per l'applicazione.Evidence can also be custom designed to represent other information that is meaningful to the application.

Sia agli assembly che ai domini applicazione vengono concesse autorizzazioni sulla base dell'evidenza.Both assemblies and application domains receive permissions based on evidence. Il percorso di un assembly cui Reporting ServicesReporting Services sta eseguendo l'accesso è ad esempio una forma comune di evidenza per assembly con nome non sicuro,For example, the location of an assembly that Reporting ServicesReporting Services is attempting to access is one common form of evidence for weak-named assemblies. nota come evidenza URL.This is known as URL evidence. L'evidenza URL per un'estensione per l'elaborazione dei dati personalizzata distribuita in un server di report potrebbe essere "C:\Programmi\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.FsiDataExtension.dll".URL evidence for a custom data processing extension deployed to a report server might be "C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.FsiDataExtension.dll". Il nome sicuro o firma digitale di un assembly è un altra forma comune di evidenza.The strong name or digital signature of an assembly is another common form of evidence. In questo caso, l'evidenza è rappresentata dalle informazioni sulla chiave pubblica per un assembly.In this case, the evidence is the public key information for an assembly.

Gruppi di codiceCode Groups

Un gruppo di codice è un raggruppamento logico di codice per appartenere al quale è necessario rispettare a una specifica condizione.A code group is a logical grouping of code that has a specified condition for membership. Ogni codice che soddisfa la condizione di appartenenza viene incluso nel gruppo.Any code that meets the membership condition is included in the group. Gli amministratori configurano i criteri di sicurezza mediante la gestione dei gruppi di codice e dei set di autorizzazioni associati.Administrators configure a security policy by managing code groups and their associated permission sets.

Una condizione di appartenenza per un gruppo di codice si basa sull'evidenza.A membership condition for a code group is based on evidence. Un'appartenenza URL per un gruppo di codice, ad esempio, si basa sull'evidenza URL.For example, a URL membership for a code group is based on URL evidence. Per descrivere il codice e per verificare se è stata soddisfatta la condizione di appartenenza a un gruppo, Common Language Runtime utilizza le caratteristiche di identificazione, ovvero l'evidenza URL.The common language runtime (CLR) uses identifying characteristics such as URL evidence to describe the code and to determine whether a group's membership condition has been met. Ad esempio, se la condizione di appartenenza di un gruppo di codice è "codice nell'assembly C:\Programmi\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.FsiDataExtension.dll", in fase di esecuzione viene esaminata l'evidenza per determinare se il codice ha origine in quel percorso.For example, if the membership condition of a code group is "code in the assembly C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin\Microsoft.Samples.ReportingServices.FsiDataExtension.dll", the runtime examines the evidence to determine whether the code originates from that location. Un esempio di una voce di configurazione per questo tipo di gruppo di codice potrebbe essere analogo al seguente:An example of a configuration entry for this type of code group might look like the following:

<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>  

Per determinare il tipo di sicurezza dall'accesso di codice e i gruppi di codice necessari agli assembly personalizzati o alle estensioni di Reporting ServicesReporting Services, è necessario rivolgersi all'amministratore di sistema o agli esperti di distribuzione di applicazioni.You should work with your system administrator or application deployment expert to determine the type of code access security and code groups that your custom assemblies or Reporting ServicesReporting Services extensions require.

Set di autorizzazioni denominatiNamed Permission Sets

Un set di autorizzazioni denominato è un set di autorizzazioni che gli amministratori possono associare a un gruppo di codice.A named permission set is a set of permissions that administrators can associate with a code group. La maggior parte dei set di autorizzazioni è costituito almeno da un'autorizzazione, un nome e una descrizione per il set stesso.Most named permission sets consist of at least one permission, a name, and description for the permission set. Gli amministratori possono utilizzare i set di autorizzazioni denominati per stabilire o modificare i criteri di sicurezza per i gruppi di codice.Administrators can use named permission sets to establish or modify the security policy for code groups. A uno stesso set di autorizzazioni denominati possono essere associati più gruppi di codice.More than one code group can be associated with the same named permission set. CLR fornisce i set di autorizzazioni denominati incorporati. tra questi vi sono nulla, esecuzione, Internet, LocalIntranet, tutto, e FullTrust.The CLR provides built-in named permission sets; among these are Nothing, Execution, Internet, LocalIntranet, Everything, and FullTrust.

Nota

Le estensioni personalizzate di dati, recapito, rendering e sicurezza in Reporting ServicesReporting Services deve essere eseguito utilizzando il FullTrust set di autorizzazioni.Custom data, delivery, rendering, and security extensions in Reporting ServicesReporting Services must run under the FullTrust permission set. Per aggiungere il gruppo di codice appropriato e le condizioni di appartenenza per le estensioni di Reporting ServicesReporting Services, rivolgersi all'amministratore di sistema.Work with your system administrator to add the appropriate code group and membership conditions for your Reporting ServicesReporting Services extensions.

È possibile associare livelli personalizzati di autorizzazioni per assembly personalizzati utilizzati con i report.You can associate your own custom levels of permissions for custom assemblies that you use with reports. Se ad esempio si desidera consentire a un assembly di accedere a un file specifico, è possibile creare un nuovo set di autorizzazioni denominato con accesso I/O al file specifico e assegnare quindi il set di autorizzazioni al gruppo di codice.For example, if you want to allow an assembly to access a specific file, you can create a new named permission set with specific file I/O access and then assign the permission set to your code group. Nel set di autorizzazioni seguente viene concesso l'accesso in sola lettura al file MyFile.xml:The following permission set grants read-only access to the 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 cui si concede questo set di autorizzazioni potrebbe essere analogo al seguente:A code group that you grant this permission set might look like the following:

<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>  

Vedere ancheSee Also

Proteggere Development ( Reporting Services )Secure Development (Reporting Services)