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.
Trudno sprawdzić, czy aplikacja wywołuje interfejsy API z minimalnymi uprawnieniami, jest taka, ż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 aplikacja wywołuje interfejsy API przy użyciu minimalnych uprawnień, musisz mieć wystąpienie centrum interfejsów API platformy Azure z informacjami o interfejsach API używanych w organizacji.
Napiwek
Pobierz ustawienie wstępne dla tego artykułu, uruchamiając polecenie w wierszu devproxy preset get demo-apicenter-minimalpermissions
polecenia .
Tworzenie wystąpienia centrum interfejsu API platformy Azure
Przed rozpoczęciem utwórz wystąpienie centrum interfejsów API platformy Azure i zarejestruj interfejsy 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ń.
Kopiowanie informacji centrum interfejsu API
Na stronie Przegląd wystąpienia centrum interfejsu API platformy Azure skopiuj nazwę wystąpienia centrum interfejsu API, nazwę grupy zasobów i identyfikator subskrypcji. Te informacje są potrzebne do skonfigurowania ApiCenterMinimalPermissionsPlugin
elementu , aby można było nawiązać połączenie z wystąpieniem centrum interfejsu API platformy 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/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"
}
}
We właściwościach , resourceGroupName
i serviceName
podaj informacje o wystąpieniu subscriptionId
centrum interfejsu 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ą serwera proxy deweloperów.
Dodawanie reportera
Tworzy ApiCenterMinimalPermissionsPlugin
raport interfejsów API używanych przez aplikację oraz minimalne uprawnienia wymagane do ich wywołania. Aby wyświetlić ten raport, dodaj reportera do pliku konfiguracji serwera proxy deweloperów. Serwer proxy deweloperów oferuje kilku reporterów. W tym przykładzie użyjesz reportera zwykłego tekstu.
devproxyrc.json
Zaktualizuj plik przy użyciu odwołania do reportera zwykłego tekstu:
{
"$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"
}
}
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
Serwer proxy deweloperów używa informacji z Centrum interfejsów API platformy Azure w celu określenia, czy aplikacja wywołuje interfejsy 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 serwer proxy dewelopera z tego samego folderu, w którym devproxyrc.json
znajduje się plik, automatycznie ł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żywanie 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}}
Serwer proxy deweloperów przechwytuje żądania interfejsu 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 serwer proxy deweloperów zakończy analizę, tworzy raport w pliku o nazwie o ApiCenterMinimalPermissionsPlugin_PlainTextReporter.txt
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.