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.

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

Zrzut ekranu wiersza polecenia pokazujący, jak Dev Proxy sprawdza, czy zarejestrowane żądania API używają tokenów minimalnych uprawnień API.

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.

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

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.

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

Więcej informacji