Dela via


Så här kontrollerar du om min app anropar API:er med minimal behörighet

När du skapar din app kan du förmodligen integrera med flera API:er och åtgärder. För att säkerställa att din app är säker och följer principen om minsta behörighet bör du kontrollera om appen anropar API:er med minimal behörighet. Genom att använda minimala behörigheter minskar du risken för obehörig åtkomst till dina data och resurser.

Det som är svårt med att kontrollera om appen anropar API:er med minimal behörighet är att varje gång du integrerar en ny åtgärd måste du utvärdera den uppsättning behörigheter som du använder i din app. Att manuellt spåra alla åtgärder och behörigheter är tidskrävande och felbenäget. Med Dev Proxy och Azure API Center kan du automatisera kontrollen av om appen anropar API:er med minimal behörighet.

Om du vill kontrollera om appen anropar API:er med minimal behörighet kan du använda plugin-programmet ApiCenterMinimalPermissionsPlugin . Det här plugin-programmet jämför de behörigheter som appen använder med de behörigheter som definierats i Azure API Center och rapporterar om eventuella överdrivna behörigheter. Den rekommenderar också den minimala uppsättning behörigheter som du bör använda.

Skärmbild av en kommandotolk som visar Dev Proxy som kontrollerar om de registrerade API-begärandena använder minimala API-behörigheter för tokens.

Innan du börjar

För att kontrollera om din app anropar API:er med minimal behörighet måste du ha en Azure API Center-instans med information om de API:er som du använder i din organisation.

Tips

Ladda ner förinställningen för denna "how to"-artikel genom att använda kommandotolken devproxy config get demo-apicenter-minimalpermissions.

Skapa en Azure API Center-instans

Innan du börjar skapar du en Azure API Center-instans och registrerar API:er som du använder i din organisation. För varje API laddar du upp OpenAPI-specifikationsfilen som beskriver API-åtgärder och -behörigheter.

Skärmbild av Azure API Center med ett API och dess OpenAPI-specifikation med säkerhetsinformation.

ApiCenterMinimalPermissionsPlugin Använder den här informationen för att kontrollera om appen anropar API:er med minimala behörigheter.

Kopiera API Center-information

På sidan Översikt för Azure API Center-instans kopierar du namnet på API Center-instansen, namnet på resursgruppen och prenumerations-ID :t. Du behöver den här informationen för att konfigurera så att den ApiCenterMinimalPermissionsPlugin kan ansluta till din Azure API Center-instans.

Skärmbild av översiktssidan för Azure API Center med flera egenskaper markerade.

Konfigurera Dev Proxy

Om du vill kontrollera om din app anropar API:er med minimal behörighet måste du aktivera ApiCenterMinimalPermissionsPlugin i konfigurationsfilen för Dev Proxy. Om du vill skapa en rapport med behörigheter som appen använder lägger du till en reporter.

Aktivera ApiCenterMinimalPermissionsPlugin

devproxyrc.json Lägg till följande konfiguration i filen:

{
  "$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"
  }
}

I egenskaperna subscriptionId, resourceGroupName och serviceName anger du information om din Azure API Center-instans.

I egenskapen urlsToWatch anger du de URL:er som appen använder.

Tips

Använd Tillägget Dev Proxy Toolkit Visual Studio Code för att enkelt hantera Dev Proxy-konfiguration.

Lägga till en reporter

ApiCenterMinimalPermissionsPlugin Genererar en rapport över API:er som din app använder och de minimala behörigheter som krävs för att anropa dem. Om du vill visa den här rapporten lägger du till en reporter i dev proxy-konfigurationsfilen. Dev Proxy erbjuder flera reportrar. I det här exemplet använder du textredigerare för oformaterad text.

Uppdatera din devproxyrc.json-fil med en referens till en plaintext-rapport.

{
  "$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"
  }
}

Kontrollera om appen anropar API:er med minimala behörigheter

För att kontrollera om appen anropar API:er med minimal behörighet måste du ansluta till din Azure-prenumeration, köra Dev Proxy och låta den fånga upp API-begäranden från din app. Dev Proxy jämför sedan informationen om API-begäranden med informationen från Azure API Center och rapporter om de minsta behörigheterna.

Ansluta till din Azure-prenumeration

Dev Proxy använder information från Azure API Center för att avgöra om din app anropar API:er med minimal behörighet. För att få den här informationen behöver den en anslutning till din Azure-prenumeration. Du kan ansluta till din Azure-prenumeration på flera sätt.

Kör Dev Proxy

När du har anslutit till din Azure-prenumeration startar du Dev Proxy. Om du startar Dev Proxy från samma mapp där devproxyrc.json filen finns läser den in konfigurationen automatiskt. Annars anger du sökvägen till konfigurationsfilen med hjälp av --config-file alternativet .

När Dev Proxy startar kontrollerar den att den kan ansluta till din Azure-prenumeration. När anslutningen lyckas visas ett meddelande som liknar:

 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

Tryck på r för att börja spela in API-begäranden från din app.

Använda appen

Använd din app som vanligt. I den här handledningen kan du använda följande begäran med en simulerad åtkomsttoken med customer.readwrite behörighet:

@readwriteToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJzY3AiOlsiY3VzdG9tZXIucmVhZHdyaXRlIl19.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

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

Dev Proxy fångar upp API-begäranden och lagrar information om dem i minnet. På kommandoraden där Dev Proxy körs bör du se information om API-begäranden som appen gö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}

Kontrollera behörigheter

Stoppa inspelningen genom att trycka på s. Dev Proxy ansluter till API Center-instansen och jämför informationen om begäranden med informationen från API Center.

 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

När Dev Proxy har slutfört analysen skapas en rapport i en fil med namnet ApiCenterMinimalPermissionsPlugin_PlainTextReporter.txt med följande innehåll:

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.

Sammanfattning

Med hjälp av ApiCenterMinimalPermissionsPluginkan du kontrollera om appen anropar API:er med minimala behörigheter. Plugin-programmet jämför informationen om API-begäranden från din app med information från Azure API Center och rapporter om överdrivna behörigheter. Den rekommenderar också de minimala behörigheter som krävs för att anropa de API:er som du använder i din app. Om du kontrollerar att appen anropar API:er med minimala behörigheter kan du göra din app säkrare. Du kan köra den här kontrollen manuellt eller integrera med din CI/CD-pipeline för att säkerställa att appen anropar API:er med minimal behörighet innan den släpps till produktion.

Mer information