SQL Server, Internet Information Server, dan mesin ASP.NET semuanya menyediakan model keamanan solid yang bekerja sama dengan baik. Untuk menjaga keamanan data pengguna dan aplikasi, Microsoft juga menetapkan pengaturan default untuk setiap layanan ke nilai yang cukup rendah.
Tantangan yang dihadapi sebagian besar pengembang adalah bagaimana menggunakan SQL Server, IIS, dan ASP.NET untuk menetapkan tingkat kepercayaan yang sesuai antara aplikasi dan data tanpa meninggalkan celah keamanan yang dapat dengan mudah disusupi oleh orang lain. Karena ada tiga jenis layanan yang terlibat (SQL Server, IIS, dan ASP.NET), ada tiga langkah penting yang harus diambil untuk memastikan keamanan solusi. Bagian ini membahas salah satu metode yang lebih umum (dan dapat diandalkan) dalam menetapkan izin dan tingkat kepercayaan yang memadai untuk aplikasi Web.
Tentukan akun pengguna IIS kustom DotNetKB
Cara teraman untuk mengamankan aplikasi Web Anda adalah dengan menentukan pengguna khusus dengan izin terbatas, lalu mengonfigurasi IIS untuk dijalankan sebagai pengguna khusus saat menjalankan aplikasi Web Anda. Hal ini cukup mudah untuk diterapkan dan memastikan bahwa setiap pengunjung aplikasi Web Anda hanya memiliki izin yang Anda inginkan.
Langkah pertama adalah membuat pengguna Windows baru (disebut DotNetKB dalam contoh ini), menetapkan kata sandi yang kuat untuknya, dan kemudian menambahkannya ke Grup Tamu Windows (Guest Windows Group). Selain itu, pastikan kotak centang Kata Sandi tidak pernah kedaluwarsa dan Pengguna tidak dapat mengubah kata sandi dipilih. Ini akan menghasilkan pengguna dengan hak istimewa terbatas yang dapat Anda gunakan sebagai identitas saat menjalankan aplikasi Web Anda di IIS (lihat Gambar 1).
Kemudian, hubungi Administrator Server Informasi Internet dan pilih aplikasi Web yang menampung halaman-halaman ini. Dalam contoh ini, Anda dapat memilih aplikasi Web (DotNetKB_WebSite) yang menghosting halaman pengujian yang dibuat sebelumnya. Klik kanan aplikasi web dalam tampilan struktur pohon dan pilih Properti... dari menu peka konteks. Kemudian pilih Keamanan Direktori dan klik tombol Edit di bagian Kontrol akses dan otentikasi anonim pada kotak dialog. Terakhir, masukkan nama pengguna khusus (DotNetKB), hapus centang pada kotak Izinkan IIS mengontrol kata sandi, dan masukkan kata sandi untuk akun pengguna khusus. Setelah menyelesaikan semua pekerjaan ini, klik tombol OK untuk menyimpan perubahan ini ke database konfigurasi IIS (lihat Gambar 2).
[Potong Halaman]
Pada titik ini, IIS akan berjalan di bawah akun khusus dengan izin terbatas. Setiap pengunjung yang mengunjungi halaman web aplikasi Anda akan dijalankan sebagai pengguna khusus ini dan hanya akan memiliki izin autentikasi untuk pengguna khusus tersebut.
Otorisasi akun pengguna DotNetKB untuk mengakses SQL Server
Anda kemudian perlu memberikan izin yang sesuai kepada pengguna khusus untuk mengakses database (DotNetKB). Untuk melakukan ini, Anda dapat menggunakan Microsoft SQL Server Enterprise Manager atau menulis skrip khusus untuk membuat pengguna tersebut dan memberinya akses ke objek tertentu. Artikel ini menjelaskan cara melakukannya menggunakan SQL Server Enterprise Manager.
Catatan: Meskipun Visual Studio .NET 2003 memiliki banyak fitur terintegrasi canggih yang kompatibel dengan SQL Server, hal ini tidak memungkinkan pengelolaan pengguna dan izin pengguna dengan mudah dari dalam Visual Studio .NET 2003. Dalam organisasi dan tim besar, tugas-tugas tingkat lanjut ini biasanya dilakukan oleh administrator database. Oleh karena itu, setelah memulai SQL Server Enterprise Manager, Anda dapat mengikuti langkah-langkah di bawah ini untuk menambahkan pengguna khusus (DotNetKB) ke database.
·Pada tampilan pohon di sebelah kiri, perluas node untuk menampilkan database DotNetKB. Di komputer saya, tampilan pohon disusun sebagai berikut: Console Root SQL Server Group (LOCAL) (Windows NT) Databases DotNetKB.
·Kemudian, klik kanan pada node Users di bawah database dan pilih Pengguna Database Baru... (Pengguna Database Baru...). Ketika kotak dialog Properti Pengguna Basis Data - Pengguna Baru muncul, pilih (<Baru>) dari kotak drop-down Nama login.
·Ketika kotak dialog Properti Login SQL Server - Login Baru muncul, pilih tab Umum dan masukkan DotNetKB di kotak input Nama. Pastikan tombol radio Otentikasi Windows dipilih dan pilih nama komputer tempat akun pengguna khusus berada dari kotak drop-down Domain. Kemudian pilih DotNetKB dari kotak drop-down Database.
·Sekarang, pilih tab Databases, temukan database DotNetKB dalam daftar di bagian atas kotak dialog dan pilih. Lalu, pastikan peran publik dipilih dalam daftar di bagian bawah kotak dialog. Terakhir, klik tombol OK di bagian bawah kotak dialog untuk menyimpan perubahan Anda.
Kemudian, Anda perlu menambahkan izin eksekusi ke semua prosedur tersimpan dan fungsi kustom di database DotNetKB. Untuk melakukan ini, Anda hanya perlu memberikan izin kepada peran publik. Anda dapat memberikan izin kepada pengguna DotNetKB, yang akan memudahkan login di masa mendatang (saat pengguna ini mendapatkan akses ke DotNetKB) untuk menjalankan prosedur tersimpan tanpa perlu menambahkan izin baru untuk setiap pengguna.
Berikut ini adalah langkah-langkah untuk memberikan izin eksekusi pada prosedur dan fungsi yang tersimpan di database DotNetKB:
·Sorot node Pengguna di bawah database DotNetKB dalam tampilan pohon untuk menampilkan daftar pengguna untuk database ini. Temukan pengguna DotNetKB dan klik dua kali untuk membuka kotak dialog Properti Pengguna Database.
· Dengan peran publik yang disorot (dipilih), klik tombol Properties... untuk membuka kotak dialog Database Role Properties. Kemudian klik tombol Izin... untuk menampilkan daftar objek database dan pengaturan izin.
Dengan memilih peran publik dalam daftar drop-down Peran database di bagian atas kotak dialog, temukan semua prosedur tersimpan dan fungsi kustom yang ditentukan untuk database ini (Anda mungkin perlu memperluas kotak dialog untuk melihat nama lengkapnya) dan pastikan Pilih kotak centang EXECUTE di samping setiap item. Anda mungkin menemukan bahwa beberapa objek sistem memiliki beberapa kotak centang lainnya yang dicentang, mohon jangan ubah opsi ini.
·Terakhir, setelah mengatur semua izin EXECUTE, klik tombol OK untuk menyimpan perubahan dan menutup kotak dialog. Klik tombol OK satu demi satu hingga semua kotak dialog tertutup.
Pada titik ini, Anda telah membuat pengguna khusus untuk IIS dan mengatur izin terkait pengguna di SQL Server. Sekarang, Anda perlu membuat perubahan konfigurasi di proyek Web ASP.NET untuk memastikan bahwa ASP.NET menggunakan akun pengguna yang sama untuk semua panggilan ke SQL Server.
Siapkan aplikasi ASP.NET Anda untuk meniru identitas pengguna DotNetKB
Langkah terakhir dalam menghasilkan konfigurasi yang solid dan andal untuk aplikasi ASP.NET Web yang berjalan di bawah IIS adalah mengkonfigurasi aplikasi ASP.NET Web sehingga dapat menerima ID pengguna Windows dari IIS dan dapat digunakan untuk mengakses sumber daya sistem operasi lainnya . Untuk melakukan ini, Anda hanya perlu memasukkan sebaris kode di file root web.config.
File web.config yang dimodifikasi terlihat seperti ini:
<konfigurasi>
<sistem.web>
...elemen lainnya...
<identity impersonate="true"/> <!-- Dengan asumsi ID pengguna IIS-->
...elemen lainnya...
</sistem.web>
</konfigurasi>
Perhatikan bahwa Anda cukup menambahkan elemen dan menyetel atribut mock ke true. Anda tidak perlu memasukkan akun pengguna atau kata sandi karena informasi ini akan disediakan oleh IIS. Artinya, meskipun orang lain dapat membaca file konfigurasi Anda, mereka tidak dapat menentukan kredensial identitas mana yang digunakan untuk menjalankan aplikasi web Anda.
Pada titik ini, Anda telah membuat pengguna khusus dan menetapkan izin yang sesuai untuk mengakses SQL Server dan IIS.
Pada titik ini, IIS akan berjalan di bawah akun khusus dengan izin terbatas. Setiap pengunjung yang mengunjungi halaman web aplikasi Anda akan dijalankan sebagai pengguna khusus ini dan hanya akan memiliki izin autentikasi untuk pengguna khusus tersebut.
Otorisasi akun pengguna DotNetKB untuk mengakses SQL Server
Anda kemudian perlu memberikan izin yang sesuai kepada pengguna khusus untuk mengakses database (DotNetKB). Untuk melakukan ini, Anda dapat menggunakan Microsoft SQL Server Enterprise Manager atau menulis skrip khusus untuk membuat pengguna tersebut dan memberinya akses ke objek tertentu. Artikel ini menjelaskan cara melakukannya menggunakan SQL Server Enterprise Manager.
Catatan: Meskipun Visual Studio .NET 2003 memiliki banyak fitur terintegrasi canggih yang kompatibel dengan SQL Server, hal ini tidak memungkinkan pengelolaan pengguna dan izin pengguna dengan mudah dari dalam Visual Studio .NET 2003. Dalam organisasi dan tim besar, tugas-tugas tingkat lanjut ini biasanya dilakukan oleh administrator database. Oleh karena itu, setelah memulai SQL Server Enterprise Manager, Anda dapat mengikuti langkah-langkah di bawah ini untuk menambahkan pengguna khusus (DotNetKB) ke database.
·Pada tampilan pohon di sebelah kiri, perluas node untuk menampilkan database DotNetKB. Di komputer saya, tampilan pohon disusun sebagai berikut: Console Root SQL Server Group (LOCAL) (Windows NT) Databases DotNetKB.
·Kemudian, klik kanan pada node Users di bawah database dan pilih Pengguna Database Baru... (Pengguna Database Baru...). Ketika kotak dialog Properti Pengguna Basis Data - Pengguna Baru muncul, pilih (<Baru>) dari kotak drop-down Nama login.
·Ketika kotak dialog Properti Login SQL Server - Login Baru muncul, pilih tab Umum dan masukkan DotNetKB di kotak input Nama. Pastikan tombol radio Otentikasi Windows dipilih dan pilih nama komputer tempat akun pengguna khusus berada dari kotak drop-down Domain. Kemudian pilih DotNetKB dari kotak drop-down Database.
·Sekarang, pilih tab Databases, temukan database DotNetKB dalam daftar di bagian atas kotak dialog dan pilih. Lalu, pastikan peran publik dipilih dalam daftar di bagian bawah kotak dialog. Terakhir, klik tombol OK di bagian bawah kotak dialog untuk menyimpan perubahan Anda.
Kemudian, Anda perlu menambahkan izin eksekusi ke semua prosedur tersimpan dan fungsi kustom di database DotNetKB. Untuk melakukan ini, Anda hanya perlu memberikan izin kepada peran publik. Anda dapat memberikan izin kepada pengguna DotNetKB, yang akan memudahkan login di masa mendatang (saat pengguna ini mendapatkan akses ke DotNetKB) untuk menjalankan prosedur tersimpan tanpa perlu menambahkan izin baru untuk setiap pengguna.
Berikut ini adalah langkah-langkah untuk memberikan izin eksekusi pada prosedur dan fungsi yang tersimpan di database DotNetKB:
·Sorot node Pengguna di bawah database DotNetKB dalam tampilan pohon untuk menampilkan daftar pengguna untuk database ini. Temukan pengguna DotNetKB dan klik dua kali untuk membuka kotak dialog Properti Pengguna Database.
· Dengan peran publik yang disorot (dipilih), klik tombol Properties... untuk membuka kotak dialog Database Role Properties. Kemudian klik tombol Izin... untuk menampilkan daftar objek database dan pengaturan izin.
Dengan memilih peran publik dalam daftar drop-down Peran database di bagian atas kotak dialog, temukan semua prosedur tersimpan dan fungsi kustom yang ditentukan untuk database ini (Anda mungkin perlu memperluas kotak dialog untuk melihat nama lengkapnya) dan pastikan Pilih kotak centang EXECUTE di samping setiap item. Anda mungkin menemukan bahwa beberapa objek sistem memiliki beberapa kotak centang lainnya yang dicentang, mohon jangan ubah opsi ini.
·Terakhir, setelah mengatur semua izin EXECUTE, klik tombol OK untuk menyimpan perubahan dan menutup kotak dialog. Klik tombol OK satu demi satu hingga semua kotak dialog tertutup.
Pada titik ini, Anda telah membuat pengguna khusus untuk IIS dan mengatur izin terkait pengguna di SQL Server. Sekarang, Anda perlu membuat perubahan konfigurasi di proyek Web ASP.NET untuk memastikan bahwa ASP.NET menggunakan akun pengguna yang sama untuk semua panggilan ke SQL Server.
Siapkan aplikasi ASP.NET Anda untuk meniru identitas pengguna DotNetKB
Langkah terakhir dalam menghasilkan konfigurasi yang solid dan andal untuk aplikasi ASP.NET Web yang berjalan di bawah IIS adalah mengkonfigurasi aplikasi ASP.NET Web sehingga dapat menerima ID pengguna Windows dari IIS dan dapat digunakan untuk mengakses sumber daya sistem operasi lainnya . Untuk melakukan ini, Anda hanya perlu memasukkan sebaris kode di file root web.config.
File web.config yang dimodifikasi terlihat seperti ini:
<konfigurasi>
<sistem.web>
...elemen lainnya...
<identity impersonate="true"/> <!-- Dengan asumsi ID pengguna IIS-->
...elemen lain...
</sistem.web>
</konfigurasi>
Perhatikan bahwa Anda cukup menambahkan elemen dan menyetel atribut mock ke true. Anda tidak perlu memasukkan akun pengguna atau kata sandi karena informasi ini akan disediakan oleh IIS. Artinya, meskipun orang lain dapat membaca file konfigurasi Anda, mereka tidak dapat menentukan kredensial identitas mana yang digunakan untuk menjalankan aplikasi web Anda.
Pada titik ini, Anda telah membuat pengguna khusus dan menetapkan izin yang sesuai untuk mengakses SQL Server dan IIS.