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 naslouchacího procesu trasování s webhostem
Pokud píšete vlastní naslouchací proces trasování, měli byste vědět o možnosti ztráty trasování v případě služby hostované na webu. 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 váš vlastní naslouchací proces neposkytuje podobné funkce, může dojít ke ztrátě trasování při uzamčení souboru dvěma procesy.
Měli byste také vědět, že vlastní naslouchací proces trasování může odesílat trasování a zprávy na drátě, 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í
Trasování obsahuje záhlaví zpráv, pokud je zpráva v oboru. Pokud je povoleno trasování, 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 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 samoobslužných hostitelů.
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, nezaprotokolují do trasování a protokolovaných zpráv. Správce počítače však může pomocí enableLoggingKnownPII
atributu 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í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 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.
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="xml" />
</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
.
Další informace o protokolování PII najdete v ukázce 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 zaprotokoluje jednou pro připojení pro přenosy orientované na připojení a jednou za zprávu poslanou jinak. To se provádí bez souhlasu odesílatele. Toto protokolování se však vyskytuje pouze na úrovních informace nebo podrobného trasování, které nejsou výchozí nebo doporučené úrovně trasování v produkčním prostředí, s výjimkou živého ladění.