次の方法で共有


メッセージ ログのセキュリティに関する懸念事項

このトピックでは、機密データがメッセージ ログに公開されないようにする方法と、メッセージ ログによって生成されたイベントを保護する方法について説明します。

セキュリティに関する懸念事項

機密情報のログ記録

Windows Communication Foundation (WCF) では、アプリケーション固有のヘッダーと本文のデータは変更されません。 WCF では、アプリケーション固有のヘッダーまたは本文データの個人情報も追跡されません。

メッセージ ログが有効になっている場合、クエリ文字列などのアプリケーション固有のヘッダー内の個人情報。とクレジット カード番号などの本文情報がログに表示されます。 アプリケーション 配置者は、構成ファイルとログ ファイルに対してアクセス制御を適用する役割を担います。 この種の情報を表示しない場合は、ログを無効にするか、ログを共有する場合はデータの一部を除外する必要があります。

次のヒントは、ログ ファイルの内容が意図せずに公開されないようにするのに役立ちます。

  • Web ホストとセルフホストの両方のシナリオで、ログ ファイルがアクセス制御リスト (ACL) によって保護されていることを確認します。

  • Web 要求を使用して簡単に提供できないファイル拡張子を選択します。 たとえば、.xml ファイル拡張子は安全な選択ではありません。 インターネット インフォメーション サービス (IIS) 管理ガイドを確認して、提供できる拡張機能の一覧を確認できます。

  • ログ ファイルの場所の絶対パスを指定します。これは、Web ブラウザーを使用して外部パーティからアクセスされないように、Web ホスト vroot パブリック ディレクトリの外部に配置する必要があります。

既定では、キーとユーザー名やパスワードなどの個人を特定できる情報 (PII) は、トレースとログに記録されたメッセージには記録されません。 ただし、コンピューター管理者は、Machine.config ファイルの machineSettings 要素の enableLoggingKnownPII 属性を使用して、コンピューター上で実行されているアプリケーションが既知の個人を特定できる情報 (PII) をログに記録することを許可できます。 次の構成では、これを行う方法を示します。

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

その後、アプリケーション 配置者は、App.config または Web.config ファイルの logKnownPii 属性を使用して、PII ログを有効にすることができます。

<system.diagnostics>
  <sources>
      <source name="System.ServiceModel.MessageLogging"
        logKnownPii="true">
        <listeners>
                 <add name="messages"
                 type="System.Diagnostics.XmlWriterTraceListener"
                 initializeData="c:\logs\messages.svclog" />
          </listeners>
      </source>
    </sources>
</system.diagnostics>

両方の設定が true されている場合にのみ、PII ログが有効になります。 2 つのスイッチを組み合わせることで、各アプリケーションの既知の PII を柔軟にログに記録できます。

重要

.NET Framework 4.6.1 では、次の例の <system.serviceModel><messageLogging logEntireMessage="true" logKnownPii="true" …に示すように、logEntireMessage フラグと logKnownPii フラグを Web.config ファイルまたは App.config ファイルで true に設定して PII ログを有効にする必要があります。

構成ファイルで 2 つ以上のカスタム ソースを指定した場合、最初のソースの属性のみが読み取られる点に注意してください。 その他は無視されます。 つまり、次の App.configでは、2 番目のソースに対して PII ログが明示的に有効になっている場合でも、両方のソースに対して PII がログに記録されません。

<system.diagnostics>
   <sources>
      <source name="System.ServiceModel.MessageLogging"
              logKnownPii="false">
              <listeners>
                 <add name="messages"
                      type="System.Diagnostics.XmlWriterTraceListener"
                      initializeData="c:\logs\messages.svclog" />
              </listeners>
            </source>
      <source name="System.ServiceModel"
              logKnownPii="true">
              <listeners>
                 <add name="traces"
                      type="System.Diagnostics.XmlWriterTraceListener"
                      initializeData="c:\logs\traces.svclog" />
              </listeners>
      </source>
   </sources>
</system.diagnostics>

Machine.config ファイルの外部に <machineSettings enableLoggingKnownPii="Boolean"/> 要素が存在する場合、システムは ConfigurationErrorsExceptionをスローします。

変更は、アプリケーションの起動時または再起動時にのみ有効です。 両方の属性が trueに設定されている場合、イベントは起動時にログに記録されます。 logKnownPiitrue に設定されているが、enableLoggingKnownPiifalse場合、イベントもログに記録されます。

この 2 つのスイッチを使用する場合は、マシン管理者とアプリケーション 配置者は細心の注意を払う必要があります。 PII ログが有効になっている場合、セキュリティ キーと PII がログに記録されます。 無効にした場合でも、機密性の高いアプリケーション固有のデータはメッセージ ヘッダーと本文に記録されます。 プライバシーと PII が公開されないように保護する方法の詳細については、「ユーザー プライバシー」を参照してください。

注意

PII は、形式が正しくないメッセージでは非表示になりません。 このようなメッセージは、変更なしで as-is ログに記録されます。 前述の属性は、これに影響しません。

カスタム トレース リスナー

メッセージ ログ トレース ソースにカスタム トレース リスナーを追加することは、管理者に制限する必要がある特権です。 これは、悪意のあるカスタム リスナーをリモートでメッセージを送信するように構成でき、機密情報の漏えいにつながるためです。 さらに、リモート データベースなど、ネットワーク上でメッセージを送信するようにカスタム リスナーを構成する場合は、リモート コンピューターのメッセージ ログに適切なアクセス制御を適用する必要があります。

メッセージ ログによってトリガーされるイベント

次に、メッセージ ログによって出力されるすべてのイベントを示します。

  • メッセージ のログ記録: このイベントは、構成または WMI でメッセージ ログが有効になっているときに生成されます。 イベントの内容は「メッセージログが有効になりました。」 機密情報は、メッセージ本文など、ネットワーク上で暗号化されている場合でも、クリア テキストで記録される可能性があります。

  • メッセージ のログオフ: このイベントは、WMI を介してメッセージ ログが無効になっている場合に生成されます。 イベントの内容は、"メッセージ ログが無効になっています" です。

  • 既知の PII のログ記録: このイベントは、既知の PII のログ記録が有効な場合に生成されます。 これは、Machine.config ファイルの machineSettings 要素の enableLoggingKnownPii 属性が trueに設定され、App.config または Web.config ファイル内の source 要素の logKnownPii 属性が trueに設定されている場合に発生します。

  • Log Known PII Not Allowed: このイベントは、既知の PII のログ記録が許可されていない場合に生成されます。 これは、App.config または Web.config ファイルの source 要素の logKnownPii 属性が trueに設定されているが、Machine.config ファイルの machineSettings 要素の enableLoggingKnownPii 属性が falseに設定されている場合に発生します。 例外はスローされません。

これらのイベントは、Windows に付属するイベント ビューアー ツールで表示できます。 詳細については、「イベント ログを参照してください」。

関連項目