Bagikan melalui


Penguncian Keamanan PII

Sampel SecurityLockdown menunjukkan cara mengontrol beberapa fitur terkait keamanan dari layanan Windows Communication Foundation (WCF) dengan:

  • Mengenkripsi informasi sensitif dalam file konfigurasi layanan.

  • Mengunci elemen dalam file konfigurasi sehingga subdirektori layanan berlapis tidak dapat mengambil alih pengaturan.

  • Mengontrol pengelogan Informasi Pengidentifikasi Pribadi (PII) dalam log jejak dan pesan.

Diskusi

Masing-masing fitur ini dapat digunakan secara terpisah atau bersama-sama untuk mengontrol aspek keamanan layanan. Ini bukan panduan pasti untuk mengamankan layanan WCF.

File konfigurasi .NET Framework dapat berisi informasi sensitif seperti string koneksi untuk menyambungkan ke database. Dalam skenario bersama yang dihosting Web, mungkin menggiurkan untuk mengenkripsi informasi ini dalam file konfigurasi untuk layanan sehingga data yang terkandung dalam file konfigurasi tahan terhadap tampilan biasa. .NET Framework 2.0 dan yang lebih baru memiliki kemampuan untuk mengenkripsi bagian file konfigurasi menggunakan antarmuka pemrograman aplikasi Perlindungan Data (DPAPI) Windows atau penyedia Kriptografi RSA. aspnet_regiis.exe menggunakan DPAPI atau RSA dapat mengenkripsi bagian tertentu dari file konfigurasi.

Dalam skenario yang dihosting Web dimungkinkan untuk memiliki layanan dalam subdirektori layanan lain. Semantik default untuk menentukan nilai konfigurasi memungkinkan file konfigurasi di direktori berlapis untuk mengambil alih nilai konfigurasi di direktori induk. Dalam situasi tertentu ini mungkin tidak diinginkan karena berbagai alasan. Konfigurasi layanan WCF mendukung penguncian nilai konfigurasi sehingga konfigurasi berlapis menghasilkan pengecualian saat layanan bersarang dijalankan menggunakan nilai konfigurasi yang diganti.

Sampel ini menunjukkan cara mengontrol pengelogan Informasi Pengidentifikasi Pribadi (PII) yang diketahui dalam log jejak dan pesan, seperti nama pengguna dan kata sandi. Secara default, pengelogan PII yang diketahui dinonaktifkan namun dalam situasi tertentu pengelogan PII dapat menjadi penting dalam melakukan debug aplikasi. Sampel ini berdasarkan Memulai. Selain itu, sampel ini menggunakan penelusuran dan pengelogan pesan. Untuk informasi selengkapnya, lihat sampel Penelusuran dan Pengelogan Pesan.

Mengenkripsi Elemen File Konfigurasi

Untuk tujuan keamanan di lingkungan hosting Web bersama, mungkin menggiurkan untuk mengenkripsi elemen konfigurasi tertentu, seperti string koneksi database yang mungkin berisi informasi sensitif. Elemen konfigurasi dapat dienkripsi menggunakan alat aspnet_regiis.exe yang ditemukan di folder .NET Framework Misalnya, %WINDIR%\Microsoft.NET\Framework\v4.0.20728.

Untuk mengenkripsi nilai di bagian appSettings di Web.config untuk sampel

  1. Buka prompt perintah dengan menggunakan Start->Run…. Ketik pada cmd dan klik OK.

  2. Navigasi ke direktori .NET Framework saat ini dengan mengeluarkan perintah berikut: cd %WINDIR%\Microsoft.NET\Framework\v4.0.20728.

  3. Enkripsi pengaturan konfigurasi appSettings di folder Web.config dengan mengeluarkan perintah berikut: aspnet_regiis -pe "appSettings" -app "/servicemodelsamples" -prov "DataProtectionConfigurationProvider".

Informasi selengkapnya tentang mengenkripsi bagian file konfigurasi dapat ditemukan dengan membaca petunjuk tentang DPAPI di konfigurasi ASP.NET (Membangun Aplikasi ASP.NET Aman: Autentikasi, Otorisasi, dan Komunikasi Aman) dan cara- ke di RSA dalam konfigurasi ASP.NET (Cara: Mengenkripsi Bagian Konfigurasi di ASP.NET 2.0 Menggunakan RSA).

Mengunci elemen file konfigurasi

Dalam skenario yang dihosting Web, dimungkinkan untuk memiliki layanan dalam subdirektori layanan. Dalam situasi ini, nilai konfigurasi untuk layanan dalam subdirektori dihitung dengan memeriksa nilai dalam Machine.config dan secara berturut-turut menggabungkan dengan file Web.config di direktori induk yang memindahkan ke bawah pohon direktori dan akhirnya menggabungkan file Web.config di direktori yang berisi layanan. Perilaku default untuk sebagian besar elemen konfigurasi adalah memungkinkan file konfigurasi dalam subdirektori untuk mengambil alih nilai yang ditetapkan dalam direktori induk. Dalam situasi tertentu, mungkin menggiurkan untuk mencegah file konfigurasi dalam subdirektori mengesampingkan nilai yang ditetapkan dalam konfigurasi direktori induk.

.NET Framework menyediakan cara untuk mengunci elemen file konfigurasi sehingga konfigurasi yang mengambil alih elemen konfigurasi terkunci melemparkan pengecualian run-time.

Elemen konfigurasi dapat dikunci dengan menentukan atribut lockItem untuk node dalam file konfigurasi, misalnya, untuk mengunci node CalculatorServiceBehavior dalam file konfigurasi sehingga layanan kalkulator dalam file konfigurasi berlapis tidak dapat mengubah perilaku, konfigurasi berikut dapat digunakan.

<configuration>
   <system.serviceModel>
      <behaviors>
          <serviceBehaviors>
             <behavior name="CalculatorServiceBehavior" lockItem="true">
               <serviceMetadata httpGetEnabled="True"/>
               <serviceDebug includeExceptionDetailInFaults="False" />
             </behavior>
          </serviceBehaviors>
       </behaviors>
    </system.serviceModel>
</configuration>

Penguncian elemen konfigurasi bisa lebih spesifik. Daftar elemen dapat ditentukan sebagai nilai lockElements untuk mengunci sekumpulan elemen dalam kumpulan sub-elemen. Daftar atribut dapat ditentukan sebagai nilai lockAttributes untuk mengunci sekumpulan atribut dalam elemen. Seluruh koleksi elemen atau atribut dapat dikunci kecuali untuk daftar tertentu dengan menentukan atribut lockAllElementsExcept atau lockAllAttributesExcept pada node.

Konfigurasi Pengelogan PII

Pengelogan PII dikendalikan oleh dua sakelar: pengaturan di seluruh komputer yang ditemukan di Machine.config yang memungkinkan administrator komputer untuk mengizinkan atau menolak pengelogan PII dan pengaturan aplikasi yang memungkinkan administrator aplikasi untuk beralih pengelogan PII untuk setiap sumber dalam file Web.config atau App.config.

Pengaturan seluruh komputer dikontrol dengan mengatur enableLoggingKnownPii ke true atau false, dalam elemen machineSettings di Machine.config. Misalnya, berikut ini memungkinkan aplikasi untuk mengaktifkan pengelogan PII.

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

Catatan

File Machine.config memiliki lokasi default: %WINDIR%\Microsoft.NET\Framework\v2.0.50727\CONFIG.

Jika atribut enableLoggingKnownPii tidak ada dalam Machine.config, pengelogan PII tidak diizinkan.

Mengaktifkan pengelogan PII untuk aplikasi dilakukan dengan mengatur atribut logKnownPii elemen sumber ke true atau false dalam file Web.config atau App.config. Misalnya, berikut ini memungkinkan pengelogan PII untuk pengelogan pesan dan pengelogan jejak.

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

ika atribut logKnownPii tidak ditentukan, maka PII tidak dicatat.

PII hanya dicatat jika kedua enableLoggingKnownPii diatur ke true, dan logKnownPii diatur ke true.

Catatan

System.Diagnostics mengabaikan semua atribut pada semua sumber kecuali yang pertama tercantum dalam file konfigurasi. Menambahkan atribut logKnownPii ke sumber kedua dalam file konfigurasi tidak berpengaruh.

Penting

Untuk menjalankan sampel ini melibatkan modifikasi manual Machine.config. Perawatan harus diambil saat memodifikasi Machine.config sebagai nilai atau sintaks yang salah dapat mencegah semua aplikasi .NET Framework berjalan.

Juga memungkinkan untuk mengenkripsi elemen file konfigurasi menggunakan DPAPI dan RSA. Untuk mengetahui informasi lebih lanjut, lihat tautan berikut:

Untuk menyiapkan, membangun dan menjalankan sampel

  1. Pastikan Anda telah melakukan Prosedur Penyiapan Satu Kali untuk Sampel Windows Communication Foundation.

  2. Edit Machine.config untuk mengatur atribut enableLoggingKnownPii ke true, menambahkan node induk jika perlu.

  3. Untuk membangun solusi edisi C# atau Visual Basic .NET, ikuti petunjuknya di Membangun Sampel WCF.

  4. Untuk menjalankan sampel dalam konfigurasi tunggal atau lintas komputer, ikuti petunjuk di Menjalankan Sampel Windows Communication Foundation.

Untuk membersihkan sampel

  1. Edit Machine.config untuk mengatur atribut enableLoggingKnownPii ke false.

Lihat juga