Aracılığıyla paylaş


İleti Günlüğe Kaydetme ile İlgili Güvenlik Konuları

Bu konuda, hassas verilerin ileti günlüklerinde kullanıma sunulmaması ve ileti günlüğü tarafından oluşturulan olayların nasıl korunabileceği açıklanmaktadır.

GüvenlikLe ilgili Endişeler

Hassas Bilgileri Günlüğe Kaydetme

Windows Communication Foundation (WCF), uygulamaya özgü üst bilgilerde ve gövdede hiçbir veriyi değiştirmez. WCF ayrıca uygulamaya özgü üst bilgilerde veya gövde verilerinde kişisel bilgileri izlemez.

İleti günlüğü etkinleştirildiğinde, sorgu dizesi gibi uygulamaya özgü üst bilgilerde kişisel bilgiler; ve kredi kartı numarası gibi gövde bilgileri günlüklerde görünür hale gelebilir. Uygulama dağıtıcısı, yapılandırma ve günlük dosyalarında erişim denetimini zorunlu tutmaktan sorumludur. Bu tür bilgilerin görünür olmasını istemiyorsanız, günlükleri devre dışı bırakmanız veya günlükleri paylaşmak istiyorsanız verilerin bir bölümünü filtrelemeniz gerekir.

Aşağıdaki ipuçları, bir günlük dosyasının içeriğinin istemeden ortaya çıkmasını önlemenize yardımcı olabilir:

  • Günlük dosyalarının hem Web konağı hem de kendi kendine konak senaryolarında Erişim Denetim Listeleri (ACL) ile korunduğundan emin olun.

  • Web isteği kullanılarak kolayca sunulmayabilecek bir dosya uzantısı seçin. Örneğin, .xml dosya uzantısı güvenli bir seçenek değildir. Sunulabilecek uzantıların listesini görmek için Internet Information Services (IIS) yönetim kılavuzuna bakabilirsiniz.

  • Web tarayıcısı kullanan bir dış taraf tarafından erişilmesini önlemek için Web ana bilgisayarı vroot ortak dizininin dışında olması gereken günlük dosyası konumu için mutlak bir yol belirtin.

Varsayılan olarak, anahtarlar ve kullanıcı adı ve parola gibi kişisel bilgiler (PII) izlemelerde ve günlüğe kaydedilen iletilerde günlüğe kaydedilmez. Ancak makine yöneticisi, makinede machineSettings çalışan uygulamaların bilinen kişisel bilgileri (PII) günlüğe kaydetmesine izin vermek için Machine.config dosyasının öğesindeki özniteliğini kullanabilirenableLoggingKnownPII. Aşağıdaki yapılandırma bunun nasıl yapılacağını gösterir:

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

Uygulama dağıtıcısı daha sonra APP.config veya Web.config dosyasındaki özniteliğini kullanarak logKnownPii PII günlüğünü aşağıdaki gibi etkinleştirebilir:

<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>  

Yalnızca her iki ayar true da PII günlüğü etkin olduğunda. İki anahtarın birleşimi, her uygulama için bilinen PII'yi günlüğe kaydetme esnekliği sağlar.

Önemli

.NET Framework 4.6.1'de logEntireMessage ve logKnownPii bayrakları, aşağıdaki örnekte <system.serviceModel><messageLogging logEntireMessage="true" logKnownPii="true" …gösterildiği gibi PII günlüğünü etkinleştirmek için Web.config dosyasında veya App.config dosyasında da olarak ayarlanmalıdırtrue.

Yapılandırma dosyasında iki veya daha fazla özel kaynak belirtirseniz yalnızca ilk kaynağın özniteliklerinin okunduğunu unutmayın. Diğerleri yok sayılır. Bu, aşağıdaki App.config dosyasında, PII günlüğü ikinci kaynak için açıkça etkinleştirilse bile her iki kaynak için de PII'nin günlüğe kaydedilmediği anlamına gelir.

<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>  

<machineSettings enableLoggingKnownPii="Boolean"/> öğesi Machine.config dosyasının dışında varsa, sistem bir ConfigurationErrorsExceptionoluşturur.

Değişiklikler yalnızca uygulama başlatıldığında veya yeniden başlatıldığında etkili olur. Her iki öznitelik de olarak ayarlandığında başlangıçta bir olay günlüğe truekaydedilir. Ancak olarak ayarlandıysa logKnownPii bir olay da günlüğe trueenableLoggingKnownPiifalsekaydedilir.

Makine yöneticisi ve uygulama dağıtıcısı bu iki anahtarı kullanırken çok dikkatli olmalıdır. PII günlüğü etkinleştirildiyse güvenlik anahtarları ve PII günlüğe kaydedilir. Devre dışı bırakılırsa, ileti üst bilgilerinde ve gövdelerinde hassas ve uygulamaya özgü veriler günlüğe kaydedilir. Gizlilik ve PII'yi kullanıma sunulmaktan koruma hakkında daha kapsamlı bir tartışma için bkz . Kullanıcı Gizliliği.

Dikkat

PII, hatalı biçimlendirilmiş iletilerde gizli değildir. Bu tür iletilerde değişiklik yapılmadan olduğu gibi günlüğe kaydedilir. Daha önce bahsedilen özniteliklerin bu konuda hiçbir etkisi yoktur.

Özel İzleme Dinleyicisi

İleti Günlüğü izleme kaynağına özel izleme dinleyicisi eklemek, yöneticiyle kısıtlanması gereken bir ayrıcalıktır. Bunun nedeni, kötü amaçlı özel dinleyicilerin iletileri uzaktan gönderecek şekilde yapılandırılabilmesidir ve bu da hassas bilgilerin açığa çıkmasına neden olur. Ayrıca, uzak bir veritabanına ileti göndermek için özel bir dinleyici yapılandırıyorsanız, uzak makinedeki ileti günlüklerinde uygun erişim denetimini zorunlu tutmanız gerekir.

İleti Günlüğü tarafından Tetiklenen Olaylar

Aşağıda, ileti günlüğü tarafından yayılan tüm olaylar listelenir.

  • İleti günlüğü açık: Bu olay, yapılandırmada veya WMI aracılığıyla ileti günlüğü etkinleştirildiğinde yayılır. Olayın içeriği şudur: "İleti günlüğü açıldı. Hassas bilgiler, ileti gövdeleri gibi kablo üzerinde şifrelenmiş olsalar bile düz metin olarak günlüğe kaydedilebilir."

  • İleti günlüğü kapatılıyor: Bu olay, wmi aracılığıyla ileti günlüğü devre dışı bırakıldığında yayılır. Olayın içeriği "İleti günlüğü kapatıldı"dır.

  • Bilinen PII Günlüğünü Aç: Bu olay, bilinen PII'nin günlüğe kaydedilmesi etkinleştirildiğinde yayılır. Machine.config dosyasının enableLoggingKnownPii öğesindeki machineSettings özniteliği olarak ayarlandığında trueve logKnownPii App.config veya Web.config dosyasındaki source öğesinin özniteliği olarak trueayarlandığında bu durum ortaya çıkar.

  • Bilinen PII Günlüğüne İzin Verilmiyor: Bu olay, bilinen PII'nin günlüğe kaydedilmesine izin verilmediğinde yayılır. App.config veya Web.config dosyasındaki source öğesinin özniteliği olarak trueayarlandığında ancak Machine.config dosyasının enableLoggingKnownPii öğesindeki machineSettings özniteliği olarak ayarlandığında falsebu durum ortaya çıkarlogKnownPii. Özel durum oluşturulmaz.

Bu olaylar Windows ile birlikte gelen Olay Görüntüleyicisi aracında görüntülenebilir. Bu konuda daha fazla bilgi için bkz . Olay Günlüğü.

Ayrıca bkz.