Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W przykładzie SecurityLockdown pokazano, jak kontrolować kilka funkcji związanych z zabezpieczeniami usługi Windows Communication Foundation (WCF) przez:
Szyfrowanie poufnych informacji w pliku konfiguracji usługi.
Blokowanie elementów w pliku konfiguracji w taki sposób, aby zagnieżdżone podkatalogi usługi nie mogły zastąpić ustawień.
Kontrolowanie rejestrowania informacji umożliwiających identyfikację w dziennikach śledzenia i dziennikach komunikatów.
Dyskusja
Każda z tych funkcji może służyć oddzielnie lub razem do kontrolowania aspektów zabezpieczeń usługi. Nie jest to ostateczny przewodnik dotyczący zabezpieczania usługi WCF.
Pliki konfiguracji programu .NET Framework mogą zawierać poufne informacje, takie jak parametry połączenia w celu nawiązania połączenia z bazami danych. W udostępnionych scenariuszach hostowanych w sieci Web może być pożądane szyfrowanie tych informacji w pliku konfiguracji usługi, tak aby dane zawarte w pliku konfiguracji były odporne na przypadkowe wyświetlanie. Program .NET Framework 2.0 lub nowszy ma możliwość szyfrowania fragmentów pliku konfiguracji przy użyciu interfejsu programowania aplikacji ochrony danych systemu Windows (DPAPI) lub dostawcy usług kryptograficznych RSA. aspnet_regiis.exe przy użyciu interfejsu DPAPI lub RSA może szyfrować fragmenty pliku konfiguracji.
W scenariuszach hostowanych w Internecie można mieć usługi w podkatalogach innych usług. Domyślna semantyka określania wartości konfiguracji umożliwia plikom konfiguracji w katalogach zagnieżdżonych zastąpienie wartości konfiguracji w katalogu nadrzędnym. W niektórych sytuacjach może to być niepożądane z różnych powodów. Konfiguracja usługi WCF obsługuje blokowanie wartości konfiguracji, dzięki czemu zagnieżdżona konfiguracja generuje wyjątki, gdy zagnieżdżona usługa jest uruchamiana przy użyciu zastąpionych wartości konfiguracji.
W tym przykładzie pokazano, jak kontrolować rejestrowanie znanych danych osobowych w dziennikach śledzenia i komunikatów, takich jak nazwa użytkownika i hasło. Domyślnie rejestrowanie znanych danych piI jest wyłączone, jednak w niektórych sytuacjach rejestrowanie danych piI może być ważne podczas debugowania aplikacji. Ten przykład jest oparty na Rozpoczynanie. Ponadto w tym przykładzie użyto śledzenia i rejestrowania komunikatów. Aby uzyskać więcej informacji, zobacz przykład Śledzenie i rejestrowanie komunikatów .
Szyfrowanie elementów pliku konfiguracji
Ze względów bezpieczeństwa w udostępnionym środowisku hostingu sieci Web może być pożądane szyfrowanie niektórych elementów konfiguracji, takich jak parametry połączenia bazy danych, które mogą zawierać poufne informacje. Element konfiguracji może zostać zaszyfrowany przy użyciu narzędzia aspnet_regiis.exe znalezionego w folderze .NET Framework Na przykład %WINDIR%\Microsoft.NET\Framework\v4.0.20728.
Aby zaszyfrować wartości w sekcji appSettings w Web.config dla przykładu
Otwórz wiersz polecenia, używając polecenia Start-Run>.... Wpisz
cmd, a następnie kliknij przycisk OK.Przejdź do bieżącego katalogu .NET Framework, wydając następujące polecenie:
cd %WINDIR%\Microsoft.NET\Framework\v4.0.20728.Zaszyfruj ustawienia konfiguracji appSettings w folderze Web.config, wydając następujące polecenie:
aspnet_regiis -pe "appSettings" -app "/servicemodelsamples" -prov "DataProtectionConfigurationProvider".
Więcej informacji na temat szyfrowania sekcji plików konfiguracji można znaleźć, czytając instrukcje dotyczące interfejsu DPAPI w konfiguracji ASP.NET (Tworzenie bezpiecznych aplikacji ASP.NET: uwierzytelnianie, autoryzacja i bezpieczna komunikacja) oraz instrukcje dotyczące rsa w konfiguracji ASP.NET (Instrukcje: Szyfrowanie sekcji konfiguracji w ASP.NET 2.0 przy użyciu rsA).
Blokowanie elementów pliku konfiguracji
W scenariuszach hostowanych w Internecie można mieć usługi w podkatalogach usług. W takich sytuacjach wartości konfiguracji usługi w podkatalogu są obliczane przez badanie wartości w Machine.config i kolejne scalanie z plikami Web.config w katalogach nadrzędnych, poruszając się w dół drzewa katalogów, a na koniec scalając z plikiem Web.config w katalogu zawierającym usługę. Domyślne zachowanie większości elementów konfiguracji polega na umożliwieniu plików konfiguracji w podkatalogach zastąpienia wartości ustawionych w katalogach nadrzędnych. W niektórych sytuacjach może być pożądane, aby zapobiec temu, by pliki konfiguracyjne w podkatalogach nadpisywały wartości ustawione w konfiguracji katalogu nadrzędnego.
.NET Framework umożliwia blokowanie elementów pliku konfiguracji, dzięki czemu konfiguracje, które zastępują zablokowane elementy konfiguracji, zgłaszają wyjątki w czasie wykonywania.
Element konfiguracji można zablokować, określając lockItem atrybut węzła w pliku konfiguracji, na przykład w celu zablokowania węzła CalculatorServiceBehavior w pliku konfiguracji, aby usługi kalkulatora w zagnieżdżonych plikach konfiguracji nie mogły zmienić zachowania, można użyć następującej konfiguracji.
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="CalculatorServiceBehavior" lockItem="true">
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Blokowanie elementów konfiguracji może być bardziej szczegółowe. Listę elementów można określić jako wartość lockElements , aby zablokować zestaw elementów w kolekcji elementów podrzędnych. Listę atrybutów można określić jako wartość lockAttributes , aby zablokować zestaw atrybutów w elemecie. Cała kolekcja elementów lub atrybutów może być zablokowana z wyjątkiem określonej listy poprzez określenie atrybutów lockAllElementsExcept lub lockAllAttributesExcept na węźle.
Konfiguracja logowania danych osobowych (PII)
Rejestrowanie danych piI jest kontrolowane przez dwa przełączniki: ustawienie dla całego komputera znajdujące się w Machine.config, które umożliwia administratorowi komputera zezwolenie na rejestrowanie danych piI i ustawienie aplikacji, które umożliwia administratorowi aplikacji przełączanie rejestrowania piI dla każdego źródła w pliku Web.config lub App.config.
Ustawienie całego komputera jest kontrolowane przez ustawienie enableLoggingKnownPii na true lub false w elemencie machineSettings w Machine.config. Na przykład można włączyć logowanie PII w aplikacjach.
<configuration>
<system.serviceModel>
<machineSettings enableLoggingKnownPii="true" />
</system.serviceModel>
</configuration>
Uwaga / Notatka
Plik Machine.config ma domyślną lokalizację: %WINDIR%\Microsoft.NET\Framework\v2.0.50727\CONFIG.
Jeśli atrybut enableLoggingKnownPii nie jest obecny w Machine.config, rejestrowanie danych osobowych jest niedozwolone.
Włączenie rejestrowania danych piI dla aplikacji odbywa się przez ustawienie logKnownPii atrybutu elementu źródłowego na true lub false w pliku Web.config lub App.config. Na przykład następujące polecenie umożliwia rejestrowanie danych PII zarówno w logach komunikatów, jak i logach śledzenia.
<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>
logKnownPii Jeśli atrybut nie zostanie określony, dane osobowe nie są rejestrowane.
Dane osobowe są rejestrowane tylko wtedy, gdy oba enableLoggingKnownPii oraz true są ustawione na logKnownPii i true.
Uwaga / Notatka
System.Diagnostics ignoruje wszystkie atrybuty we wszystkich źródłach, z wyjątkiem pierwszego wymienionego w pliku konfiguracji. Dodanie atrybutu logKnownPii do drugiego źródła w pliku konfiguracji nie ma wpływu.
Ważne
Aby uruchomić ten przykład, wymaga ręcznej modyfikacji Machine.config. Podczas modyfikowania Machine.config należy zachować ostrożność, ponieważ nieprawidłowe wartości lub składnia mogą uniemożliwić działanie wszystkich aplikacji programu .NET Framework.
Istnieje również możliwość szyfrowania elementów pliku konfiguracji przy użyciu interfejsu DPAPI i RSA. Aby uzyskać więcej informacji, skorzystaj z następujących linków:
Tworzenie bezpiecznych aplikacji ASP.NET: uwierzytelnianie, autoryzacja i bezpieczna komunikacja
Instrukcje: szyfrowanie sekcji konfiguracji w ASP.NET 2.0 przy użyciu rsa
Aby skonfigurować, skompiluj i uruchom przykład
Upewnij się, że wykonano procedurę instalacji One-Time dla przykładów programu Windows Communication Foundation.
Edytuj Machine.config, aby ustawić
enableLoggingKnownPiiatrybut natrue, dodając węzły nadrzędne w razie potrzeby.Aby skompilować wersję rozwiązania w języku C# lub Visual Basic .NET, postępuj zgodnie z instrukcjami w Kompilowanie przykładów Windows Communication Foundation.
Aby uruchomić przykład w konfiguracji pojedynczej lub między komputerami, postępuj zgodnie z instrukcjami w temacie Uruchamianie przykładów programu Windows Communication Foundation.
Aby wyczyścić próbkę
- Edytuj Machine.config, aby ustawić
enableLoggingKnownPiiatrybut nafalse.