A PII biztonsági zárolása
A SecurityLockdown-minta bemutatja, hogyan vezérelheti a Windows Communication Foundation (WCF) szolgáltatás számos biztonsági funkcióját a következőkkel:
Bizalmas adatok titkosítása egy szolgáltatás konfigurációs fájljában.
A konfigurációs fájl elemeinek zárolása, hogy a beágyazott szolgáltatás alkönyvtárai ne bírálhassák felül a beállításokat.
A személyazonosításra alkalmas adatok (PII) naplózásának szabályozása nyomkövetési és üzenetnaplókban.
Vita (Discussion)
Ezek a funkciók külön-külön vagy együttesen is használhatók a szolgáltatás biztonságának szempontjainak szabályozására. Ez nem a WCF-szolgáltatások biztonságossá tételének végleges útmutatója.
A .NET-keretrendszer konfigurációs fájlok bizalmas információkat, például kapcsolati sztring tartalmazhatnak az adatbázisokhoz való csatlakozáshoz. Megosztott, webalapú forgatókönyvekben célszerű lehet titkosítani ezeket az információkat egy szolgáltatás konfigurációs fájljában, hogy a konfigurációs fájlban található adatok ne legyenek ellenállók az alkalmi megtekintéssel szemben. .NET-keretrendszer 2.0-s és újabb verziói képesek a konfigurációs fájl egyes részeinek titkosítására a Windows Data Protection alkalmazás programozási felületével (DPAPI) vagy az RSA titkosítási szolgáltatóval. A DPAPI-t vagy RSA-t használó aspnet_regiis.exe titkosíthatják a konfigurációs fájl egyes részeit.
A webre üzemeltetett forgatókönyvekben más szolgáltatások alkönyvtáraiban is lehetnek szolgáltatások. A konfigurációs értékek meghatározásához használt alapértelmezett szemantika lehetővé teszi, hogy a beágyazott könyvtárak konfigurációs fájljai felülbírálják a szülőkönyvtár konfigurációs értékeit. Bizonyos helyzetekben ez számos okból nemkívánatos lehet. A WCF szolgáltatáskonfigurációja támogatja a konfigurációs értékek zárolását, így a beágyazott konfiguráció kivételeket hoz létre, amikor egy beágyazott szolgáltatás felülbírált konfigurációs értékekkel fut.
Ez a minta bemutatja, hogyan szabályozható az ismert személyazonosításra alkalmas adatok (PII) naplózása nyomkövetési és üzenetnaplókban, például felhasználónév és jelszó. Alapértelmezés szerint az ismert PII naplózása le van tiltva, de bizonyos esetekben a PII naplózása fontos lehet az alkalmazások hibakeresésében. Ez a minta az első lépéseken alapul. Emellett ez a minta nyomkövetést és üzenetnaplózást is használ. További információkért tekintse meg a nyomkövetési és üzenetnaplózási mintát.
Konfigurációs fájlelemek titkosítása
A megosztott web-üzemeltetési környezetben biztonsági okokból célszerű lehet titkosítani bizonyos konfigurációs elemeket, például az adatbázis-kapcsolati sztring, amelyek bizalmas információkat tartalmazhatnak. Egy konfigurációs elem titkosítható a .NET-keretrendszer mappában található aspnet_regiis.exe eszközzel, például: %WINDIR%\Microsoft.NET\Framework\v4.0.20728.
Az alkalmazás értékeinek titkosításához Gépház a minta Web.config szakasza
Nyisson meg egy parancssort a Start-Run> használatával.... Írja be a szöveget,
cmd
és kattintson az OK gombra.Lépjen az aktuális .NET-keretrendszer könyvtárra a következő parancs kiadásával:
cd %WINDIR%\Microsoft.NET\Framework\v4.0.20728
.Az alkalmazás Gépház konfigurációs beállítások titkosítása a Web.config mappában a következő parancs kiadásával:
aspnet_regiis -pe "appSettings" -app "/servicemodelsamples" -prov "DataProtectionConfigurationProvider"
.
A konfigurációs fájlok szakaszainak titkosításával kapcsolatos további információkért olvassa el a DPAPI útmutatóját ASP.NET konfigurációban (Biztonságos ASP.NET alkalmazások létrehozása: Hitelesítés, Engedélyezés és Biztonságos kommunikáció) és az RSA útmutatóját ASP.NET konfigurációban (Útmutató: A konfigurációs szakaszok titkosítása ASP.NET 2.0-s verziójában RSA használatával).
Konfigurációs fájlelemek zárolása
A webre üzemeltetett forgatókönyvekben lehetőség van szolgáltatások alkönyvtáraiban való használatára. Ezekben az esetekben az alkönyvtárban lévő szolgáltatás konfigurációs értékeinek kiszámítása a Machine.config értékeinek vizsgálatával történik, majd a szülőkönyvtárakban lévő Web.config fájlokkal való egyesítéssel, majd a web.config fájl egyesítésével a szolgáltatást tartalmazó könyvtárban. A legtöbb konfigurációelem alapértelmezett viselkedése az, hogy lehetővé teszi az alkönyvtárakban lévő konfigurációs fájlok számára, hogy felülbírálják a szülőkönyvtárakban beállított értékeket. Bizonyos helyzetekben célszerű lehet megakadályozni, hogy az alkönyvtárak konfigurációs fájljai felülírják a szülőkönyvtár konfigurációjában beállított értékeket.
A .NET-keretrendszer lehetővé teszi a konfigurációs fájlelemek zárolását, így a zárolt konfigurációelemeket felülíró konfigurációk futásidejű kivételeket eredményeznek.
A konfigurációs elem zárolható a konfigurációs fájl egyik csomópontjának attribútumának megadásával lockItem
, például a CalculatorServiceBehavior csomópont a konfigurációs fájlban való zárolásához, hogy a beágyazott konfigurációs fájlokban található számológép-szolgáltatások ne módosíthassák a viselkedést, a következő konfiguráció használható.
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="CalculatorServiceBehavior" lockItem="true">
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
A konfigurációelemek zárolása pontosabb lehet. Az elemek listája megadható az alelemek gyűjteményében lévő elemek zárolásának értékeként lockElements
. Az attribútumok listája megadható az elemen belüli attribútumkészlet zárolásának értékeként lockAttributes
. Egy adott lista kivételével az elemek vagy attribútumok teljes gyűjteménye zárolható a lockAllElementsExcept
csomóponton lévő attribútumok vagy lockAllAttributesExcept
attribútumok megadásával.
PII-naplózás konfigurálása
A PII naplózását két kapcsoló szabályozza: a Machine.configban található számítógépszintű beállítás, amely lehetővé teszi a számítógép rendszergazdájának a PII naplózásának engedélyezését vagy letiltását, valamint egy olyan alkalmazásbeállítást, amely lehetővé teszi, hogy az alkalmazásadminisztrátor váltsa a PII naplózását egy Web.config vagy App.config fájl minden egyes forrásához.
A számítógép-szintű beállítást a Machine.config elemének vagy elemének machineSettings
beállításával enableLoggingKnownPii
true
false
lehet szabályozni. Az alábbiak például lehetővé teszik, hogy az alkalmazások bekapcsolják a PII naplózását.
<configuration>
<system.serviceModel>
<machineSettings enableLoggingKnownPii="true" />
</system.serviceModel>
</configuration>
Feljegyzés
A Machine.config fájl alapértelmezett helye: %WINDIR%\Microsoft.NET\Framework\v2.0.50727\CONFIG.
Ha az enableLoggingKnownPii
attribútum nem található a Machine.config-ban, a PII naplózása nem engedélyezett.
A PII alkalmazáshoz való naplózásának engedélyezéséhez a logKnownPii
forráselem true
attribútumát a Web.config vagy false
az App.config fájlban kell beállítani. Az alábbiak például lehetővé teszik a PII naplózását mind az üzenetnaplózáshoz, mind a nyomkövetési naplózáshoz.
<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>
Ha az logKnownPii
attribútum nincs megadva, a rendszer nem naplózza a PII-t.
A RENDSZER csak akkor naplózza a PII-t, ha mindkettő enableLoggingKnownPii
be van állítva true
, és logKnownPii
a következőre true
van állítva.
Feljegyzés
A System.Diagnostics figyelmen kívül hagyja az összes forrás összes attribútumát, kivéve a konfigurációs fájlban szereplő elsőt. Az logKnownPii
attribútum hozzáadása a konfigurációs fájl második forrásához nincs hatással.
Fontos
A minta futtatásához a Machine.config manuális módosítása szükséges. A Machine.config helytelen értékek vagy szintaxis módosításakor ügyelni kell arra, hogy az összes .NET-keretrendszer alkalmazás futjon.
A konfigurációs fájlelemeket DPAPI és RSA használatával is titkosíthatja. További információk az alábbi hivatkozásokra kattintva érhetők el:
Biztonságos ASP.NET-alkalmazások létrehozása: hitelesítés, engedélyezés és biztonságos kommunikáció
Útmutató: Konfigurációs szakaszok titkosítása a ASP.NET 2.0-ban az RSA használatával
A minta beállításához és futtatásához
Győződjön meg arról, hogy elvégezte a Windows Communication Foundation-minták egyszeri beállítási eljárását.
Szerkessze a Machine.config fájlt az
enableLoggingKnownPii
attribútum beállításáhoztrue
, szükség esetén adja hozzá a szülőcsomópontokat.A megoldás C# vagy Visual Basic .NET kiadásának létrehozásához kövesse a Windows Communication Foundation-minták készítéséhez szükséges utasításokat.
Ha a mintát egy- vagy számítógépközi konfigurációban szeretné futtatni, kövesse a Windows Communication Foundation-minták futtatásával kapcsolatos utasításokat.
A minta megtisztítása
- A Machine.config szerkesztése az
enableLoggingKnownPii
attribútum beállításáhozfalse
.