Otázky zabezpečení a užitečné tipy pro trasování
Toto téma popisuje, jak můžete chránit citlivé informace před zveřejněním, a také užitečné tipy při používání webového hostitele.
Použití vlastního trasovacího naslouchacího zařízení s WebHostem
Pokud píšete vlastní naslouchací prvek pro trasování, měli byste si být vědomi možnosti, že při použití služby hostované na webu může dojít ke ztrátě trasování. Když webhost recykluje, vypne živý proces, zatímco duplikát převezme. Oba procesy ale musí mít po určitou dobu přístup ke stejnému prostředku, což je závislé na typu naslouchacího procesu. V tomto případě XmlWriterTraceListener
vytvoří nový trasovací soubor pro druhý proces; zatímco trasování událostí systému Windows spravuje více procesů ve stejné relaci a poskytuje přístup ke stejnému souboru. Pokud vaše vlastní naslouchající komponenta neposkytuje podobné funkce, mohou se záznamy ztratit při uzamčení souboru dvěma procesy.
Měli byste také vědět, že vlastní poslechový zprostředkovatel může odesílat trasování a zprávy přes síť, například do vzdálené databáze. Jako nasazovač aplikace byste měli nakonfigurovat vlastní naslouchací procesy s odpovídajícím řízením přístupu. Měli byste také použít bezpečnostní kontrolu u všech osobních údajů, které mohou být vystaveny ve vzdáleném umístění.
Protokolování citlivých informací
Stopy obsahují záhlaví zpráv, pokud je zpráva v rozsahu. Pokud je povoleno trasování, 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 u konfiguračních a trasovacích souborů. Pokud nechcete, aby byly tyto informace viditelné, měli byste zakázat trasování nebo vyfiltrovat část dat, pokud chcete sdílet protokoly trasování.
Následující tipy vám můžou pomoct zabránit neúmyslnému zveřejnění obsahu trasovacího souboru:
Ujistěte se, že soubory protokolu jsou chráněné seznamy řízení přístupu (ACL) ve scénářích WebHost i v případě samostatného hostování.
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 služby IIS můžete zobrazit 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ář WebHost vroot, 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, nezaznamenávají do trasování a protokolovaný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ím způsobem:
<configuration>
<system.ServiceModel>
<machineSettings enableLoggingKnownPii="Boolean"/>
</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 povolené protokolování PII. Kombinace dvou přepínačů umožňuje možnost zaznamenávat známé PII pro každou aplikaci.
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 následující soubor App.confignení zaznamenáváno PII pro oba zdroje, i když je zaznamenává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="xml" />
</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
.
Další informace o protokolování PII najdete v ukázky uzamčení zabezpečení PII.
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ů.
Kromě toho se IP adresa odesílatele zprávy zaznamenává jednou za připojení u přenosů orientovaných na připojení a jednou za každou jinak poslanou zprávu. To se provádí bez souhlasu odesílatele. Toto protokolování se však vyskytuje pouze na úrovních informačního nebo podrobného trasování, které nejsou ani výchozími, ani doporučenými úrovněmi trasování v produkčním prostředí, s výjimkou živého ladění.