Veri API'si oluşturucu çözümünüzün güvenliğini sağlama

Veri API oluşturucusu, REST ve GraphQL uç noktaları aracılığıyla verilerinizi kullanıma sunar. API'nizin güvenliğini sağlamak için üç temel alana dikkat etmek gerekir: kimlik doğrulaması (kim arıyor?), yetkilendirme (ne yapabilir?) ve aktarım güvenliği (bağlantı korunuyor mu?).

Kimlik doğrulaması, yetkilendirme ve veritabanı erişimini gösteren uçtan uca istek akışının çizimi.

Üç güvenlik sütunu

Ana Direk Cevapladığı soru Anahtar kavram
Kimlik Doğrulaması Arayan kim? Kimlik sağlayıcısından tokenları doğrulama
Authorization Ne yapabilir ki? Varlıklar üzerinde rol tabanlı izinler
Taşıma Bağlantı güvenli mi? Tüm trafik için Aktarım Katmanı Güvenliği (TLS) şifrelemesi

Kimlik doğrulama sağlayıcınızı seçin

Veri API'si oluşturucusu birden çok kimlik doğrulama sağlayıcısını destekler. Dağıtım senaryonuzla eşleşeni seçin:

Provider Kullanım örneği Guide
Kimliği_doğrulanmamış DAB, kimlik doğrulamasını işleyen güvenilir bir ön yüzün arkasında durur (varsayılan) Kimliği Doğrulanmamış sağlayıcıyı yapılandırma
Microsoft Entra Id (EntraID/AzureAD) Microsoft kimliği kullanan üretim uygulamaları Microsoft Entra kimlik doğrulamayı yapılandırma
Özel JSON Web Belirteci (JWT) Üçüncü taraf IdP'ler (Okta, Auth0, Keycloak) Özel JWT kimlik doğrulamayı yapılandırma
App Service Azure App Service EasyAuth'un arkasında çalışan uygulamalar (platform üst bilgileri) App Service kimlik doğrulamayı yapılandırma
Simülatör Yerel geliştirme ve test Simülatör kimlik doğrulamayı yapılandırma
OBO (kullanıcı temsilcisi) Gerçek kullanıcı kimliği gerektiren SQL veritabanları (satır düzeyi güvenlik, denetim) OBO kimlik doğrulamayı yapılandırma

Uyarı

Bu bölümde açıklanan Veri API oluşturucusu 2.0 işlevselliği şu anda önizleme aşamasındadır ve genel kullanılabilirlik öncesinde değişebilir. Daha fazla bilgi için bkz. Sürüm 2.0'daki yenilikler.

Kimlik Doğrulaması

Kimlik doğrulaması, çağıranın kimliğini doğrular. Veri API'si oluşturucusu, JWT taşıyıcı belirteçlerini (EntraID/AzureAD, ) doğrulayarak veya platform tarafından sağlanan kimlik üst bilgilerine (Custom, AppServiceStaticWebApps) güvenerek isteklerin kimliğini doğrular. Simulator Geliştirme için dış doğrulamayı atlar.

İstemcilerin JWT belirteçleri kullanarak Veri API oluşturucusuna nasıl kimlik doğrulaması yaptığını gösteren çizim.

Nasıl çalışır?

  1. JWT sağlayıcıları için istemci kimlik sağlayıcısından bir jeton alır.
  2. İstemci, Authorization: Bearer <token> üst bilgisinde belirteci gönderir (JWT sağlayıcıları) veya platform kimlik üst bilgilerini (EasyAuth/SWA) enjekte eder.
  3. Veri API oluşturucusu belirteci veya platform üst bilgisini (veren, hedef kitle, JWT sağlayıcıları için imza) doğrular
  4. DAB, kullanıcının rollerini belirteçten veya kimlik başlığından ayıklar.

Hızlı referans

Setting Açıklama
runtime.host.authentication.provider Kimlik doğrulama sağlayıcısı (Unauthenticated, EntraID/AzureAD, Custom, AppService, StaticWebApps, Simulator)
runtime.host.authentication.jwt.audience JWT sağlayıcıları için beklenen hedef kitle talebi (AppService/StaticWebApps/Simulator/Unauthenticated tarafından kullanılmaz)
runtime.host.authentication.jwt.issuer JWT sağlayıcıları için beklenen veren/yetkili (AppService/StaticWebApps/Simulator/Unauthenticated tarafından kullanılmaz)

Sağlayıcıya özgü yapılandırma için bu bölümdeki kimlik doğrulama kılavuzları bölümüne bakın.

Yetkilendirme

Yetkilendirme, kimliği doğrulanmış (veya anonim) bir kullanıcının neler yapabileceğini belirler. Veri API oluşturucusu, varlıklara ve eylemlere erişimi kısıtlamak için rol tabanlı erişim denetimi (RBAC) kullanır.

Veri API'sinin oluşturucusunun bir rolü seçme ve istek izinlerini değerlendirme şeklini gösteren çizim.

Nasıl çalışır?

  1. DAB, belirteci ve üst bilgileri temel alarak isteğe bir rol atar
  2. DAB, bu rol için varlığın izinlerini kontrol eder.
  3. Rolün istenen eylem için izni varsa DAB sorguyu yürütür
  4. Aksi takdirde DAB bir 403 Forbidden yanıt verir

Sistem rolleri ile kullanıcı rolleri karşılaştırması

Rol türü Açıklama
Anonymous Kimliği doğrulanmış bir birey olmadığında atanır
Authenticated bir istek kimliği doğrulandığında (JWT'nin kabulü veya güvenilir platform başlığı) ve belirli bir kullanıcı rolü seçilmediğinde atanır
Kullanıcı rolleri Belirtecin roles talebinden (veya platform rollerinden) X-MS-API-ROLE başlığı aracılığıyla seçilen özel roller.

Varsayılan olarak güvenli

Varlıkların varsayılan olarak hiçbir izni yoktur. Açıkça erişim vermelisiniz:

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

Ayrıntılı yapılandırma için bkz. Yetkilendirmeye genel bakış.

Satır düzeyi ve alan düzeyi güvenlik

Ayrıntılı erişim denetimiyle varlık düzeyi izinlerinin ötesine geçin:

Özellik Açıklama Guide
Veritabanı ilkeleri (satır düzeyi güvenlik) İlke ifadelerini taleplere veya oturum bağlamlarına göre satırları filtreleyen sorgu koşuluna çevirin Satır düzeyi güvenlik uygulama
Alan düzeyinde güvenlik Rol başına belirli sütunları dahil et veya hariç tut Alan erişimi
Adına (OBO) Veritabanının gerçek çağıran kullanıcı olarak kimlik doğrulaması gerçekleştirmesi için gelen kullanıcı belirtecini aşağı akış SQL belirteci ile değiştirme (yalnızca mssql) Kullanıcı tarafından atanan kimlik doğrulaması

Rol devralma

DAB 2.0, varlık izinlerinde rol devralmayı başlatır. Devralma zinciri şeklindedir named-role → authenticated → anonymous. Bir rol bir varlık için açıkça yapılandırılmamışsa, sonraki daha geniş rolden devralır. İzinleri bir kez anonymous tanımlar ve daha geniş olan her rol aynı erişimi alır. Ayrıntılar için bkz . Rol devralma.

Aktarım ve yapılandırma güvenliği

Taşıma güvenliği

  • Tüm bağlantılar için TLS kullanma: İstemciler ile DAB arasındaki trafiği şifreleme
  • Eski TLS sürümlerini devre dışı bırakma: Yalnızca TLS 1.2+ sürümünü kullan
  • HTTPS uç noktalarını kullanma: DaB'i asla üretimde şifrelenmemiş HTTP üzerinden kullanıma sunma

Ayrıntılar için bkz . En iyi güvenlik yöntemleri.

Yapılandırma güvenliği

  • Ortam değişkenlerinde gizlilik bilgilerini depolayın: Yapılandırmanızda @env('SECRET_NAME') kullanın
  • Azure Key Vault'u kullanma: Gizli anahtarları referans alarak başvurma @azure('key-vault-uri')
  • Gizli bilgileri hiçbir zaman kaydetme: Parolalar ve bağlantı dizelerini dab-config.json'ten uzak tutun
{
  "data-source": {
    "connection-string": "@env('SQL_CONNECTION_STRING')"
  }
}

İzleme ve güncelleştirmeler

  • Erişimi izleme: İstekleri izlemek ve anomalileri algılamak için Application Insights'ı kullanma
  • Günlükleri gözden geçirme: Başarısız kimlik doğrulama girişimlerini ve izin reddini denetleyin
  • DAB'yi güncel tutma: En son sürüme yükselterek güvenlik düzeltme eklerini uygulama

Hızlı başlangıç kılavuzları

Görev Guide
DAB'de JWT doğrulaması olmadan güvenilir bir ön uç kullanma Kimliği Doğrulanmamış sağlayıcıyı yapılandırma
Microsoft Entra ID kimlik doğrulamayı ayarlama Microsoft Entra kimlik doğrulamayı yapılandırma
Okta veya Auth0 kullanma Özel JWT kimlik doğrulamayı yapılandırma
Azure App Service'in arkasında çalıştırma App Service kimlik doğrulamayı yapılandırma
İzinleri yerel olarak test edin Simülatör kimlik doğrulamayı yapılandırma
Satırları kullanıcıya göre kısıtlama Satır düzeyi güvenlik uygulama
Rol atamayı anlama Yetkilendirmeye genel bakış