Sdílet prostřednictvím


Problémy se zabezpečením protokolování zpráv

Toto téma popisuje, jak můžete chránit citlivá data před zveřejněním v protokolech zpráv a také událostmi generovanými protokolováním zpráv.

Aspekty zabezpečení

Protokolování citlivých informací

Windows Communication Foundation (WCF) neupravuje žádná data v hlavičkách a textu specifických pro aplikaci. WCF také nesleduje osobní údaje v hlavičkách nebo textových datech specifických pro aplikaci.

Pokud je protokolování zpráv povolené, osobní údaje v hlavičkách specifických pro aplikaci, jako je řetězec dotazu; a základní informace, jako je číslo platební karty, se můžou v protokolech zobrazit. Nasazovač aplikace zodpovídá za vynucování řízení přístupu v konfiguračních souborech a souborech protokolů. Pokud nechcete, aby byly tyto informace viditelné, měli byste protokolování zakázat nebo vyfiltrovat část dat, pokud chcete protokoly sdílet.

Následující tipy vám můžou pomoct zabránit neúmyslnému zveřejnění obsahu souboru protokolu:

  • Ujistěte se, že soubory protokolu jsou chráněné seznamy řízení přístupu (ACL) jak ve scénářích webového hostitele, tak i ve scénářích s vlastním hostitelem.

  • Zvolte příponu souboru, kterou nelze snadno obsluhovat pomocí webové žádosti. Například přípona souboru .xml není bezpečná volba. V průvodci správou Internetové informační služby (IIS) si můžete prohlédnout seznam rozšíření, která se dají obsluhovat.

  • Zadejte absolutní cestu k umístění souboru protokolu, který by měl být mimo veřejný adresář vroot webového hostitele, aby k němu externí strana nemohla přistupovat pomocí webového prohlížeče.

Ve výchozím nastavení se klíče a osobně identifikovatelné informace (PII), jako je uživatelské jméno a heslo, nejsou zaznamenány do záznamů trasování a zaznamenaných zpráv. Správce počítače však může pomocí atributu enableLoggingKnownPII v machineSettings prvku souboru Machine.config povolit aplikacím spuštěným na počítači protokolovat známé identifikovatelné osobní údaje (PII). Následující konfigurace ukazuje, jak to provést:

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

Nasazovač aplikace pak může pomocí atributu logKnownPii v souboru App.config nebo Web.config povolit protokolování PII následujícím způsobem:

<system.diagnostics>
  <sources>
      <source name="System.ServiceModel.MessageLogging"
        logKnownPii="true">
        <listeners>
                 <add name="messages"
                 type="System.Diagnostics.XmlWriterTraceListener"
                 initializeData="c:\logs\messages.svclog" />
          </listeners>
      </source>
    </sources>
</system.diagnostics>

Pouze pokud jsou obě nastavení true, je povoleno protokolování PII. Kombinace dvou přepínačů poskytuje flexibilitu zapisovat známé osobní identifikovatelné údaje pro každou aplikaci.

Důležitý

V rozhraní .NET Framework 4.6.1 musí být příznak logEntireMessage a logKnownPii také nastaven na true v souboru Web.config nebo v souboru App.config pro povolení protokolování PII, jak je znázorněno v následujícím příkladu <system.serviceModel><messageLogging logEntireMessage="true" logKnownPii="true" ….

Měli byste vědět, že pokud v konfiguračním souboru zadáte dva nebo více vlastních zdrojů, budou načteny pouze atributy prvního zdroje. Ostatní se ignorují. To znamená, že pro oba zdroje není PII zaznamenávána u následujícího souboru App.config, přestože je protokolování PII explicitně povoleno pro druhý zdroj.

<system.diagnostics>
   <sources>
      <source name="System.ServiceModel.MessageLogging"
              logKnownPii="false">
              <listeners>
                 <add name="messages"
                      type="System.Diagnostics.XmlWriterTraceListener"
                      initializeData="c:\logs\messages.svclog" />
              </listeners>
            </source>
      <source name="System.ServiceModel"
              logKnownPii="true">
              <listeners>
                 <add name="traces"
                      type="System.Diagnostics.XmlWriterTraceListener"
                      initializeData="c:\logs\traces.svclog" />
              </listeners>
      </source>
   </sources>
</system.diagnostics>

Pokud prvek <machineSettings enableLoggingKnownPii="Boolean"/> existuje mimo soubor Machine.config, systém vyvolá ConfigurationErrorsException.

Změny jsou účinné pouze při spuštění nebo restartování aplikace. Událost je zaznamenána při spuštění, pokud jsou oba atributy nastaveny na true. Událost je také zaznamenána, pokud je logKnownPii nastavena na true, ale enableLoggingKnownPii je false.

Při použití těchto dvou přepínačů by měl správce počítače a nasazovač aplikací provádět extrémní opatrnost. Pokud je protokolování PII povolené, protokolují se klíče zabezpečení a PII. Pokud je zakázaná, citlivá data a data specifická pro aplikaci se stále zaznamenávají do záhlaví a těla zpráv. Podrobnější informace o ochraně osobních údajů a ochraně osobních údajů před zveřejněním najdete v tématu Ochrana osobních údajů uživatelů.

Opatrnost

PII není skryto v poškozených zprávách. Takové zprávy jsou protokolovány as-is bez jakýchkoli úprav. Atributy uvedené dříve nemají na to žádný vliv.

Vlastní posluchač trasování

Přidání vlastního sledovacího naslouchadla ve zdroji protokolování zpráv je právo, které by mělo být omezeno na správce. Je to proto, že vlastní naslouchací procesy se zlými úmysly je možné nakonfigurovat tak, aby odesílaly zprávy vzdáleně, což vede ke zpřístupnění citlivých informací. Pokud navíc nakonfigurujete vlastní naslouchací proces pro odesílání zpráv přes síť, například do vzdálené databáze, měli byste ve vzdáleném počítači zajistit správné řízení přístupu k záznamům zpráv.

Události vyvolané protokolováním zpráv

V následujícím seznamu jsou uvedeny všechny události generované protokolováním zpráv.

  • Protokolování zpráv je aktivováno: Tato událost je vyvolána, když je protokolování zpráv povoleno v konfiguraci nebo prostřednictvím rozhraní WMI. Obsah události je "Protokolování zpráv bylo zapnuto. Citlivé informace mohou být zaprotokolovány v prostém textu, i když byly zašifrovány na drátě, například v těle zprávy."

  • Protokolování zprávy vypnuto: Tato událost se vygeneruje, když je protokolování zpráv zakázané prostřednictvím rozhraní WMI. Obsah události je "Protokolování zpráv bylo vypnuto".

  • Protokolování známých PII Zapnuto: Tato událost se vygeneruje, když je povolené protokolování známých PII. K tomu dochází, když je atribut enableLoggingKnownPii v elementu machineSettings souboru Machine.config nastaven na truea logKnownPii atribut source elementu v App.config nebo Web.config souboru je nastaven na true.

  • Protokolování známých PII není povoleno: Tato událost se vygeneruje, když není dovoleno protokolovat známé PII. K tomu dochází, když je atribut logKnownPii prvku source v souboru App.config nebo Web.config nastaven na true, ale atribut enableLoggingKnownPii v elementu machineSettings souboru Machine.config je nastaven na false. Není vyvolána žádná výjimka.

Tyto události lze zobrazit v nástroji Prohlížeč událostí, který je součástí Windows. Další informace o tom najdete v tématu protokolování událostí.

Viz také