Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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?).
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.
Cara kerjanya
- Untuk penyedia JWT, klien memperoleh token dari penyedia identitas
- Klien mengirim token di
Authorization: Bearer <token>header (penyedia JWT) atau platform menyuntikkan header identitas (EasyAuth/SWA) - Pembuat API Data memvalidasi token atau header platform (penerbit, audiens, tanda tangan untuk penyedia JWT)
- 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.
Cara kerjanya
- DAB menetapkan peran pada permintaan berdasarkan token dan headersnya
- DAB mencari izin entitas untuk peran tersebut
- Jika peran memiliki izin untuk tindakan yang diminta, DAB menjalankan kueri
- 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.jsonkata 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 |