Elosztott alkalmazásbiztonság

A Windows Communication Foundation (WCF) biztonsága három fő funkcionális területre oszlik: a biztonság átvitele, a hozzáférés-vezérlés és a naplózás. Az átviteli biztonság integritást, bizalmasságot és hitelesítést biztosít. Az átvitel biztonságát az alábbiak egyike biztosítja: átviteli biztonság, üzenetbiztonság vagy TransportWithMessageCredential.

A WCF-üzenetek biztonságának áttekintését a Biztonsági áttekintés című témakörben tekintheti meg. A WCF biztonságának másik két részével kapcsolatos további információkért lásd: Engedélyezés és naplózás.

Átviteli biztonsági forgatókönyvek

A WCF átviteli biztonságát alkalmazó gyakori forgatókönyvek a következők:

  • Biztonságos átvitel a Windows használatával. A WCF-ügyfél és -szolgáltatás windowsos tartományban (vagy Windows-erdőben) van üzembe helyezve. Az üzenetek személyes adatokat tartalmaznak, ezért a követelmények közé tartozik az ügyfél és a szolgáltatás kölcsönös hitelesítése, az üzenetek integritása és az üzenetek bizalmassága. Emellett igazolni kell, hogy egy adott tranzakció történt, például az üzenet fogadójának rögzítenie kell az aláírási adatokat.

  • Biztonságos átvitel a UserName és a HTTPS használatával. A WCF-ügyfelet és -szolgáltatást az interneten keresztüli munkavégzéshez kell fejleszteni. Az ügyfél hitelesítő adatai felhasználónevek/jelszópárok adatbázisán hitelesíthetők. A szolgáltatás egy HTTPS-címen van üzembe helyezve egy megbízható Secure Sockets Layer (SSL) tanúsítvánnyal. Mivel az üzenetek az interneten keresztül utaznak, az ügyfelet és a szolgáltatást kölcsönösen hitelesíteni kell, és az üzenetek bizalmasságát és integritását meg kell őrizni az átvitel során.

  • Biztonságos átvitel tanúsítványok használatával. Egy WCF-ügyfelet és -szolgáltatást kell fejleszteni a nyilvános interneten keresztüli munkavégzéshez. Az ügyfél és a szolgáltatás egyaránt rendelkezik az üzenetek védelmére használható tanúsítványokkal. Az ügyfél és a szolgáltatás az interneten keresztül kommunikál egymással, és olyan nagy értékű tranzakciókat hajt végre, amelyek üzenetintegritást, bizalmasságot és kölcsönös hitelesítést igényelnek.

Integritás, bizalmasság és hitelesítés

Három függvényt – az integritást, a titkosságot és a hitelesítést – együttesen átviteli biztonságnak nevezünk. Az átviteli biztonság biztosítja azokat a funkciókat, amelyek segítenek enyhíteni az elosztott alkalmazást fenyegető veszélyeket. Az alábbi táblázat röviden ismerteti az átviteli biztonságot alkotó három függvényt.

Funkció Leírás
Integritás Az integritás a garancia arra, hogy az adatok teljesek és pontosak, különösen azután, hogy átjárták azokat egyik pontról a másikra, és valószínűleg sok szereplő olvasta. Az integritást meg kell őrizni az adatok illetéktelen befolyásolásának megakadályozása érdekében, és általában egy üzenet digitális aláírásával érhető el.
Titoktartás A bizalmasság azt a biztosítékot nyújtja, hogy a kívánt olvasón kívül senki nem olvasta el az üzenetet. Egy hitelkártyaszámot például bizalmasan kell kezelni, mivel az interneten keresztül kerül elküldésre. A titkosságot gyakran az adatok nyilvános kulcs/titkos kulcssémával történő titkosítása biztosítja.
Hitelesítés A hitelesítés az igényelt identitás ellenőrzése. Ha például bankszámlát használ, elengedhetetlen, hogy csak a számla tényleges tulajdonosa vonhasson be pénzt. A hitelesítés többféle módon is biztosítható. Az egyik gyakori módszer a felhasználó/jelszó rendszer. A második egy harmadik fél által biztosított X.509-tanúsítvány használata.

Biztonsági módok

A WCF többféle átviteli biztonsági móddal rendelkezik, amelyeket az alábbi táblázat ismertet.

Üzemmód Leírás
Egyik sem Az átviteli rétegben vagy az üzenetrétegben nincs biztonsági beállítás. Az előre definiált kötések egyike sem használja alapértelmezés szerint ezt a módot, kivéve az <alapszintűHttpBinding> elemet, vagy kód használatakor az osztályt BasicHttpBinding .
Szállítás Biztonságos átvitelt, például HTTPS-t használ az integritás, a bizalmasság és a kölcsönös hitelesítés érdekében.
Üzenet A SOAP-üzenet biztonságát használja az integritás, a bizalmasság és a kölcsönös hitelesítés érdekében. A SOAP-üzenetek a WS-Security szabványnak megfelelően vannak védve.
Vegyes mód Átviteli biztonságot használ az integritás, a bizalmasság és a kiszolgálóhitelesítés érdekében. Üzenetbiztonságot (WS-Security és egyéb szabványokat) használ az ügyfél-hitelesítéshez.

Ennek a módnak az enumerációja TransportWithMessageCredential.
Mindkettő Mindkét szinten végez védelmet és hitelesítést. Ez a mód csak a <netMsmqBinding> elemben érhető el.

Hitelesítő adatok és az átvitel biztonsága

A hitelesítő adatok olyan adatok, amelyek egy igényelt identitás vagy képességek létrehozásához jelennek meg. A hitelesítő adatok bemutatása magában foglalja az adatok bemutatását és az adatok birtoklásának igazolását. A WCF számos hitelesítő adattípust támogat mind az átviteli, mind az üzenetbiztonsági szinten. A WCF-kötéshez megadhatja a hitelesítő adatok típusát.

Számos országban vagy régióban a jogosítvány példa a hitelesítő adatokra. A licencek az identitást és képességeket képviselő adatokat tartalmaznak. Ez a birtokos képe formájában tartalmazza a birtoklás igazolását. A licencet egy megbízható hatóság, általában egy kormányzati licencelési részleg adja ki. A licenc lezárt, és tartalmazhat egy hologramot, amely azt mutatja, hogy nem módosították vagy hamisították.

Vegyük például a WCF által támogatott hitelesítő adatok két típusát: a felhasználónevet és az (X.509) tanúsítvány hitelesítő adatait.

A felhasználónév hitelesítő adatainál a felhasználónév az igényelt identitást jelöli, a jelszó pedig a birtoklás igazolását. Ebben az esetben a megbízható szolgáltató az a rendszer, amely ellenőrzi a felhasználónevet és a jelszót.

A tanúsítvány hitelesítő adataiban a tulajdonos neve, a tulajdonos alternatív neve vagy a tanúsítvány adott mezői használhatók az igényelt identitás és/vagy képességek megjelenítésére. A hitelesítő adatok birtoklásának igazolása a társított titkos kulcs használatával történik aláírás létrehozásához.

További információ a programozási átvitel biztonságáról és a hitelesítő adatok megadásáról: Kötések, biztonsági és biztonsági viselkedések.

Átviteli ügyfél hitelesítő adatainak típusai

Az alábbi táblázat az átviteli biztonságot használó alkalmazások létrehozásakor használt lehetséges értékeket mutatja be. Ezeket az értékeket kód- vagy kötésbeállításokban is használhatja.

Beállítás Leírás
Egyik sem Megadja, hogy az ügyfélnek nem kell hitelesítő adatokat bemutatnia. Ez egy névtelen ügyfélre fordítható.
Alapszintű Alapszintű hitelesítést ad meg. További információ: RFC2617: "HTTP-hitelesítés: Alapszintű és kivonatoló hitelesítés".
Összefoglaló Kivonatos hitelesítést ad meg. További információ: RFC2617: "HTTP-hitelesítés: Alapszintű és kivonatoló hitelesítés".
Ntlm Windows-hitelesítést ad meg SSPI-egyeztetéssel egy Windows-tartományban.

Az SSPI-egyeztetés a Kerberos protokoll vagy az NT LanMan (NTLM) használatát eredményezi.
Windows A Windows-tartományon futó SSPI használatával történő Windows-hitelesítést adja meg. Az SSPI a Kerberos protokollból vagy az NTLM-ből választ hitelesítési szolgáltatásként.

Az SSPI először a Kerberos protokollt próbálja meg; ha ez nem sikerül, akkor az NTLM-et használ.
Bizonyítvány Az ügyfélhitelesítést általában X.509-tanúsítvánnyal hajtja végre.

Üzenetügyfél hitelesítő adatainak típusai

Az alábbi táblázat az üzenetbiztonságot használó alkalmazások létrehozásakor használt lehetséges értékeket mutatja be. Ezeket az értékeket kód- vagy kötésbeállításokban is használhatja.

Beállítás Leírás
Egyik sem Lehetővé teszi a szolgáltatás számára a névtelen ügyfelekkel való interakciót.
Windows Lehetővé teszi, hogy a SOAP-üzenetek cseréje windowsos hitelesítő adatok hitelesített környezetében történjen. SSPI-egyeztetési mechanizmussal választhat a Kerberos-protokollból vagy az NTLM-ből hitelesítési szolgáltatásként.
Felhasználónév Lehetővé teszi a szolgáltatás számára, hogy megkövetelje az ügyfél hitelesítését felhasználónév hitelesítő adatokkal. Vegye figyelembe, hogy a WCF nem engedélyezi a felhasználónévvel rendelkező titkosítási műveleteket, például aláírást vagy titkosítási adatokat. Ezért a WCF kikényszeríti, hogy az átvitel biztonságos legyen a felhasználónév hitelesítő adatainak használatakor.
Bizonyítvány Lehetővé teszi, hogy a szolgáltatás megkövetelje az ügyfél hitelesítését tanúsítvány használatával.
CardSpace Lehetővé teszi a szolgáltatás számára, hogy megkövetelje az ügyfél hitelesítését egy CardSpace használatával.

Programozási hitelesítő adatok

A WCF programozási modell minden ügyfél-hitelesítő adattípus esetében lehetővé teszi a hitelesítő adatok értékeinek és hitelesítőadat-érvényesítőinek megadását szolgáltatás- és csatornaviselkedések használatával.

A WCF-biztonság kétféle hitelesítő adattal rendelkezik: a szolgáltatás hitelesítő adatainak viselkedése és a csatorna hitelesítő adatainak viselkedése. A WCF hitelesítő viselkedése határozza meg a tényleges adatokat, nevezetesen a kötéseken keresztül kifejezett biztonsági követelmények teljesítéséhez használt hitelesítő adatokat. A WCF-ben az ügyfélosztály az a futtatókörnyezeti összetevő, amely a művelethívás és az üzenetek között konvertálódik. Minden ügyfél örököl az ClientBase<TChannel> osztálytól. Az ClientCredentials alaposztály tulajdonsága lehetővé teszi az ügyfél hitelesítő adatainak különböző értékeinek megadását.

A WCF-ben a szolgáltatás viselkedését a szolgáltatásszerződést (interfészt) megvalósító osztályra alkalmazott attribútumok szabályozzák a szolgáltatást programozott módon. Az ServiceCredentials osztály lehetővé teszi a különböző ügyfél-hitelesítő adatok tanúsítványainak és ügyfélérvényesítési beállításainak megadását.

Az üzenetbiztonság tárgyalási modellje

Az üzenetbiztonsági mód lehetővé teszi az átvitel biztonságát, hogy a szolgáltatás hitelesítő adatai sávon kívül konfigurálva legyen az ügyfélnél. Ha például a Windows tanúsítványtárolóban tárolt tanúsítványt használ, akkor olyan eszközt kell használnia, mint a Microsoft Management Console (MMC) beépülő modul.

Az üzenetbiztonsági mód lehetővé teszi az átvitel biztonságát is, hogy a szolgáltatás hitelesítő adatai egy kezdeti egyeztetés részeként kicserélődjenek az ügyféllel. Az egyeztetés engedélyezéséhez állítsa a NegotiateServiceCredential tulajdonságot true értékre.

Lásd még