2015-12-17 82 views
5

Mój projekt wymaga zachowania wszystkich danych zaszyfrowanych, więc MSMQ musi być również zaszyfrowany. Ale jak wiadomo z artykułu (https://msdn.microsoft.com/en-us/library/ms704178(v=vs.85).aspx) wiadomości z prywatnych kolejek są przechowywane domyślnie w pliku ... \ MSMQ \ Storage \ p000000x.mq.MSMQ. Zachowaj treść wiadomości zaszyfrowanej, gdy jest przechowywana na dysku.

Po skonfigurowaniu prywatnej kolejki ustaw jej poziom prywatności na "Ciało", a kiedy wysyłam zaszyfrowaną wiadomość do tej kolejki, otwieram plik ... \ MSMQ \ Storage \ p000000x.mq w przeglądarce tekstów (używam Far Manager hex redactor), widzę zwykły tekst wiadomości. Nie jest zaszyfrowany. Aby wysłać wiadomość używam następny kod:

message.UseEncryption = true; 
message.EncryptionAlgorithm = EncryptionAlgorithm.Rc2; 

Komunikat ... \ MSMQ \ Storage \ p000000x.mq pozostaje zwykły, mimo szyfrowania wiadomości podanej. Zobacz zdjęcie poniżej.

enter image description here Więc moje pytanie: Czy istnieje jakiś wbudowany w narzędzie, aby utrzymać wiadomość zaszyfrowaną na dysku w pliku ... \ MSMQ \ Storage \ p000000x.mq? Albo muszę zaszyfrować treść wiadomości przed wysłaniem do kolejki, a następnie, kiedy zajrzę do kolejki, muszę ją odszyfrować?

Wielkie dzięki!

Odpowiedz

4

Tak, będziesz musiał zaszyfrować dane PRZED umieszczeniem go w wiadomości, a następnie odszyfrowaniu danych po przeczytaniu wiadomości.

„Korzystanie Szyfrowanie Aplikacja na danych” http://blogs.msdn.com/b/johnbreakwell/archive/2008/09/12/sending-encrypted-msmq-messages.aspx

+1

Dziękuję, John. Czytałem wcześniej artykuł, ale postanowiłem zadać pytanie, aby upewnić się jeszcze raz, że dane wiadomości powinny zostać zaszyfrowane przed msmq. Wszystko to odbywa się w ramach realizacji projektu zgodnej z FIPS. –

+0

Uważam, że szyfrowane przechowywanie jest jedną z tych funkcji, które byłyby dobre, ale wiążą się z dużymi (tj. Drogimi) zmianami w projekcie MSMQ. –

1

Ponieważ Microsoft Windows obsługuje szyfrowanie folderu dla wielu użytkowników † poprzez NTFS Encrypting File System (EFS), byłem w stanie wykorzystać ten przejrzysty mechanizm szyfrowania wspierać szyfrowanie MSMQ folder pamięci i tym samym zminimalizować obszar dostępu użytkownika do danych w plikach, które zawierają treści wiadomości i fragmenty tekstu, który w innym wypadku można odczytać w plikach * .mq.

To rozwiązanie jest alternatywą I wymyślił dla kolejek prywatnych (bez integracji domeny) być transparentnie szyfrowane i bez uciekania się do Application-Encrypted Messages lub szyfrowania niestandardowej przez aplikację. W rzeczywistości dotyczy wszystkich kolejek w systemie, ponieważ cała lokalizacja magazynu dla instancji MSMQ jest szyfrowana.

To rozwiązanie umożliwia korzystanie z przystawki MSMQ do wyświetlania komunikatów w kolejkach dla użytkowników, którzy mają do tego uprawnienia, bez wyświetlania w przeglądarce nieczytanego lub zaszyfrowanego tekstu.

Należy zauważyć, że rozwiązanie to prosi, aby zrobić nową lokalizację zapisu na dysku dla MSMQ, ponieważ miałem problemy podczas próby do szyfrowania i konwertować domyślną lokalizację pamięci, która jest pod Windows/System32. Jeśli znajdziesz sposób, aby to rozwiązanie działało bez tworzenia nowego folderu , opublikuj w komentarzach.

Są to kroki mogę podjąć, aby uczynić pracę technicznej EFS dla przejrzysty zaszyfrowanej rozwiązania MSMQ:
(Informacja ta zakłada, że ​​wie, gdzie znaleźć Menedżer kolejki komunikatów, aby skonfigurować usługi i jak przeprowadzić kilka innych podstawowych zadań administratora systemu Windows lub aby dowiedzieć się, jak to zrobić)

  1. Zaloguj w maszynie jako administrator (zakładając usługi kolejkowania wiadomości jest już zainstalowany, jeśli nie to zainstalować go z wiatrem ows Programy i funkcje).

  2. Należy zanotować konto użytkownika, na którym działa Usługa kolejkowania wiadomości (tj. Usługa sieciowa). Będziesz potrzebował tego w następnym kroku ...

  3. Utwórz alternatywny folder pamięci na dysku dla msmq np. C: \ msmq-storage

  4. Przypisz swojego administratora do nowego folderu z uprawnieniami Pełna kontrola.

  5. Przypisz konto użytkownika usługi (zapisane w kroku 2, np. Usługa sieciowa) również do uprawnienia Pełna kontrola do folderu.
    (Jest to bardzo ważny krok, ponieważ daje dostęp do usługi MSMQ użytkownika konta do zaszyfrowanych treści plików komunikatów.)

  6. szyfrowania folderów, przechodząc do jego właściwości oraz umożliwienie wyboru Szyfrowanie. Folder jest teraz zaszyfrowany i może wyświetlać się w innym kolorze. (Wiadomość Można to sprawdzić logując się jako inny użytkownik na komputerze i próbuje uzyskać dostęp do treści zaszyfrowanych plików, w wyniku „Odmowa dostępu”.)

  7. Teraz użyj Menedżera MSMQ aby ponownie wskazać lokalizacje przechowywania (wszystkie) do nowego zaszyfrowanego folderu, który właśnie utworzyłeś na dysku (i z dala od domyślnej lub aktualnej lokalizacji przechowywania, gdziekolwiek się to znajduje). Zmiana spowoduje wyświetlenie prośby o ponowne uruchomienie usługi. Powiedz tak.

Jeśli napotkasz jakiekolwiek problemy z tym rozwiązaniem, opublikuj tutaj w komentarzach. Dziękuję Ci.

Testowałem to rozwiązanie zarówno na Win 7 stacji roboczej Windows 2008 R2 & Server pisząc i czytając z kolejki za pomocą prostej aplikacji .NET opisaną w this article about how to write a bare minimum message queue app.

+1

Takie podejście upraszcza ochronę danych. W produkcji można wpływać na wydajność, dlatego zaleca się testowanie obciążenia i testowanie funkcjonalne. –