Bezpečnostní uzamčení 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ězec 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í ROZHRANÍ 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, aby vnořená konfigurace generovala výjimky při spuštění vnořené služby pomocí přepisovaných hodnot 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 databázové připojovací řetězec, 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.

Šifrování hodnot v aplikaci Nastavení v souboru 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 aplikace Nastavení 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 návodu k 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í konfiguračních oddílů 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 služby v podadresáři počítají prozkoumáním hodnot v machine.config a následným sloučením s libovolnými soubory Web.config v nadřazených adresářích, které se přesunou dolů do stromu adresáře, a nakonec sloučí soubor Web.config v adresáři, který tuto službu obsahuje. 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é konfigurační prvky, vyvolaly výjimky za běhu.

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í na úrovni počítače, které se nachází v nástroji Machine.config, které umožňuje správci počítače 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 souboru Web.config nebo App.config.

Nastavení pro celý počítač je řízeno nastavením enableLoggingKnownPii na true nebo false, v elementu machineSettings 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.

enableLoggingKnownPii Pokud atribut není v machine.config, protokolování PII není povoleno.

Povolení protokolování PII pro aplikaci se provádí nastavením logKnownPii atributu zdrojového prvku na true nebo false v souboru Web.config nebo App.config. Následující příklad umožňuje protokolování PII pro protokolování zpráv i protokolování trasová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>

logKnownPii Pokud není atribut zadán, piI se nezaprotokoluje.

PII se protokoluje pouze v případě, že je obojí enableLoggingKnownPii nastaveno truena 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 patří ruční úprava Machine.config. Při úpravě machine.config jako nesprávných hodnot nebo syntaxe je potřeba věnovat pozornost tomu, aby se zabránilo spuštění všech aplikací rozhraní .NET Framework.

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

Nastavení, sestavení a spuštění ukázky

  1. Ujistěte se, že jste pro ukázky windows Communication Foundation provedli jednorázovou instalační proceduru.

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

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

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

Vyčištění vzorku

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

Viz také