Uzamčení ochrany PII

Ukázka SecurityLockdown ukazuje, jak řídit několik funkcí souvisejících se zabezpečením služby Wcf (Windows Communication Foundation) pomocí:

  • Šifrování citlivých informací v konfiguračním souboru služby

  • Zamykání prvků v konfiguračním souboru tak, aby vnořené podadresáře služby nemohly přepsat nastavení.

  • Řízení protokolování identifikovatelných osobních údajů (PII) v protokolech trasování a zpráv

Diskuse

Každá z těchto funkcí se dá použít samostatně nebo společně k řízení aspektů zabezpečení služby. Toto není konečný průvodce zabezpečením služby WCF.

Konfigurační soubory rozhraní .NET Framework mohou obsahovat citlivé informace, jako jsou připojovací řetězce pro připojení k databázím. Ve sdílených scénářích hostovaných webem může být žádoucí zašifrovat tyto informace v konfiguračním souboru služby tak, aby data obsažená v konfiguračním souboru byla odolná vůči neformálnímu prohlížení. Rozhraní .NET Framework 2.0 a novější má schopnost šifrovat části konfiguračního souboru pomocí programovacího rozhraní aplikace Windows Data Protection (DPAPI) nebo poskytovatele kryptografických služeb RSA. aspnet_regiis.exe pomocí DPAPI nebo RSA může šifrovat vybrané části konfiguračního souboru.

Ve scénářích hostovaných webem je možné mít služby v podadresářích jiných služeb. Výchozí sémantika pro určení hodnot konfigurace umožňuje konfiguračním souborům v vnořených adresářích přepsat konfigurační hodnoty v nadřazeném adresáři. V některých situacích to může být nežádoucí z různých důvodů. Konfigurace služby WCF podporuje uzamčení hodnot konfigurace, takže vnořená konfigurace vyvolá výjimky při spuštění vnořené služby s přepsanými hodnotami konfigurace.

Tato ukázka ukazuje, jak řídit protokolování známých identifikovatelných osobních údajů (PII) v protokolech trasování a zpráv, jako je uživatelské jméno a heslo. Ve výchozím nastavení je protokolování známých PII zakázané, ale v určitých situacích může být protokolování PII důležité při ladění aplikace. Tato ukázka je založená na začínáme. Kromě toho tato ukázka používá trasování a protokolování zpráv. Další informace najdete v ukázce trasování a protokolování zpráv .

Šifrování elementů konfiguračního souboru

Pro účely zabezpečení ve sdíleném prostředí pro hostování webů může být žádoucí zašifrovat určité konfigurační prvky, jako jsou připojovací řetězce databáze, které mohou obsahovat citlivé informace. Konfigurační prvek může být zašifrován pomocí nástroje aspnet_regiis.exe nalezeného ve složce rozhraní .NET Framework, například %WINDIR%\Microsoft.NET\Framework\v4.0.20728.

Zašifrovat hodnoty v části appSettings v Web.config pro ukázku

  1. Otevřete příkazový řádek pomocí příkazu Start-Run>.... cmd Zadejte a klikněte na OK.

  2. Přejděte do aktuálního adresáře rozhraní .NET Framework zadáním následujícího příkazu: cd %WINDIR%\Microsoft.NET\Framework\v4.0.20728.

  3. Zašifrujte nastavení konfigurace appSettings ve složce Web.config zadáním následujícího příkazu: aspnet_regiis -pe "appSettings" -app "/servicemodelsamples" -prov "DataProtectionConfigurationProvider"

Další informace o šifrování oddílů konfiguračních souborů najdete v tématu Postupy pro rozhraní DPAPI v konfiguraci ASP.NET (vytváření zabezpečených ASP.NET aplikací: Ověřování, autorizace a zabezpečená komunikace) a postupy v konfiguraci RSA v ASP.NET (Postupy: Šifrování oddílů konfigurace v ASP.NET 2.0 pomocí RSA).

Uzamykání elementů konfiguračního souboru

Ve scénářích hostovaných webem je možné mít služby v podadresářích služeb. V těchto situacích se hodnoty konfigurace pro službu v podadresáři počítají prozkoumáním hodnot v Machine.config a následným sloučením se všemi Web.config soubory v nadřazených adresářích, které se přesunou dolů do stromu adresáře, a nakonec sloučí Web.config soubor v adresáři, který obsahuje službu. Výchozím chováním většiny konfiguračních prvků je umožnit konfiguračním souborům v podadresářích přepsat hodnoty nastavené v nadřazených adresářích. V některých situacích může být žádoucí zabránit konfiguračním souborům v podadresářích přepisovat hodnoty nastavené v konfiguraci nadřazeného adresáře.

Rozhraní .NET Framework poskytuje způsob, jak uzamknout prvky konfiguračního souboru tak, aby konfigurace, které přepisují uzamčené prvky, vyvolaly výjimky modulu runtime.

Element konfigurace lze uzamknout zadáním atributu lockItem pro uzel v konfiguračním souboru, například uzamčením uzlu CalculatorServiceBehavior v konfiguračním souboru tak, aby služby kalkulačky ve vnořených konfiguračních souborech nemohly změnit chování, lze použít následující konfiguraci.

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

Uzamčení prvků konfigurace může být konkrétnější. Seznam prvků lze zadat jako hodnotu pro lockElements uzamčení sady prvků v kolekci dílčích prvků. Seznam atributů lze zadat jako hodnotu pro lockAttributes uzamčení sady atributů v rámci elementu. Celou kolekci prvků nebo atributů lze uzamknout s výjimkou zadaného seznamu zadáním lockAllElementsExcept atributů nebo lockAllAttributesExcept atributů na uzlu.

Konfigurace protokolování PII

Protokolování PII se řídí dvěma přepínači: nastavení pro celý počítač, které se nachází v Machine.config, které správci počítače umožňuje povolit nebo odepřít protokolování PII a nastavení aplikace, které správci aplikace umožňuje přepínat protokolování PII pro každý zdroj v Web.config nebo App.config souboru.

Nastavení pro celý počítač je řízeno nastavením enableLoggingKnownPii na true nebo false, v prvku machineSettings v Machine.config. Následující příklad umožňuje aplikacím zapnout protokolování PII.

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

Poznámka:

Soubor Machine.config má výchozí umístění: %WINDIR%\Microsoft.NET\Framework\v2.0.50727\CONFIG.

Pokud není přítomen atribut enableLoggingKnownPii v Machine.config, protokolování PII není dovoleno.

Povolení protokolování PII pro aplikaci se provádí nastavením atributu logKnownPii zdrojového prvku na true nebo false v souboru Web.config nebo App.config. Následující příklad umožňuje logování PII pro záznam zpráv i trasovací logování.

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

Pokud není zadán atribut logKnownPii, pak se PII nezaznamenává.

PII se protokoluje pouze v případě, že je enableLoggingKnownPii nastaveno na true, a logKnownPii je nastaveno na true.

Poznámka:

System.Diagnostics ignoruje všechny atributy ve všech zdrojích s výjimkou prvního atributu uvedeného v konfiguračním souboru. Přidání atributu logKnownPii do druhého zdroje v konfiguračním souboru nemá žádný vliv.

Důležité

Ke spuštění této ukázky je třeba ručně upravit Machine.config. Při úpravě Machine.config je třeba pečlivě zamezit nesprávným hodnotám nebo syntaxi, protože nesprávné hodnoty nebo syntaxe mohou zabránit spuštění všech aplikací rozhraní .NET Framework.

Je také možné zašifrovat prvky konfiguračního souboru pomocí DPAPI a RSA. Další informace najdete na následujících odkazech:

Nastavte, sestavte a spusťte ukázku

  1. Ujistěte se, že jste provedli instalační proceduru One-Time pro ukázky Windows Communication Foundation.

  2. Upravte Machine.config a nastavte enableLoggingKnownPii atribut na true, v případě potřeby přidejte nadřazené uzly.

  3. Pokud chcete sestavit verzi C# nebo Visual Basic .NET řešení, postupujte podle pokynů v Sestavení ukázek Windows Communication Foundation.

  4. Pokud chcete spustit ukázku v konfiguraci s jedním počítačem nebo konfiguraci na více počítačích, postupujte podle pokynů v části Spouštění ukázek Windows Communication Foundation.

Vyčištění vzorku

  1. Upravte Machine.config a nastavte enableLoggingKnownPii atribut na false.

Viz také