Bagikan melalui


Mengamankan solusi penyusun API Data Anda

Penyusun API Data mengekspos data Anda melalui titik akhir REST dan GraphQL. Mengamankan API Anda memerlukan perhatian ke tiga area inti: autentikasi (siapa yang memanggil?), otorisasi (apa yang dapat mereka lakukan?), dan keamanan transportasi (apakah koneksi dilindungi?).

Ilustrasi alur permintaan end-to-end memperlihatkan autentikasi, otorisasi, dan akses database.

Tiga pilar keamanan

Pilar Pertanyaan yang dijawabnya Konsep utama
Authentication Siapa peneleponnya? Memvalidasi token dari IdP (Penyedia Identitas)
Otorisasi Apa yang bisa mereka lakukan? Izin berbasis peran pada entitas
Transportasi Apakah koneksi aman? Enkripsi TLS untuk semua lalu lintas

Pilih penyedia autentikasi Anda

Pembuat API Data mendukung beberapa penyedia autentikasi. Pilih salah satu yang cocok dengan skenario penyebaran Anda:

Provider Skenario penggunaan Panduan
Microsoft Entra ID (EntraID/AzureAD) Aplikasi produksi menggunakan identitas Microsoft Mengonfigurasi autentikasi Entra
JWT Kustom IdP pihak ketiga (Okta, Auth0, Keycloak) Mengonfigurasi autentikasi JWT kustom
Layanan Aplikasi Aplikasi yang berjalan di belakang Azure App Service EasyAuth (tajuk platform) Mengonfigurasi autentikasi pada App Service
Simulator Pengembangan dan pengujian lokal Konfigurasikan autentikasi Simulator
Static Web Apps Aplikasi yang didukung oleh header autentikasi SWA Mengonfigurasi autentikasi pada App Service

Petunjuk / Saran

Mulailah dengan penyedia Simulator dalam tahapan pengembangan untuk menguji izin tanpa mengonfigurasi penyedia identitas. Beralih ke penyedia produksi sebelum menyebarkan.

Otentikasi

Autentikasi memverifikasi identitas pemanggil. Pembuat API Data mengautentikasi permintaan dengan memvalidasi token pembawa JWT (EntraID/AzureAD, Custom) atau memercayai header identitas yang disediakan platform (AppService, StaticWebApps). Simulator melewatkan validasi eksternal untuk pengembangan.

Ilustrasi tentang bagaimana klien mengautentikasi ke pembuat API Data menggunakan token JWT.

Cara kerjanya

  1. Untuk penyedia JWT, klien memperoleh token dari penyedia identitas
  2. Klien mengirim token di Authorization: Bearer <token> header (penyedia JWT) atau platform menyuntikkan header identitas (EasyAuth/SWA)
  3. Pembuat API Data memvalidasi token atau header platform (penerbit, audiens, tanda tangan untuk penyedia JWT)
  4. DAB mengekstrak peran pengguna dari token atau header identitas

Referensi cepat

Setting Description
runtime.host.authentication.provider Penyedia autentikasi (EntraID/AzureAD, Custom, AppService, StaticWebApps, ) Simulator
runtime.host.authentication.jwt.audience Klaim audiens yang diharapkan untuk penyedia JWT (tidak digunakan oleh AppService/StaticWebApps/Simulator)
runtime.host.authentication.jwt.issuer Penerbit/otoritas yang diharapkan untuk penyedia JWT (tidak digunakan oleh AppService/StaticWebApps/Simulator)

Untuk konfigurasi terperinci, lihat Mengonfigurasi autentikasi ID Microsoft Entra.

Otorisasi

Otorisasi menentukan apa yang dapat dilakukan pengguna yang diautentikasi (atau anonim). Penyusun API Data menggunakan kontrol akses berbasis peran (RBAC) untuk membatasi akses ke entitas dan tindakan.

Ilustrasi tentang bagaimana penyusun Api Data memilih peran dan mengevaluasi izin untuk permintaan.

Cara kerjanya

  1. DAB menetapkan peran pada permintaan berdasarkan token dan headersnya
  2. DAB mencari izin entitas untuk peran tersebut
  3. Jika peran memiliki izin untuk tindakan yang diminta, DAB menjalankan kueri
  4. Jika tidak, DAB akan mengembalikan respons 403 Forbidden

Peran sistem vs. peran pengguna

Jenis peran Description
Anonymous Ditetapkan ketika tidak ada identitas terautentikasi yang ada
Authenticated Ditetapkan saat permintaan diautentikasi (header platform yang diterima atau tepercaya JWT) dan tidak ada peran pengguna tertentu yang dipilih
Peran pengguna Peran kustom dari klaim token roles (atau peran platform), dipilih melalui X-MS-API-ROLE header

Aman secara default

Entitas tidak memiliki izin secara default. Anda harus secara eksplisit memberikan akses:

{
  "entities": {
    "Book": {
      "permissions": [
        { "role": "authenticated", "actions": ["read"] }
      ]
    }
  }
}

Untuk konfigurasi terperinci, lihat Otorisasi dan peran.

Keamanan tingkat baris dan tingkat bidang

Melampaui izin tingkat entitas dengan pengendalian akses tingkat rinci:

Fitur Description Panduan
Kebijakan database (keamanan tingkat baris) Menerjemahkan ekspresi kebijakan ke dalam predikat kueri yang memfilter baris berdasarkan klaim atau konteks sesi Menerapkan keamanan tingkat baris
Keamanan tingkat lapangan Menyertakan atau mengecualikan kolom tertentu per peran Akses bidang

Keamanan transportasi dan konfigurasi

Keamanan transportasi

  • Menggunakan TLS untuk semua koneksi: Mengenkripsi lalu lintas antara klien dan DAB
  • Nonaktifkan versi TLS warisan: Hanya Mengandalkan TLS 1.2+
  • Menggunakan titik akhir HTTPS: Jangan pernah mengekspos DAB melalui HTTP yang tidak terenkripsi dalam produksi

Untuk detailnya, lihat Praktik terbaik keamanan.

Keamanan konfigurasi

  • Menyimpan rahasia dalam variabel lingkungan: Gunakan @env('SECRET_NAME') dalam konfigurasi Anda
  • Menggunakan Azure Key Vault: Mereferensikan rahasia dengan @azure('key-vault-uri')
  • Jangan pernah menerapkan rahasia: Bebaskan dab-config.json kata sandi dan string koneksi
{
  "data-source": {
    "connection-string": "@env('SQL_CONNECTION_STRING')"
  }
}

Pemantauan dan pembaruan

  • Memantau akses: Menggunakan Application Insights untuk melacak permintaan dan mendeteksi anomali
  • Tinjau log: Periksa upaya autentikasi yang gagal dan penolakan izin
  • Menjaga DAB tetap diperbarui: Menerapkan patch keamanan dengan meningkatkan ke versi terbaru

Panduan mulai cepat

Task Panduan
Menyiapkan autentikasi ID Microsoft Entra Mengonfigurasi autentikasi Entra
Menggunakan Okta atau Auth0 Mengonfigurasi autentikasi JWT kustom
Beroperasi di belakang Azure App Service Mengonfigurasi autentikasi pada App Service
Menguji izin secara lokal Konfigurasikan autentikasi Simulator
Membatasi baris menurut pengguna Menerapkan keamanan tingkat baris
Memahami penetapan peran Otorisasi dan peran