Come verificare se l'app chiama le API con autorizzazioni minime

Durante la compilazione dell'app, è probabile che si integri con diverse API e operazioni. Per assicurarsi che l'app sia sicura e segua il principio dei privilegi minimi, devi verificare se l'app chiama le API con autorizzazioni minime. Usando autorizzazioni minime, si riduce il rischio di accesso non autorizzato ai dati e alle risorse.

È difficile verificare se l'app chiama le API con autorizzazioni minime è che ogni volta che si integra una nuova operazione, è necessario valutare il set di autorizzazioni usate nell'app. Il rilevamento manuale di tutte le operazioni e le autorizzazioni richiede molto tempo e è soggetto a errori. Usando Dev Proxy e Centro API di Azure è possibile automatizzare il controllo se l'app chiama le API con autorizzazioni minime.

Per verificare se l'app chiama le API usando autorizzazioni minime, è possibile usare il plug-in ApiCenterMinimalPermissionsPlugin . Questo plug-in confronta le autorizzazioni usate dall'app con le autorizzazioni definite nel Centro API di Azure e segnala eventuali autorizzazioni eccessive. Consiglia anche il set minimo di autorizzazioni da usare.

Screenshot di un prompt dei comandi che mostra il controllo del proxy di sviluppo se le richieste API registrate usano token con autorizzazioni API minime.

Prima di iniziare

Per verificare se l'app chiama le API usando autorizzazioni minime, è necessario disporre di un'istanza del Centro API di Azure con informazioni sulle API usate nell'organizzazione.

Suggerimento

Scaricare il set di impostazioni per questo articolo eseguendo nel prompt dei devproxy preset get demo-apicenter-minimalpermissionscomandi .

Creare un'istanza del Centro API di Azure

Prima di iniziare, creare un'istanza del Centro API di Azure e registrare le API usate nell'organizzazione. Per ogni API, caricare il file di specifica OpenAPI che descrive le operazioni e le autorizzazioni dell'API.

Screenshot del Centro API di Azure con un'API e la specifica OpenAPI con informazioni di sicurezza.

ApiCenterMinimalPermissionsPlugin Usa queste informazioni per verificare se l'app chiama le API usando autorizzazioni minime.

Copiare le informazioni del Centro API

Nella pagina Panoramica dell'istanza del Centro API di Azure copiare il nome dell'istanza di Centro API, il nome del gruppo di risorse e l'ID sottoscrizione. Queste informazioni sono necessarie per configurare in modo che possa connettersi all'istanza ApiCenterMinimalPermissionsPlugin del Centro API di Azure.

Screenshot della pagina di panoramica del Centro API di Azure con diverse proprietà evidenziate.

Configurare il proxy di sviluppo

Per verificare se l'app chiama le API usando autorizzazioni minime, è necessario abilitare ApiCenterMinimalPermissionsPlugin nel file di configurazione del proxy di sviluppo. Per creare un report delle autorizzazioni usate dall'app, aggiungere un reporter.

Abilitare ApiCenterMinimalPermissionsPlugin

devproxyrc.json Nel file aggiungere la configurazione seguente:

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

subscriptionIdNelle proprietà , resourceGroupNamee serviceName specificare le informazioni sull'istanza del Centro API di Azure.

urlsToWatch Nella proprietà specificare gli URL usati dall'app.

Suggerimento

Usare l'estensione Dev Proxy Toolkit di Visual Studio Code per gestire facilmente la configurazione del proxy di sviluppo.

Aggiungere un giornalista

Genera ApiCenterMinimalPermissionsPlugin un report delle API che l'app usa e le autorizzazioni minime necessarie per chiamarle. Per visualizzare questo report, aggiungere un reporter al file di configurazione del proxy di sviluppo. Dev Proxy offre diversi reporter. In questo esempio si usa il reporter di testo normale.

Aggiornare il devproxyrc.json file con un riferimento al reporter in testo normale:

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

Controllare se l'app chiama le API usando autorizzazioni minime

Per verificare se l'app chiama le API usando autorizzazioni minime, è necessario connettersi alla sottoscrizione di Azure, eseguire Dev Proxy e consentire l'intercettazione delle richieste API dall'app. Dev Proxy confronta quindi le informazioni sulle richieste API con le informazioni del Centro API di Azure e segnala le autorizzazioni minime.

Connettersi alla sottoscrizione di Azure

Dev Proxy usa le informazioni del Centro API di Azure per determinare se l'app chiama le API usando autorizzazioni minime. Per ottenere queste informazioni, è necessaria una connessione alla sottoscrizione di Azure. È possibile connettersi alla sottoscrizione di Azure in diversi modi.

Eseguire il proxy di sviluppo

Dopo la connessione alla sottoscrizione di Azure, avviare Dev Proxy. Se si avvia Dev Proxy dalla stessa cartella in cui si trova il devproxyrc.json file, carica automaticamente la configurazione. In caso contrario, specificare il percorso del file di configurazione usando l'opzione --config-file .

All'avvio di Dev Proxy verifica che possa connettersi alla sottoscrizione di Azure. Quando la connessione ha esito positivo, viene visualizzato un messaggio simile al seguente:

 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

Premere r per avviare la registrazione delle richieste API dall'app.

Usare l'app

Usa la tua app come normalmente fai. In questa esercitazione è possibile usare la richiesta seguente con un token di accesso simulato con customer.readwrite autorizzazione:

@readwriteToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJzY3AiOlsiY3VzdG9tZXIucmVhZHdyaXRlIl19.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

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

Dev Proxy intercetta le richieste API e li archivia in memoria. Nella riga di comando in cui viene eseguito Il proxy di sviluppo dovrebbero essere visualizzate informazioni sulle richieste API eseguite dall'app.

 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}

Verificare le autorizzazioni

Arrestare la registrazione premendo s. Dev Proxy si connette all'istanza di Centro API e confronta le informazioni sulle richieste con le informazioni del Centro API.

 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

Al termine dell'analisi, Dev Proxy crea un report in un file denominato ApiCenterMinimalPermissionsPlugin_PlainTextReporter.txt con il contenuto seguente:

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.

Riepilogo

Usando , è possibile verificare se l'app ApiCenterMinimalPermissionsPluginchiama le API usando autorizzazioni minime. Il plug-in confronta le informazioni sulle richieste API dall'app con le informazioni del Centro API di Azure e segnala autorizzazioni eccessive. Consiglia anche le autorizzazioni minime necessarie per chiamare le API in uso nell'app. Verificare che l'app chiami le API usando autorizzazioni minime, consente di rendere l'app più sicura. È possibile eseguire questo controllo manualmente o integrarsi con la pipeline CI/CD per assicurarsi che l'app chiami le API usando autorizzazioni minime prima di rilasciarla nell'ambiente di produzione.

Ulteriori informazioni