Jak sprawdzić, czy moja aplikacja wywołuje interfejsy API z minimalnymi uprawnieniami
Podczas kompilowania aplikacji prawdopodobnie integrujesz się z kilkoma interfejsami API i operacjami. Aby upewnić się, że aplikacja jest bezpieczna i jest zgodna z zasadą najniższych uprawnień, należy sprawdzić, czy aplikacja wywołuje interfejsy API z minimalnymi uprawnieniami. Przy użyciu minimalnych uprawnień można zmniejszyć ryzyko nieautoryzowanego dostępu do danych i zasobów.
Problem sprawdzenia, czy aplikacja wywołuje interfejsy API z minimalnymi uprawnieniami, polega na tym, że za każdym razem, gdy integrujesz nową operację, musisz ocenić zestaw uprawnień używanych w aplikacji. Ręczne śledzenie wszystkich operacji i uprawnień jest czasochłonne i podatne na błędy. Korzystając z usługi Dev Proxy i Centrum interfejsów API platformy Azure, możesz zautomatyzować sprawdzanie, czy aplikacja wywołuje interfejsy API z minimalnymi uprawnieniami.
Aby sprawdzić, czy aplikacja wywołuje interfejsy API przy użyciu minimalnych uprawnień, możesz użyć ApiCenterMinimalPermissionsPlugin
wtyczki. Ta wtyczka porównuje uprawnienia używane przez aplikację z uprawnieniami zdefiniowanymi w Centrum interfejsu API platformy Azure i raportuje o wszelkich nadmiernych uprawnieniach. Zaleca również minimalny zestaw uprawnień, których należy użyć.
Przed rozpoczęciem
Aby sprawdzić, czy Twoja aplikacja wywołuje interfejsy API przy użyciu minimalnych uprawnień, musisz mieć instancję Azure API Center z informacjami o interfejsach API używanych w Twojej organizacji.
Napiwek
Pobierz ustawienie wstępne dla tego artykułu z instrukcjami, uruchamiając w wierszu poleceń devproxy preset get demo-apicenter-minimalpermissions
.
Utwórz instancję centrum API Azure
Przed rozpoczęciem utwórz wystąpienie Azure API Center i zarejestruj API używane w organizacji. Dla każdego interfejsu API przekaż plik specyfikacji interfejsu OpenAPI, który opisuje operacje i uprawnienia interfejsu API.
Te ApiCenterMinimalPermissionsPlugin
informacje umożliwiają sprawdzenie, czy aplikacja wywołuje interfejsy API przy użyciu minimalnych uprawnień.
Kopiuj informacje Centrum API
Na stronie Przegląd wystąpienia centrum API platformy Azure skopiuj nazwę wystąpienia centrum API, nazwę grupy zasobów oraz identyfikator subskrypcji. Te informacje są niezbędne do skonfigurowania elementu ApiCenterMinimalPermissionsPlugin
, aby można było nawiązać połączenie z wystąpieniem Centrum interfejsów API Azure.
Konfigurowanie serwera proxy deweloperskiego
Aby sprawdzić, czy aplikacja wywołuje interfejsy API przy użyciu minimalnych uprawnień, musisz włączyć element ApiCenterMinimalPermissionsPlugin
w pliku konfiguracji serwera proxy deweloperów. Aby utworzyć raport uprawnień używanych przez aplikację, dodaj reportera.
Włącz ApiCenterMinimalPermissionsPlugin
devproxyrc.json
W pliku dodaj następującą konfigurację:
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.24.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"
}
}
We właściwościach subscriptionId
, resourceGroupName
i serviceName
podaj informacje o wystąpieniu Centrum interfejsów API platformy Azure.
urlsToWatch
We właściwości określ adresy URL używane przez aplikację.
Napiwek
Użyj rozszerzenia Dev Proxy Toolkit programu Visual Studio Code, aby łatwo zarządzać konfiguracją Dev Proxy.
Dodawanie reportera
Generuje raport API używanych przez aplikację oraz minimalnych uprawnień wymaganych do ich wywołania. Aby wyświetlić ten raport, dodaj reportera do pliku konfiguracji Dev Proxy. Serwer proxy deweloperów oferuje kilku reporterów. W tym przykładzie użyjesz reportera zwykłego tekstu.
Zaktualizuj swój plik devproxyrc.json
z odwołaniem do reportera tekstu niesformatowanego.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.24.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"
}
}
Sprawdź, czy aplikacja wywołuje interfejsy API przy użyciu minimalnych uprawnień
Aby sprawdzić, czy aplikacja wywołuje interfejsy API przy użyciu minimalnych uprawnień, musisz nawiązać połączenie z subskrypcją platformy Azure, uruchomić serwer proxy deweloperów i zezwolić na przechwytywanie żądań interfejsu API z aplikacji. Następnie serwer proxy deweloperów porównuje informacje o żądaniach interfejsu API z informacjami z centrum interfejsu API platformy Azure i raportami dotyczącymi minimalnych uprawnień.
Nawiązywanie połączenia z subskrypcją platformy Azure
Dev Proxy używa informacji z Centrum API platformy Azure, aby określić, czy aplikacja wywołuje API przy użyciu minimalnych uprawnień. Aby uzyskać te informacje, potrzebuje połączenia z subskrypcją platformy Azure. Możesz nawiązać połączenie z subskrypcją platformy Azure na kilka sposobów.
Uruchamianie serwera proxy deweloperskiego
Po nawiązaniu połączenia z subskrypcją platformy Azure uruchom usługę Dev Proxy. Jeśli uruchomisz Proxy deweloperski z tego samego folderu, w którym znajduje się twój plik devproxyrc.json
, automatycznie załaduje konfigurację. W przeciwnym razie określ ścieżkę do pliku konfiguracji przy użyciu --config-file
opcji .
Po uruchomieniu usługi Dev Proxy sprawdza, czy może nawiązać połączenie z subskrypcją platformy Azure. Po pomyślnym nawiązaniu połączenia zostanie wyświetlony komunikat podobny do następującego:
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
Naciśnij pozycję r , aby rozpocząć nagrywanie żądań interfejsu API z aplikacji.
Użyj aplikacji
Użyj aplikacji, jak zwykle. W tym samouczku możesz użyć następującego żądania z symulowanym tokenem dostępu z uprawnieniami customer.readwrite
:
@readwriteToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJzY3AiOlsiY3VzdG9tZXIucmVhZHdyaXRlIl19.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
GET https://api.northwind.com/customers/ALFKI
Authorization: Bearer {{readwriteToken}}
Dev Proxy przechwytuje żądania API i przechowuje informacje o nich w pamięci. W wierszu polecenia, w którym jest uruchamiany serwer proxy deweloperów, powinny zostać wyświetlone informacje o żądaniach interfejsu API, które wykonuje Aplikacja.
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}
Sprawdzanie uprawnień
Zatrzymaj nagrywanie, naciskając s. Serwer proxy dewelopera łączy się z wystąpieniem Centrum Interfejsu API i porównuje informacje o żądaniach z informacjami z Centrum Interfejsu 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
Gdy Dev Proxy zakończy analizę, tworzy raport w pliku o nazwie ApiCenterMinimalPermissionsPlugin_PlainTextReporter.txt
o następującej zawartości:
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.
Podsumowanie
Korzystając z elementu ApiCenterMinimalPermissionsPlugin
, możesz sprawdzić, czy aplikacja wywołuje interfejsy API przy użyciu minimalnych uprawnień. Wtyczka porównuje informacje o żądaniach interfejsu API z aplikacji z informacjami z centrum interfejsu API platformy Azure i raportuje nadmierne uprawnienia. Zaleca się również minimalne uprawnienia wymagane do wywoływania interfejsów API, których używasz w aplikacji. Sprawdzenie, czy aplikacja wywołuje interfejsy API przy użyciu minimalnych uprawnień, pomaga zwiększyć bezpieczeństwo aplikacji. Możesz uruchomić to sprawdzanie ręcznie lub zintegrować z potokiem ciągłej integracji/ciągłego wdrażania, aby upewnić się, że aplikacja wywołuje interfejsy API przy użyciu minimalnych uprawnień przed udostępnieniem go do środowiska produkcyjnego.