Sdílet prostřednictvím


Jak zkontrolovat, jestli moje aplikace volá rozhraní API s minimálními oprávněními

Při sestavování aplikace se pravděpodobně integrujete s několika rozhraními API a operacemi. Abyste měli jistotu, že je vaše aplikace zabezpečená a dodržuje zásadu nejnižších oprávnění, měli byste zkontrolovat, jestli vaše aplikace volá rozhraní API s minimálními oprávněními. Použitím minimálních oprávnění snížíte riziko neoprávněného přístupu k datům a prostředkům.

Co je těžké zkontrolovat, jestli vaše aplikace volá rozhraní API s minimálními oprávněními, je, že při každé integraci nové operace je potřeba vyhodnotit sadu oprávnění, která ve své aplikaci používáte. Ruční sledování všech operací a oprávnění je časově náročné a náchylné k chybám. Pomocí Dev Proxy a Azure API Center můžete automatizovat kontrolu, jestli vaše aplikace volá rozhraní API s minimálními oprávněními.

Pokud chcete zkontrolovat, jestli aplikace volá rozhraní API s minimálními oprávněními, můžete použít modul ApiCenterMinimalPermissionsPlugin plug-in. Tento modul plug-in porovnává oprávnění, která vaše aplikace používá, s oprávněními definovanými ve službě Azure API Center a hlásí všechna nadměrná oprávnění. Doporučuje také minimální sadu oprávnění, která byste měli použít.

Snímek obrazovky příkazového řádku s kontrolou dev proxy serveru, jestli zaznamenané požadavky rozhraní API používají tokeny s minimálními oprávněními rozhraní API

Než začnete

Pokud chcete zkontrolovat, jestli vaše aplikace volá rozhraní API s minimálními oprávněními, musíte mít instanci Azure API Center s informacemi o rozhraních API, která používáte ve vaší organizaci.

Tip

Stáhněte si předvolbu pro tento článek spuštěním na příkazovém řádku devproxy preset get demo-apicenter-minimalpermissions.

Vytvoření instance Azure API Center

Než začnete, vytvořte instanci azure API Center a zaregistrujte rozhraní API, která používáte ve vaší organizaci. Pro každé rozhraní API nahrajte soubor specifikace OpenAPI, který popisuje operace a oprávnění rozhraní API.

Snímek obrazovky služby Azure API Center s rozhraním API a specifikací OpenAPI s informacemi o zabezpečení

Tyto ApiCenterMinimalPermissionsPlugin informace používají ke kontrole, jestli vaše aplikace volá rozhraní API s minimálními oprávněními.

Kopírování informací o centru rozhraní API

Na stránce Přehled instance služby Azure API Center zkopírujte název instance služby API Center, název skupiny prostředků a ID předplatného. Tyto informace potřebujete ke konfiguraci ApiCenterMinimalPermissionsPlugin , aby se mohly připojit k vaší instanci služby Azure API Center.

Snímek obrazovky se stránkou přehledu azure API Center se zvýrazněnými několika vlastnostmi

Konfigurace dev proxy serveru

Pokud chcete zkontrolovat, jestli vaše aplikace volá rozhraní API s minimálními oprávněními, musíte povolit ApiCenterMinimalPermissionsPlugin konfigurační soubor dev proxy serveru. Pokud chcete vytvořit sestavu oprávnění, která vaše aplikace používá, přidejte reportér.

Povolení ApiCenterMinimalPermissionsPlugin

devproxyrc.json Do souboru přidejte následující konfiguraci:

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

V objektu subscriptionId, resourceGroupNamea serviceName vlastnosti zadejte informace o vaší instanci služby Azure API Center.

urlsToWatch Ve vlastnosti zadejte adresy URL, které vaše aplikace používá.

Tip

Pomocí rozšíření Dev Proxy Toolkit Visual Studio Code můžete snadno spravovat konfiguraci dev proxy serveru.

Přidání reportéru

Vytvoří ApiCenterMinimalPermissionsPlugin sestavu rozhraní API, která vaše aplikace používá, a minimální oprávnění potřebná k jejich volání. Pokud chcete tuto sestavu zobrazit, přidejte do konfiguračního souboru dev proxy reporter. Dev Proxy nabízí několik zpravodajů. V tomto příkladu použijete reportér prostého textu.

Aktualizujte devproxyrc.json soubor odkazem na reportér prostého textu:

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

Kontrola, jestli vaše aplikace volá rozhraní API s minimálními oprávněními

Pokud chcete zkontrolovat, jestli vaše aplikace volá rozhraní API s minimálními oprávněními, musíte se připojit ke svému předplatnému Azure, spustit dev proxy server a nechat ji zachycovat požadavky rozhraní API z vaší aplikace. Dev Proxy pak porovná informace o požadavcích rozhraní API s informacemi z Azure API Center a hlásí minimální oprávnění.

Připojení k předplatnému Azure

Dev Proxy používá informace z Azure API Center k určení, jestli vaše aplikace volá rozhraní API s minimálními oprávněními. K získání těchto informací potřebuje připojení k vašemu předplatnému Azure. K předplatnému Azure se můžete připojit několika způsoby.

Spuštění dev proxy serveru

Po připojení k předplatnému Azure spusťte Dev Proxy. Pokud spustíte Dev Proxy ze stejné složky, ve které devproxyrc.json se soubor nachází, automaticky načte konfiguraci. V opačném případě zadejte cestu ke konfiguračnímu souboru pomocí --config-file této možnosti.

Když se spustí dev proxy server, zkontroluje, že se může připojit k vašemu předplatnému Azure. Po úspěšném připojení se zobrazí zpráva podobná této:

 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

Stisknutím klávesy R spusťte nahrávání požadavků rozhraní API z vaší aplikace.

Použití aplikace

Používejte aplikaci stejně, jako byste to normálně dělali. V tomto kurzu můžete použít následující požadavek se simulovaným přístupovým tokenem s oprávněním customer.readwrite :

@readwriteToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJzY3AiOlsiY3VzdG9tZXIucmVhZHdyaXRlIl19.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

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

Dev Proxy zachytí požadavky rozhraní API a uloží informace o nich do paměti. Na příkazovém řádku, na kterém běží Dev Proxy, byste měli vidět informace o požadavcích rozhraní API, které vaše aplikace provádí.

 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}

Ověření oprávnění

Zastavte záznam stisknutím klávesy s. Dev Proxy se připojí k instanci služby API Center a porovná informace o požadavcích s informacemi z centra 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

Po dokončení analýzy dev proxy vytvoří sestavu v souboru s názvem ApiCenterMinimalPermissionsPlugin_PlainTextReporter.txt s následujícím obsahem:

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.

Shrnutí

Pomocí příkazu ApiCenterMinimalPermissionsPluginmůžete zkontrolovat, jestli vaše aplikace volá rozhraní API s minimálními oprávněními. Modul plug-in porovnává informace o požadavcích rozhraní API z vaší aplikace s informacemi z Azure API Center a hlásí nadměrné oprávnění. Také doporučuje minimální oprávnění potřebná k volání rozhraní API, která používáte ve své aplikaci. Ověření, že vaše aplikace volá rozhraní API s minimálními oprávněními, vám pomůže zajistit lepší zabezpečení aplikace. Tuto kontrolu můžete spustit ručně nebo integrovat s kanálem CI/CD, abyste měli jistotu, že vaše aplikace volá rozhraní API s minimálními oprávněními před uvolněním do produkčního prostředí.

Více informací