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.
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.
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.
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
, resourceGroupName
a 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 ApiCenterMinimalPermissionsPlugin
můž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í.