Megosztás a következőn keresztül:


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

  1. Nyisson meg egy parancssort a Start-Run> használatával.... Írja be a szöveget, cmd és kattintson az OK gombra.

  2. 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.

  3. 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 enableLoggingKnownPiitruefalselehet 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 truevan á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:

A minta beállításához és futtatásához

  1. 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.

  2. Szerkessze a Machine.config fájlt az enableLoggingKnownPii attribútum beállításához true, szükség esetén adja hozzá a szülőcsomópontokat.

  3. 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.

  4. 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

  1. A Machine.config szerkesztése az enableLoggingKnownPii attribútum beállításához false.

Lásd még