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 Keamanan Lapisan Transportasi (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
Belum diautentikasi DAB berada di belakang antarmuka tepercaya yang mengelola identitas (default) Mengonfigurasi penyedia tidak diautentikasi
ID Microsoft Entra (EntraID/AzureAD) Aplikasi produksi menggunakan identitas Microsoft Mengonfigurasi autentikasi Microsoft Entra
Token Web JSON Kustom (JWT) 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
OBO (didelegasikan pengguna) Database SQL yang memerlukan identitas pengguna nyata (keamanan tingkat baris, audit) Mengonfigurasi autentikasi OBO

Nota

Fungsionalitas Pembuat API Data 2.0 yang dijelaskan di bagian ini saat ini dalam pratinjau dan mungkin berubah sebelum ketersediaan umum. Untuk informasi selengkapnya, lihat Apa yang baru dalam versi 2.0.

Authentication

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 Deskripsi
runtime.host.authentication.provider Penyedia autentikasi (Unauthenticated, EntraID/AzureAD, Custom, AppService, StaticWebApps, ) Simulator
runtime.host.authentication.jwt.audience Klaim audiens yang diharapkan untuk penyedia JWT (tidak digunakan oleh AppService/StaticWebApps/Simulator/Unauthenticated)
runtime.host.authentication.jwt.issuer Penerbit/otoritas yang diharapkan untuk penyedia JWT (tidak digunakan oleh AppService/StaticWebApps/Simulator/Unauthenticated)

Untuk konfigurasi khusus penyedia, lihat panduan autentikasi di bagian ini.

Authorization

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 Deskripsi
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 Gambaran umum otorisasi.

Keamanan tingkat baris dan tingkat bidang

Melampaui izin tingkat entitas dengan pengendalian akses tingkat rinci:

Feature Deskripsi 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
On-Behalf-Of (OBO) Menukar token pengguna masuk dengan token SQL hilir sehingga database mengautentikasi sebagai pengguna panggilan aktual (hanya mssql) Autentikasi yang didelegasikan pengguna

Pewarisan peran

DAB 2.0 memperkenalkan pewarisan peran untuk hak akses entitas. Rantai warisan adalah named-role → authenticated → anonymous. Jika peran tidak dikonfigurasi secara eksplisit untuk entitas, peran tersebut mewarisi dari peran yang lebih luas berikutnya. Tentukan izin sekali di anonymous dan setiap peran yang lebih luas mendapatkan akses yang sama. Untuk detailnya, lihat Pewarisan peran.

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

Tugas Panduan
Menggunakan front end tepercaya tanpa validasi JWT di DAB Mengonfigurasi penyedia tidak diautentikasi
Menyiapkan autentikasi ID Microsoft Entra Mengonfigurasi autentikasi Microsoft 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 Gambaran umum otorisasi