Uygulamamın en az izinle API'leri çağırıp çağırmadiğini denetleme

Bir bakışta
Hedef: API çağrılarının Azure API Center aracılığıyla minimum izinler kullandığını doğrulama
Süre: 20 dakika
Eklentiler:ApiCenterMinimalPermissionsPlugin
Önkoşullar:Geliştirme Proxy'sini ayarlama, Azure API Center

Uygulamanızı oluştururken büyük olasılıkla çeşitli API'ler ve işlemler ile tümleştirebilirsiniz. Uygulamanızın güvenli olduğundan ve en az ayrıcalık ilkesine uydığından emin olmak için uygulamanızın API'leri en az izinle çağırıp çağırmadığını denetlemeniz gerekir. En düşük izinleri kullanarak verilerinize ve kaynaklarınıza yetkisiz erişim riskini azaltırsınız.

Uygulamanızın API'leri en az izinle çağırıp çağırmadığını denetlemenin zor yanı, her yeni işlemi tümleştirdiğinizde, uygulamanızda kullandığınız izin kümesini değerlendirmeniz gerektiğidir. Tüm işlemleri ve izinleri el ile izlemek zaman alır ve hataya açıktır. Dev Proxy ve Azure API Center'ı kullanarak uygulamanızın API'leri en az izinle çağırıp çağırmaması denetimini otomatikleştirebilirsiniz.

Uygulamanızın en düşük izinleri kullanarak API'leri çağırıp çağırmadiğini denetlemek için eklentiyi ApiCenterMinimalPermissionsPlugin kullanabilirsiniz. Bu eklenti, uygulamanızın kullandığı izinleri Azure API Center'da tanımlanan izinlerle karşılaştırır ve aşırı izinler hakkında raporlar. Ayrıca, kullanmanız gereken en az izin kümesini de önerir.

Dev Proxy'nin kaydedilen API isteklerinin belirteçlerle en az API izinlerini kullanıp kullanmadığını denetlediğini gösteren komut istemi ekran görüntüsü.

Başlamadan önce

Uygulamanızın en düşük izinleri kullanarak API'leri çağırıp çağırmadığını denetlemek için, kuruluşunuzda kullandığınız API'ler hakkında bilgi içeren bir Azure API Center örneğine sahip olmanız gerekir.

İpucu

Komut isteminde devproxy config get demo-apicenter-minimalpermissionskomutunu çalıştırarak bu nasıl yapılır makalesinin ön ayarını indirin.

Azure API Center örneği oluşturma

Başlamadan önce bir Azure API Center örneği oluşturun ve kuruluşunuzda kullandığınız API'leri kaydedin. Her API için, API işlemlerini ve izinlerini açıklayan OpenAPI belirtim dosyasını karşıya yükleyin.

Api içeren Azure API Center'ın ve güvenlik bilgileri içeren OpenAPI belirtiminin ekran görüntüsü.

, ApiCenterMinimalPermissionsPlugin uygulamanızın en düşük izinleri kullanarak API'leri çağırıp çağırmadiğini denetlemek için bu bilgileri kullanır.

API Center bilgilerini kopyalama

Azure API Center örneğine Genel Bakış sayfasından API Center örneğinin adını, kaynak grubunun adını ve abonelik kimliğini kopyalayın. ApiCenterMinimalPermissionsPlugin öğesini, Azure API Center örneğine bağlanabilmesi için yapılandırmak amacıyla bu bilgilere ihtiyacınız vardır.

Birkaç özelliğin vurgulandığı Azure API Center genel bakış sayfasının ekran görüntüsü.

Geliştirme Ara Sunucusunu Yapılandırma

Uygulamanızın en düşük izinleri kullanarak API'leri çağırıp çağırmadiğini denetlemek için Geliştirme Ara Sunucusu yapılandırma dosyasında öğesini etkinleştirmeniz ApiCenterMinimalPermissionsPlugin gerekir. Uygulamanızın kullandığı izinler raporu oluşturmak için bir muhabir ekleyin.

ApiCenterMinimalPermissionsPlugin öğesini etkinleştir

devproxyrc.json dosyasına aşağıdaki yapılandırmayı ekleyin:

Dosya: devproxyrc.json

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.3.0/rc.schema.json",
  "plugins": [
    {
      "name": "ApiCenterMinimalPermissionsPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "apiCenterMinimalPermissionsPlugin"
    }
  ],
  "urlsToWatch": [
    "https://api.northwind.com/*"
  ],
  "apiCenterMinimalPermissionsPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.3.0/apicenterminimalpermissionsplugin.schema.json",
    "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "resourceGroupName": "demo",
    "serviceName": "contoso-api-center",
    "workspaceName": "default"
  }
}

subscriptionId, resourceGroupName ve serviceName özelliklerinde Azure API Center örneğinizle ilgili bilgileri sağlayın.

özelliğinde urlsToWatch , uygulamanızın kullandığı URL'leri belirtin.

İpucu

Dev Proxy yapılandırmasını kolayca yönetmek için Dev Proxy Toolkit Visual Studio Code uzantısını kullanın.

Muhabir ekleme

, ApiCenterMinimalPermissionsPlugin uygulamanızın kullandığı API'lerin bir raporunu ve bunları çağırmak için gereken en düşük izinleri oluşturur. Bu raporu görüntülemek için Dev Proxy yapılandırma dosyanıza bir muhabir ekleyin. Dev Proxy çeşitli raporlama araçları sunar. Bu örnekte düz metin muhabirini kullanırsınız.

Dosyanızı devproxyrc.json düz metin raporlayıcıya bir referansla güncelleyin.

Dosya: devproxyrc.json

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.3.0/rc.schema.json",
  "plugins": [
    {
      "name": "ApiCenterMinimalPermissionsPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "apiCenterMinimalPermissionsPlugin"
    },
    {
      "name": "PlainTextReporter",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    }
  ],
  "urlsToWatch": [
    "https://api.northwind.com/*"
  ],
  "apiCenterMinimalPermissionsPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.3.0/apicenterminimalpermissionsplugin.schema.json",
    "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "resourceGroupName": "demo",
    "serviceName": "contoso-api-center",
    "workspaceName": "default"
  }
}

Uygulamanızın en düşük izinleri kullanarak API'leri çağırıp çağırmadiğini denetleyin

Uygulamanızın en düşük izinleri kullanarak API'leri çağırıp çağırmayacağını denetlemek için Azure aboneliğinize bağlanmanız, Dev Proxy'yi çalıştırmanız ve uygulamanızdan gelen API isteklerini kesmesine izin vermeniz gerekir. Ardından Dev Proxy, API istekleri hakkındaki bilgileri Azure API Center'dan alınan bilgilerle karşılaştırır ve en düşük izinlerle ilgili raporlar.

Azure aboneliğinize bağlanma

Dev Proxy, uygulamanızın en düşük izinleri kullanarak API'leri çağırıp çağırmadığını belirlemek için Azure API Center'daki bilgileri kullanır. Bu bilgileri almak için Azure aboneliğinize bir bağlantı gerekir. Azure aboneliğinize çeşitli yollarla bağlanabilirsiniz.

Geliştirme Proxy'si çalıştırma

Azure aboneliğinize bağlandıktan sonra Dev Proxy'yi başlatın. Dev Proxy'yi dosyanızın devproxyrc.json bulunduğu klasörden başlatırsanız, yapılandırma otomatik olarak yüklenir. Aksi takdirde, --config-file seçeneğini kullanarak yapılandırma dosyasının yolunu belirtin.

Geliştirme Proxy'si başlatıldığında Azure aboneliğinize bağlanıp bağlanamayacağını denetler. Bağlantı başarılı olduğunda şuna benzer bir ileti görürsünüz:

 info    Plugin ApiCenterMinimalPermissionsPlugin connecting to Azure...
 info    Listening on 127.0.0.1:8000...

Hotkeys: issue (w)eb request, (r)ecord, (s)top recording, (c)lear screen
Press CTRL+C to stop Dev Proxy

Uygulamanızdan API isteklerini kaydetmeye başlamak için r tuşuna basın.

Uygulamanızı kullanma

Uygulamanızı normalde yaptığınız gibi kullanın. Bu öğreticide, customer.readwrite izni içeren simüle edilmiş bir erişim belirteci ile aşağıdaki isteği kullanabilirsiniz.

@readwriteToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJzY3AiOlsiY3VzdG9tZXIucmVhZHdyaXRlIl19.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

GET https://api.northwind.com/customers/ALFKI
Authorization: Bearer {{readwriteToken}}

Dev Proxy, API isteklerini durdurur ve bunlar hakkındaki bilgileri bellekte depolar. Dev Proxy'nin çalıştığı komut satırında, uygulamanızın yaptığı API istekleri hakkındaki bilgileri görmeniz gerekir.

 info    Plugin ApiCenterMinimalPermissionsPlugin connecting to Azure...
 info    Listening on 127.0.0.1:8000...

Hotkeys: issue (w)eb request, (r)ecord, (s)top recording, (c)lear screen
Press CTRL+C to stop Dev Proxy

◉ Recording... 

 req   ╭ GET https://api.northwind.com/customers/ALFKI
 mock  ╰ 200 /{customer-id}

İzinleri denetleme

s tuşuna basarak kaydı durdurun. Geliştirme Proxy'si API Center örneğine bağlanır ve istekler hakkındaki bilgileri API Center'dan alınan bilgilerle karşılaştırır.

 info    Plugin ApiCenterMinimalPermissionsPlugin connecting to Azure...
 info    Listening on 127.0.0.1:8000...

Hotkeys: issue (w)eb request, (r)ecord, (s)top recording, (c)lear screen
Press CTRL+C to stop Dev Proxy

◉ Recording... 

 req   ╭ GET https://api.northwind.com/customers/ALFKI
 mock  ╰ 200 /{customer-id}
○ Stopped recording
 info    Checking if recorded API requests use minimal permissions as defined in API Center...
 info    Loading APIs from API Center...
 info    Loading API definitions from API Center...
 info    Checking minimal permissions for API https://api.northwind.com...
 info    Analyzing recorded requests...
 warn    Calling API Northwind with excessive permissions: customer.readwrite. Minimal permissions are: customer.read
 info    DONE

Geliştirme Proxy'si çözümlemesini tamamladığında, adlı ApiCenterMinimalPermissionsPlugin_PlainTextReporter.txt dosyada aşağıdaki içeriklere sahip bir rapor oluşturur:

Azure API Center minimal permissions report

APIS

Northwind

x Called using excessive permissions

Permissions

- Minimal permissions: customer.read
- Permissions on the token: customer.readwrite
- Excessive permissions: customer.readwrite

Requests

- GET https://api.northwind.com/customers/ALFKI

UNMATCHED REQUESTS

No unmatched requests found.

ERRORS

No errors occurred.

Özet

kullanarak, uygulamanızın ApiCenterMinimalPermissionsPluginen düşük izinleri kullanarak API'leri çağırıp çağırmadiğini de kontrol edebilirsiniz. Eklenti, uygulamanızdan gelen API istekleri hakkındaki bilgileri Azure API Center'dan alınan bilgilerle karşılaştırır ve aşırı izinler hakkında raporlar. Ayrıca, uygulamanızda kullandığınız API'leri çağırmak için gereken en düşük izinleri de önerir. Uygulamanızın en düşük izinleri kullanarak API'leri çağırdığını doğrulamak, uygulamanızı daha güvenli hale getirmenize yardımcı olur. Uygulamanızı üretim ortamına bırakmadan önce en düşük izinleri kullanarak API'leri çağırdığından emin olmak için bu denetimi el ile çalıştırabilir veya CI/CD işlem hattınızla tümleştirebilirsiniz.

Daha Fazla Bilgi