Udostępnij za pośrednictwem


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ć.

Zrzut ekranu przedstawiający wiersz polecenia przedstawiający sprawdzanie, czy zarejestrowane żądania interfejsu API używają tokenów minimalnej liczby uprawnień interfejsu API.

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-minimalpermissionspolecenia .

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.

Zrzut ekranu centrum interfejsu API platformy Azure z interfejsem API i specyfikacją interfejsu OpenAPI z informacjami o zabezpieczeniach.

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.

Zrzut ekranu przedstawiający stronę przeglądu usługi Azure API Center z wyróżnionymi kilkoma właściwościami.

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 , resourceGroupNamei serviceName podaj informacje o wystąpieniu subscriptionIdcentrum 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.

Więcej informacji