Zajištění zabezpečení pro 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 například ř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. Seznam přípon, které se dají obsluhovat, najdete v příručce pro právu Internetové informační služby (IIS).
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 identifikovatelné osobní údaje (PII), jako je uživatelské jméno a heslo, nezaprotokolují do trasování a protokolovaných zpráv. Správce počítače však může pomocí atributu enableLoggingKnownPII
v machineSettings
elementu 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 true
obě nastavení povolená, je protokolování PII povolené. Kombinace dvou přepínačů umožňuje flexibilitu protokolovat známé PII pro každou aplikaci.
Důležité
V rozhraní .NET Framework 4.6.1 logEntireMessage
musí být tyto příznaky logKnownPii
také nastaveny v true
souboru Web.config nebo v souboru App.config, aby bylo možné protokolování PII povolit, 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 v případě následujícího souboru App.config se piI pro oba zdroje nezaprotokoluje, i když je pro druhý zdroj explicitně povolené protokolování PII.
<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>
<machineSettings enableLoggingKnownPii="Boolean"/>
Pokud prvek existuje mimo soubor Machine.config, systém vyvolá ConfigurationErrorsExceptionvýjimku .
Změny jsou účinné pouze při spuštění nebo restartování aplikace. Při spuštění se zaprotokoluje událost, pokud jsou oba atributy nastaveny na true
hodnotu . Událost je také zaznamenána, pokud logKnownPii
je nastavena 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ší diskuzi 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ů.
Upozornění
PII není skryto v poškozených zprávách. Takové zprávy se protokolují tak, jak jsou beze změny. Atributy uvedené dříve nemají na to žádný vliv.
Vlastní naslouchací proces trasování
Přidání vlastního naslouchacího procesu trasování ve zdroji trasování protokolování zpráv je oprávnění, 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 tak, aby odesílal zprávy do vzdálené databáze, měli byste vynutit správné řízení přístupu na protokolech zpráv na vzdáleném počítači.
Události aktivované 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: Tato událost se vygeneruje, když je protokolování zpráv povolené 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ž
enableLoggingKnownPii
je atribut vmachineSettings
elementu souboru Machine.config nastaven natrue
alogKnownPii
atributsource
prvku v souboru App.config nebo Web.config je nastaven natrue
.Známé PII protokolu není povoleno: Tato událost se vygeneruje, když protokolování známých PII není povoleno. K tomu dochází, když
logKnownPii
je atribut elementusource
v souboru App.config nebo Web.config nastaven natrue
, aleenableLoggingKnownPii
atribut vmachineSettings
elementu souboru Machine.config je nastaven nafalse
. Žádná výjimka se nevyvolá.
Tyto události lze zobrazit v nástroji Prohlížeč událostí, který je součástí Windows. Další informace o tomto tématu najdete v tématu Protokolování událostí.