Blocco della protezione delle informazioni personali

In questo esempio viene illustrato come controllare le funzionalità correlate alla protezione di un servizio di Windows Communication Foundation (WCF):

  • Crittografando informazioni riservate nel file di configurazione di un servizio.
  • Bloccando gli elementi nel file di configurazione in modo che le sottodirectory nidificate del servizio non possano eseguire l'override delle impostazioni.
  • Controllando la registrazione delle informazioni personali (PII) nei log di traccia e dei messaggi.

Queste funzionalità possono essere utilizzate separatamente o tutte insieme per controllare gli aspetti della protezione di un servizio. Non si tratta di una guida definitiva alla protezione di un servizio di WCF.

I file di configurazione di .NET Framework possono contenere informazioni riservate, ad esempio stringhe di connessione per connettersi ai database. Negli scenari condivisi, ospitati da Web, potrebbe essere auspicabile crittografare queste informazioni nel file di configurazione per un servizio, in modo che i dati contenuti all'interno del file di configurazione siano protetti dagli osservatori esterni. Nella versione 2.0 e successive di .NET Framework è possibile crittografare parti del file di configurazione utilizzando la DPAPI (Windows Data Protection API) o il provider di crittografia RSA. L'aspnet_regiis.exe che utilizza DPAPI o RSA è in grado di crittografare parti selezionate di un file di configurazione.

Negli scenari ospitati da Web è possibile che alcuni servizi siano all'interno di sottodirectory di altri servizi. La semantica predefinita per determinare i valori di configurazione consente ai file di configurazione che si trovano nelle directory nidificate di eseguire l'override dei valori di configurazione della directory padre. In alcune situazioni questo può essere inaccettabile per molteplici ragioni. La configurazione del servizio di WCF supporta il blocco dei valori di configurazione, in modo che la configurazione nidificata possa generare eccezioni quando viene eseguito un servizio nidificato utilizzando valori di configurazione sottoposti a override.

In questo esempio viene illustrato come controllare la registrazione di informazioni personali nei registri di traccia e dei messaggi, come il nome utente e la password. Per impostazione predefinita, la registrazione di informazioni personali note è disattivata. Tuttavia in alcune situazioni la registrazione delle informazioni personali può essere importante per eseguire il debug di un'applicazione. Questo esempio è basato sull'Esempio della guida introduttiva. Questo esempio utilizza inoltre la registrazione di traccia e dei messaggi. Per ulteriori informazioni, vedere l'esempio Traccia e registrazione dei messaggi.

Crittografia degli elementi del file di configurazione

Per motivi di protezione in un ambiente di hosting Web condiviso, potrebbe essere auspicabile crittografare alcuni elementi di configurazione, ad esempio le stringhe di connessione al database che potrebbero contenere informazioni riservate. Un elemento di configurazione può essere crittografato utilizzando lo strumento aspnet_regiis.exe situato nella cartella .NET Framework, ad esempio %WINDIR%\Micrsoft.NET\Framework\v2.0.50727.

Per crittografare i valori nella sezione appSettings di Web.config per l'esempio

  1. Aprire un prompt dei comandi selezionando il menu Start ->Esegui. Digitare cmd, quindi scegliere OK.

  2. Spostarsi alla directory .NET Framework corrente eseguendo il comando seguente: cd %WINDIR%\Micrsoft.NET\Framework\v2.0.50727.

  3. Crittografare le impostazioni di configurazione appSettings nella cartella Web.config eseguendo il comando seguente: aspnet_regiis -pe "appSettings" -app "/servicemodelsamples" -prov "DataProtectionConfigurationProvider".

Ulteriori informazioni sulla crittografia delle sezioni di file di configurazione sono disponibili nelle procedure relative alla configurazione di ASP.NET con DPAPI (Come generare applicazioni ASP.NET protette: autenticazione, autorizzazione e comunicazioni protette- la pagina potrebbe essere in inglese) e nelle procedure relative alla configurazione di ASP.NET con RSA (Procedura: crittografare le sezioni di configurazione in ASP.NET 2.0 utilizzando RSA- la pagina potrebbe essere in inglese).

Blocco degli elementi del file di configurazione

Negli scenari ospitati da Web è possibile che alcuni servizi siano all'interno di sottodirectory di altri servizi. In queste situazioni, i valori di configurazione per il servizio nella sottodirectory vengono calcolati esaminando i valori in Machine.config e unendoli successivamente con i file Web.config delle directory padre, facendo scorrere verso il basso la struttura di directory e unendo infine il file Web.config alla directory che contiene il servizio. Il comportamento predefinito della maggior parte degli elementi di configurazione è di consentire che i file di configurazione presenti nelle sottodirectory eseguano l'override dei valori impostati nelle directory padre. In alcune situazioni potrebbe essere auspicabile impedire che i file di configurazione presenti nelle sottodirectory eseguano l'override dei valori impostati nella configurazione della directory padre.

.NET Framework fornisce un modo per bloccare gli elementi del file di configurazione in modo che le configurazioni che eseguono l'override degli elementi di configurazione bloccati generino eccezioni in fase di esecuzione.

Un elemento di configurazione può essere bloccato specificando l'attributo lockItem per un nodo nel file di configurazione, ad esempio, per bloccare il nodo CalculatorServiceBehavior nel file di configurazione in modo che i servizi calcolatrice nei file di configurazione nidificati non possano modificare il comportamento, è possibile utilizzare la configurazione seguente.

<configuration>
   <system.serviceModel>
      <behaviors> 
          <serviceBehaviors> 
             <behavior name="CalculatorServiceBehavior" lockItem="true"> 
               <serviceMetadata httpGetEnabled="True"/> 
               <serviceDebug includeExceptionDetailInFaults="False" /> 
             </behavior> 
          </serviceBehaviors> 
       </behaviors> 
    </system.serviceModel>
</configuration>

Il blocco degli elementi di configurazione può essere eseguito a livello più granulare. È possibile specificare un elenco di elementi come valore agli lockElements per bloccare un gruppo di elementi all'interno di un insieme di sottoelementi. È possibile specificare un elenco di attributi come valore agli lockAttributes per bloccare un gruppo di attributi all'interno di un elemento. È possibile bloccare un intero insieme di elementi o di attributi, eccetto un elenco selezionato, specificando gli lockAllElementsExcept o gli attributi lockAllAttributesExcept su un nodo.

Configurazione della registrazione di informazioni personali

La registrazione di informazioni personali viene controllata da due opzioni: un'impostazione a livello di computer situata in Machine.config che consente a un amministratore del computer di autorizzare o negare la registrazione di informazioni personali e un'impostazione dell'applicazione che consente a un amministratore dell'applicazione di modificare le autorizzazioni di registrazione di informazioni personali per ogni origine nei file Web.config o App.config.

L'impostazione a livello di computer viene controllata impostando enableLoggingKnownPii su true o false, nell'elemento machineSettings in Machine.config. Ad esempio, gli elementi seguenti consentono alle applicazioni di attivare la registrazione delle informazioni personali.

<configuration>
    <system.serviceModel>
        <machineSettings enableLoggingKnownPii="true" />
    </system.serviceModel>
</configuration>

Nota

Il file Machine.config ha un percorso predefinito: %WINDIR%\Microsoft.NET\Framework\v2.0.50727\CONFIG.

Se l'attributo enableLoggingKnownPii non è presente in Machine.config, la registrazione delle informazioni personali non è consentita.

È possibile abilitare la registrazione delle informazioni personali in un'applicazione impostando l'attributo logKnownPii dell'elemento di origine su true o false nei file Web.config o App.config. Ad esempio, gli elementi seguenti abilitano la registrazione delle informazioni personali per la registrazione di traccia e dei messaggi.

<configuration>
    <system.diagnostics>
        <sources>
            <source name="System.ServiceModel.MessageLogging" logKnownPii="true">
                <listeners> 
                ... 
                </listeners>
            </source>
            <source name="System.ServiceModel" switchValue="Verbose, ActivityTracing">
            <listeners>
        ... 
            </listeners>
            </source>
        </sources>
    </system.diagnostics>
</configuration>

Se l'attributo logKnownPii non è stato specificato, le informazioni personali non vengono registrate.

Le informazioni personali vengono registrate solo se enableLoggingKnownPii è impostato su true e logKnownPii è impostato su true.

Nota

System.Diagnostics ignora tutti gli attributi di tutte le origini tranne la prima elencata nel file di configurazione. Aggiungendo l'attributo logKnownPii alla seconda origine nel file di configurazione non ha alcun effetto.

Nota

Per eseguire questo esempio è necessario modificare manualmente Machine.config. È necessario fare attenzione nel modificare Machine.config, visto che valori o sintassi errati possono impedire l'esecuzione di tutte le applicazioni .NET Framework.

È inoltre possibile crittografare gli elementi del file di configurazione utilizzando DPAPI e RSA. Per ulteriori informazioni, vedere i collegamenti che seguono.

Per impostare, compilare ed eseguire l'esempio

  1. Assicurarsi di aver eseguito la Procedura di installazione singola per gli esempi di Windows Communication Foundation.

  2. Modificare Machine.config per impostare l'attributo enableLoggingKnownPii su true, aggiungendo i nodi padre se necessario.

  3. Per compilare l'edizione in C# o Visual Basic .NET della soluzione, seguire le istruzioni in Generazione degli esempi Windows Communication Foundation.

  4. Per eseguire l'esempio su una configurazione con un solo computer o tra computer diversi, seguire le istruzioni in Esecuzione degli esempi di Windows Communication Foundation.

Per eseguire la pulitura dell'esempio

  1. Modificare Machine.config per impostare l'attributo enableLoggingKnownPii su false.

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.