Udostępnij za pośrednictwem


Blokada zabezpieczeń PII

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 danych osobowych w dziennikach śledzenia i 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 do łączenia się 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 rozpoczynaniu pracy. 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 pożądane może być 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 znajdującego się w folderze .NET Framework Na przykład %WINDIR%\Microsoft.NET\Framework\v4.0.20728.

Aby zaszyfrować wartości w sekcji app Ustawienia w pliku Web.config dla przykładu

  1. Otwórz wiersz polecenia, używając polecenia Start-Run>.... Wpisz i cmd kliknij przycisk OK.

  2. Przejdź do bieżącego katalogu .NET Framework, wydając następujące polecenie: cd %WINDIR%\Microsoft.NET\Framework\v4.0.20728.

  3. Szyfruj ustawienia konfiguracji aplikacji Ustawienia 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 pliku Machine.config i kolejne scalanie z dowolnymi plikami Web.config w katalogach nadrzędnych przechodzących w dół drzewa katalogów, a na koniec scalając plik 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 zastępowaniu wartości ustawionych w konfiguracji katalogu nadrzędnego w podkatalogach.

Program .NET Framework umożliwia blokowanie elementów pliku konfiguracji, dzięki czemu konfiguracje, które zastępują zablokowane elementy konfiguracji, zgłaszają wyjątki czasu 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, określając lockAllElementsExcept atrybuty lub lockAllAttributesExcept w węźle.

Konfiguracja rejestrowania danych pii

Rejestrowanie danych piI jest kontrolowane przez dwa przełączniki: ustawienie dla całego komputera znajdujące się w pliku Machine.config, które umożliwia administratorowi komputera zezwolenie na rejestrowanie lub odmawianie rejestrowania identyfikatorów PIN oraz 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 falsew elemecie machineSettings Machine.config. Na przykład w poniższych aplikacjach można włączyć rejestrowanie danych pii.

<configuration>
    <system.serviceModel>
        <machineSettings enableLoggingKnownPii="true" />
    </system.serviceModel>
</configuration>

Uwaga

Plik Machine.config ma domyślną lokalizację: %WINDIR%\Microsoft.NET\Framework\v2.0.50727\CONFIG.

enableLoggingKnownPii Jeśli atrybut nie istnieje w pliku Machine.config, rejestrowanie danych piI 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 dla rejestrowania zarówno rejestrowania komunikatów, jak i rejestrowania ś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 są ustawione na truewartość i logKnownPii jest ustawiona na truewartość .

Uwaga

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, obejmuje ręczną modyfikację pliku Machine.config. Należy zachować ostrożność podczas modyfikowania pliku Machine.config jako nieprawidłowych wartości lub składni może uniemożliwić uruchamianie 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:

Aby skonfigurować, skompiluj i uruchom przykład

  1. Upewnij się, że wykonano procedurę instalacji jednorazowej dla przykładów programu Windows Communication Foundation.

  2. Zmodyfikuj enableLoggingKnownPii plik Machine.config, aby ustawić atrybut na true, dodając węzły nadrzędne w razie potrzeby.

  3. Aby skompilować wersję rozwiązania w języku C# lub Visual Basic .NET, postępuj zgodnie z instrukcjami w temacie Building the Windows Communication Foundation Samples (Tworzenie przykładów programu Windows Communication Foundation).

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

  1. Edytuj plik Machine.config, aby ustawić enableLoggingKnownPii atrybut na false.

Zobacz też