Praktik terbaik keamanan di penyusun API Data

Diagram lokasi saat ini ('Optimalkan') dalam urutan panduan penyebaran.

Diagram urutan panduan penyebaran termasuk lokasi ini, secara berurutan: Gambaran Umum, Rencana, Siapkan, Terbitkan, Pantau, dan Pengoptimalan. Lokasi 'Optimize' saat ini disorot.

Artikel ini mencakup praktik terbaik yang direkomendasikan saat ini untuk keamanan di penyusun API Data. Artikel ini tidak menyertakan daftar lengkap setiap pertimbangan keamanan untuk solusi penyusun API Data Anda.

Nonaktifkan Versi Warisan TLS di Tingkat Server

Data yang dikirim antara klien dan penyusun DATA API harus terjadi melalui koneksi aman untuk melindungi informasi sensitif atau berharga. Koneksi aman biasanya dibuat menggunakan protokol Keamanan Lapisan Transportasi (TLS).

Sebagaimana dirinci dalam panduan Perlindungan Lapisan Transportasi OWASP , TLS memberikan banyak manfaat keamanan ketika diimplementasikan dengan benar:

  • Kerahasiaan - perlindungan terhadap penyerang dari membaca konten lalu lintas.
  • Integritas - perlindungan terhadap penyerang yang memodifikasi lalu lintas.
  • Pencegahan pemutaran ulang - perlindungan terhadap permintaan pemutaran ulang penyerang terhadap server.
  • Autentikasi - memungkinkan klien memverifikasi bahwa mereka terhubung ke server nyata (perhatikan bahwa identitas klien tidak diverifikasi kecuali sertifikat klien digunakan).

Recommendations

Salah satu cara untuk membantu mengonfigurasi TLS dengan aman adalah dengan menonaktifkan penggunaan TLS versi lama di tingkat server. Pembuat API Data dibangun di Kestrel, server web lintas platform untuk ASP.NET Core dan dikonfigurasi secara default untuk mengikuti konfigurasi versi TLS sistem operasi. Praktik terbaik TLS Microsoft untuk panduan .NET menjelaskan motivasi di balik perilaku tersebut:

Nota

TLS 1.2 adalah standar yang menyediakan peningkatan keamanan atas versi sebelumnya. TLS 1.3 standar terbaru yang dirilis, yang lebih cepat dan lebih aman, pada akhirnya akan menggantikan TLS 1.2.

Untuk memastikan aplikasi .NET Framework tetap aman, versi TLS tidak boleh dikodekan secara permanen. Aplikasi .NET Framework harus menggunakan versi TLS yang didukung sistem operasi (OS).

Meskipun mendefinisikan versi protokol TLS yang didukung untuk Kestrel secara eksplisit adalah mungkin, namun hal tersebut tidak disarankan. Definisi ini diterjemahkan ke daftar izinkan, yang mencegah dukungan untuk versi TLS di masa mendatang saat tersedia. Informasi selengkapnya tentang perilaku versi protokol TLS default Kestrel dapat ditemukan di sini.

Dukungan TLS

TLS 1.2 diaktifkan secara default pada versi terbaru .NET dan banyak versi sistem operasi terbaru.

Mengonfigurasi autentikasi untuk produksi

Mulai dari DAB 2.0, yang saat ini dalam pratinjau, penyedia autentikasi default adalah Unauthenticated. Ini berarti DAB tidak memeriksa atau memvalidasi JSON Web Token (JWT), dan semua permintaan berjalan sebagai anonymous. Layanan lain di depan DAB dapat mengautentikasi penelepon atau membatasi akses, tetapi DAB masih mengotorisasi hanya sebagai anonymous.

Penting

Jika Anda mengekspos DAB langsung ke klien, konfigurasikan penyedia autentikasi tingkat produksi (seperti EntraID atau Custom) daripada mengandalkan Unauthenticated. Saat Unauthenticated aktif, authenticated dan peran kustom yang ditentukan dalam izin entitas tidak pernah diaktifkan.

Untuk informasi selengkapnya, lihat Mengonfigurasi penyedia yang tidak diautentikasi dan konfigurasi autentikasi runtime.

Autentikasi yang didelegasikan pengguna On-Behalf-Of (OBO)

Untuk penerapan SQL Server dan Azure SQL yang memerlukan keamanan tingkat baris dengan identitas pengguna yang sebenarnya, sebaiknya mengaktifkan autentikasi On-Behalf-Of (OBO). OBO menukar token pengguna masuk dengan token SQL hilir sehingga database mengautentikasi sebagai pengguna panggilan aktual. Untuk informasi selengkapnya, lihat autentikasi yang didelegasikan pengguna.