Condividi tramite


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, 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.

Il problema di 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 ed è soggetto a errori. Usando il proxy di sviluppo 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 comandi devproxy config get demo-apicenter-minimalpermissions.

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

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

Ritaglio di schermata della pagina 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 il ApiCenterMinimalPermissionsPlugin nel file di configurazione del proxy di sviluppo. Aggiungere un reporter per creare un report delle autorizzazioni usate dall'app.

Abilitare ApiCenterMinimalPermissionsPlugin

Nel file devproxyrc.json aggiungere la configurazione seguente:

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

Nelle proprietà subscriptionId, resourceGroupName e serviceName specificare le informazioni sull'istanza del Centro API di Azure.

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

Suggerimento

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

Aggiungere un reporter

ApiCenterMinimalPermissionsPlugin genera 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. Il proxy di sviluppo offre diversi segnalatori. In questo esempio viene usato il reporter di testo normale.

Aggiorna il file devproxyrc.json con un riferimento al reporter di testo normale:

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.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": {
    "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 il proxy di sviluppo e consentire l'intercettazione delle richieste API dall'app. Il proxy di produzione confronta quindi le informazioni sulle richieste API con le informazioni del Centro API di Azure e segnala eventuali autorizzazioni minime.

Connettersi alla sottoscrizione di Azure

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

Eseguire il Dev Proxy

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

All'avvio, Dev Proxy verifica che possa connettersi alla tua 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

Usare l’app normalmente. In questa esercitazione è possibile usare la richiesta seguente con un token di accesso simulato con autorizzazione customer.readwrite:

@readwriteToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJzY3AiOlsiY3VzdG9tZXIucmVhZHdyaXRlIl19.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

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

Il proxy di sviluppo intercetta le richieste API e archivia in memoria le relative informazioni. Nella riga di comando in cui viene eseguito Il proxy di sviluppo vengono visualizzate le informazioni relative alle 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. Il proxy di sviluppo si connette all'istanza del Centro API e confronta le informazioni relative alle 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, il proxy di sviluppo 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 il ApiCenterMinimalPermissionsPlugin, controllare se l'app chiama 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 integrarlo con la pipeline CI/CD per assicurarsi che l'app chiami le API usando le autorizzazioni minime prima di rilasciarla nell'ambiente di produzione.

Ulteriori informazioni