Ochrona komunikatów za pomocą zabezpieczeń transportu
W tej sekcji omówiono zabezpieczenia transportu kolejkowania komunikatów (MSMQ), których można użyć do zabezpieczania komunikatów wysyłanych do kolejki.
Uwaga
Przed przeczytaniem tego tematu zaleca się zapoznanie się z tematem Pojęcia dotyczące zabezpieczeń.
Poniższa ilustracja przedstawia koncepcyjny model komunikacji w kolejce przy użyciu programu Windows Communication Foundation (WCF). Ta ilustracja i terminologia służą do wyjaśnienia pojęć związanych z bezpieczeństwem transportu.
Podczas wysyłania komunikatów w kolejce przy użyciu programu WCF z NetMsmqBindingprogramem komunikat WCF jest dołączany jako treść komunikatu MSMQ. Zabezpieczenia transportu zabezpiecza cały komunikat MSMQ (nagłówki lub właściwości wiadomości MSMQ i treść komunikatu). Ponieważ jest to treść komunikatu MSMQ, użycie zabezpieczeń transportu zabezpiecza również komunikat WCF.
Kluczową koncepcją zabezpieczeń transportu jest to, że klient musi spełnić wymagania dotyczące zabezpieczeń, aby uzyskać komunikat do kolejki docelowej. Jest to w przeciwieństwie do zabezpieczeń komunikatów, gdzie komunikat jest zabezpieczony dla aplikacji, która odbiera komunikat.
Bezpieczeństwo transportu przy użyciu protokołu NetMsmqBinding MSMQ i MsmqIntegrationBinding wpływa na sposób zabezpieczania komunikatów MSMQ między kolejką transmisji a kolejką docelową, w której jest to zabezpieczone:
Podpisanie komunikatu w celu upewnienia się, że nie zostało naruszone.
Szyfrowanie komunikatu w celu upewnienia się, że nie można go zobaczyć ani manipulować. Jest to zalecane, ale opcjonalne.
Docelowy menedżer kolejek, który identyfikuje nadawcę komunikatu pod kątem odrzucenia.
W msMQ, niezależnie od uwierzytelniania, kolejka docelowa ma listę kontroli dostępu (ACL), aby sprawdzić, czy klient ma uprawnienia do wysyłania komunikatu do kolejki docelowej. Aplikacja odbierającego jest również sprawdzana pod kątem uprawnień do odbierania komunikatu z kolejki docelowej.
Właściwości zabezpieczeń transportu WCF MSMQ
Usługa MSMQ używa zabezpieczeń systemu Windows do uwierzytelniania. Używa identyfikatora zabezpieczeń systemu Windows (SID) do identyfikowania klienta i używa usługi katalogowej Active Directory jako urzędu certyfikacji podczas uwierzytelniania klienta. Wymaga to zainstalowania programu MSMQ z integracją usługi Active Directory. Ponieważ identyfikator SID domeny systemu Windows służy do identyfikowania klienta, ta opcja zabezpieczeń ma znaczenie tylko wtedy, gdy zarówno klient, jak i usługa są częścią tej samej domeny systemu Windows.
Usługa MSMQ umożliwia również dołączanie certyfikatu z komunikatem, który nie jest zarejestrowany w usłudze Active Directory. W takim przypadku gwarantuje, że komunikat został podpisany przy użyciu dołączonego certyfikatu.
Program WCF udostępnia obie te opcje w ramach zabezpieczeń transportu MSMQ i stanowi kluczowy element dla zabezpieczeń transportu.
Domyślnie zabezpieczenia transportu są włączone.
Biorąc pod uwagę te podstawy, w poniższych sekcjach szczegółowo opisano właściwości zabezpieczeń transportu powiązane z elementami NetMsmqBinding i MsmqIntegrationBinding.
Tryb uwierzytelniania MSMQ
Określa MsmqAuthenticationMode , czy używać zabezpieczeń domeny systemu Windows, czy zewnętrznych zabezpieczeń opartych na certyfikatach w celu zabezpieczenia komunikatu. W obu trybach uwierzytelniania kanał transportu w kolejce WCF używa CertificateValidationMode
określonego w konfiguracji usługi. Tryb weryfikacji certyfikatu określa mechanizm używany do sprawdzania ważności certyfikatu.
Po włączeniu zabezpieczeń transportu ustawieniem domyślnym jest WindowsDomain.
Tryb uwierzytelniania domeny systemu Windows
Wybór korzystania z zabezpieczeń systemu Windows wymaga integracji z usługą Active Directory. WindowsDomain jest domyślnym trybem zabezpieczeń transportu. Po ustawieniu tego ustawienia kanał WCF dołącza identyfikator SID systemu Windows do komunikatu MSMQ i używa certyfikatu wewnętrznego uzyskanego z usługi Active Directory. Usługa MSMQ używa tego wewnętrznego certyfikatu do zabezpieczenia komunikatu. Menedżer odbierających kolejek używa usługi Active Directory do wyszukiwania i znajdowania zgodnego certyfikatu w celu uwierzytelnienia klienta i sprawdza, czy identyfikator SID jest również zgodny z tym klientem. Ten krok uwierzytelniania jest wykonywany, jeśli certyfikat wygenerowany wewnętrznie w WindowsDomain
przypadku trybu uwierzytelniania lub wygenerowany zewnętrznie w Certificate
przypadku trybu uwierzytelniania jest dołączony do komunikatu, nawet jeśli kolejka docelowa nie jest oznaczona jako wymagająca uwierzytelniania.
Uwaga
Podczas tworzenia kolejki można oznaczyć kolejkę jako uwierzytelnianą kolejkę, aby wskazać, że kolejka wymaga uwierzytelnienia klienta wysyłającego komunikaty do kolejki. Dzięki temu w kolejce nie są akceptowane żadne nieuwierzytelnione komunikaty.
Identyfikator SID dołączony do komunikatu służy również do sprawdzania listy ACL kolejki docelowej w celu zapewnienia, że klient ma uprawnienia do wysyłania komunikatów do kolejki.
Tryb uwierzytelniania certyfikatu
Wybór trybu uwierzytelniania certyfikatu nie wymaga integracji z usługą Active Directory. W niektórych przypadkach, na przykład gdy msMQ jest zainstalowana w trybie grupy roboczej (bez integracji z usługą Active Directory) lub w przypadku używania protokołu transferu SOAP Reliable Messaging Protocol (SRMP) do wysyłania komunikatów do kolejki, działa tylko Certificate .
Podczas wysyłania komunikatu programu WCF za pomocą Certificateprogramu kanał WCF nie dołącza identyfikatora SID systemu Windows do komunikatu MSMQ. W związku z tym lista ACL kolejki docelowej musi zezwalać na Anonymous
dostęp użytkowników do wysyłania do kolejki. Menedżer odbierających kolejek sprawdza, czy komunikat MSMQ został podpisany przy użyciu certyfikatu, ale nie wykonuje żadnego uwierzytelniania.
Certyfikat z jego oświadczeniami i informacjami o tożsamości jest wypełniany przez ServiceSecurityContext kanał transportu w kolejce WCF. Usługa może używać tych informacji do przeprowadzania własnego uwierzytelniania nadawcy.
Poziom ochrony MSMQ
Poziom ochrony określa sposób ochrony komunikatu MSMQ, aby upewnić się, że nie został on naruszony. Jest on określony we MsmqProtectionLevel właściwości . Domyślna wartość to Sign.
Poziom ochrony podpisywania
Komunikat MSMQ jest podpisany przy użyciu wewnętrznie wygenerowanego certyfikatu podczas korzystania z trybu uwierzytelniania lub certyfikatu wygenerowanego zewnętrznie podczas korzystania WindowsDomain
z Certificate
trybu uwierzytelniania.
Poziom ochrony podpisywania i szyfrowania
Komunikat MSMQ jest podpisany przy użyciu certyfikatu wygenerowanego wewnętrznie podczas korzystania z trybu uwierzytelniania lub certyfikatu wygenerowanego zewnętrznie podczas korzystania WindowsDomain
z Certificate
trybu uwierzytelniania.
Oprócz podpisania komunikatu komunikat MSMQ jest szyfrowany przy użyciu klucza publicznego certyfikatu uzyskanego z usługi Active Directory, który należy do odbierającego menedżera kolejek hostujących kolejkę docelową. Menedżer kolejki wysyłania gwarantuje, że komunikat MSMQ jest szyfrowany podczas przesyłania. Menedżer odbierających kolejek odszyfrowuje komunikat MSMQ przy użyciu klucza prywatnego certyfikatu wewnętrznego i przechowuje komunikat w kolejce (jeśli jest uwierzytelniony i autoryzowany) w postaci zwykłego tekstu.
Uwaga
Aby zaszyfrować komunikat, wymagany jest dostęp do usługi Active Directory (UseActiveDirectory
właściwość NetMsmqBinding musi być ustawiona na true
) i może być używana z parametrami Certificate i WindowsDomain.
Brak poziomu ochrony
Jest to dorozumiane, gdy MsmqProtectionLevel jest ustawiona wartość None. Nie może to być prawidłowa wartość dla innych trybów uwierzytelniania.
Uwaga
Jeśli komunikat MSMQ jest podpisany, msMQ sprawdza, czy komunikat jest podpisany przy użyciu dołączonego certyfikatu (wewnętrznego lub zewnętrznego) niezależnie od stanu kolejki, czyli kolejki uwierzytelnionej, czy nie.
Algorytm szyfrowania MSMQ
Algorytm szyfrowania określa algorytm używany do szyfrowania komunikatu MSMQ w sieci. Ta właściwość jest używana tylko wtedy, gdy MsmqProtectionLevel jest ustawiona na EncryptAndSignwartość .
Obsługiwane algorytmy to RC4Stream
i AES
wartością domyślną jest RC4Stream
.
Algorytm można użyć AES
tylko wtedy, gdy nadawca ma zainstalowaną wersję MSMQ 4.0. Ponadto kolejka docelowa musi być również hostowana w środowisku MSMQ 4.0.
Algorytm skrótu MSMQ
Algorytm wyznaczania wartości skrótu określa algorytm używany do tworzenia podpisu cyfrowego komunikatu MSMQ. Menedżer odbierających kolejek używa tego samego algorytmu do uwierzytelniania komunikatu MSMQ. Ta właściwość jest używana tylko wtedy, gdy MsmqProtectionLevel jest ustawiona na Sign wartość lub EncryptAndSign.
Obsługiwane algorytmy to MD5
, , SHA1
SHA256
i SHA512
. Wartość domyślna to SHA1
.
Ze względu na problemy z kolizją z md5/SHA1 firma Microsoft zaleca sha256 lub lepszą.