Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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.
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.
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.
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.