Informazioni sui criteri di sicurezza
Qualsiasi codice eseguito da un server di report deve far parte di criteri di sicurezza dall'accesso di codice specifici. Tali criteri di sicurezza sono costituiti da gruppi di codice che eseguono il mapping dell'evidenza a un insieme di set di autorizzazioni denominati. 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. In fase di esecuzione l'evidenza viene utilizzata 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. Reporting Services aderisce a questo tipo di architettura relativa ai criteri di sicurezza come definito da Common Language Runtime (CLR) di Microsoft .NET Framework. Nelle sezioni seguenti vengono descritti i diversi tipi di codice in Reporting Services e le regole dei criteri associate.
Assembly del server di report
Gli assembly del server di report contengono codice incluso nel prodotto Reporting Services. Reporting Services viene scritto utilizzando assembly del codice gestito. Tutti questi assembly hanno un nome sicuro, ossia sono firmati digitalmente. I gruppi di codice per tali assembly vengono definiti utilizzando StrongNameMembershipCondition, che fornisce evidenza basata sulle informazioni relative alla chiave pubblica per il nome sicuro dell'assembly. Al gruppo di codice viene concesso il set di autorizzazioni FullTrust.
Estensioni del server di report (rendering, dati, recapito e sicurezza)
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 Services. È necessario concedere il set di autorizzazioni FullTrust a tali estensioni o al codice assembly nei file di configurazione dei criteri associati al componente di Reporting Services cui viene applicata l'estensione. Le estensioni fornite come parte di Reporting Services vengono firmate con la chiave pubblica del server di report e ricevono il set di autorizzazioni FullTrust.
![]() |
---|
Per consentire l'utilizzo di FullTrust per qualsiasi estensione di terze parti, è necessario modificare i file di configurazione dei criteri di Reporting Services. Se non si aggiunge un gruppo di codice con FullTrust per le estensioni personalizzate, queste ultime non possono essere utilizzate dal server di report. |
Per ulteriori informazioni sui file di configurazione dei criteri in Reporting Services, vedere Utilizzo di file di criteri di sicurezza di Reporting Services.
Espressioni utilizzate nei report
Le espressioni del report sono espressioni di codice inline o metodi definiti dall'utente contenuti nell'elemento Code di un file RDL. Nei file di criteri è disponibile un gruppo di codice già configurato che concede a tali espressioni il set di autorizzazioni Execution per impostazione predefinita. Il gruppo di codice è analogo al seguente:
<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 al codice di essere eseguito, ma non di utilizzare risorse protette. Tutte le espressioni presenti all'interno di un report vengono compilate in un assembly (denominato assembly "delle espressioni") archiviato come parte del report compilato. Quando il report viene eseguito, il server di report carica l'assembly delle espressioni ed effettua chiamate in tale assembly per eseguire le espressioni. Gli assembly delle espressioni vengono firmati con una chiave specifica utilizzata per definire il gruppo di codice per tutte le espressioni.
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. Per il codice che esegue queste semplici operazioni è necessaria solo l'autorizzazione Execution. Per impostazione predefinita, ai metodi definiti dall'utente nell'elemento Code e a qualsiasi assembly personalizzato viene concessa l'autorizzazione Execution in Reporting Services. Di conseguenza, per la maggior parte delle espressioni, non è necessario modificare alcun file di criteri di sicurezza per la configurazione corrente. 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. Poiché è un'impostazione globale, la modifica di autorizzazioni predefinite per le espressioni influisce su tutti i report. Per tale ragione, è consigliabile posizionare tutto il codice per cui è necessario utilizzare sicurezza aggiuntiva in un assembly personalizzato. Le autorizzazioni necessarie verranno concesse solo a tale assembly.
![]() |
---|
Affinché sia possibile utilizzarlo nei report, il codice che effettua chiamate ad assembly esterni oppure a risorse protette deve essere incorporato in un assembly personalizzato. In questo modo è possibile esercitare maggiore controllo sulle autorizzazioni richieste e asserite dal codice. Non è necessario effettuare chiamate per proteggere metodi all'interno dell'elemento Code. In caso contrario, è necessario concedere l'autorizzazione FullTrust all'espressione del report nonché concedere al codice personalizzato l'accesso completo a CLR. |
![]() |
---|
Non concedere l'autorizzazione FullTrust al gruppo di codice per un'espressione del report. In caso contrario, a tutte le espressioni del report viene consentito di effettuare chiamate di sistema protette. |
Assembly personalizzati cui si fa riferimento nei report
Alcune espressioni del report possono chiamare assembly del codice di terze parti, denominati assembly personalizzati in Reporting Services. Per essere utilizzati in un server di report, è necessario che tali assembly dispongano almeno dell'autorizzazione Execution nei file di configurazione dei criteri. Per impostazione predefinita, i file di criteri forniti con Reporting Services concedono l'autorizzazione Execution a tutti gli assembly avviati dall'area "Computer locale". È possibile concedere autorizzazioni aggiuntive agli assembly personalizzati in base alle proprie esigenze.
In alcuni casi, potrebbe essere necessario eseguire un'operazione che richiede autorizzazioni per il codice specifiche in un'espressione del report. 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. Nella documentazione di .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. Se si effettua la chiamata da un'espressione del report o dall'elemento Code, all'assembly delle espressioni devono essere concesse le autorizzazioni appropriate. Una volta concesse alle espressioni, tuttavia, le autorizzazioni specifiche vengono concesse a tutto il codice eseguito in tutte le espressioni di qualsiasi report. L'esecuzione della chiamata da un assembly personalizzato cui sono state concesse le autorizzazioni specifiche è molto più sicura a livello di sicurezza.