Entdecken von Schatten-APIs mit Dev Proxy

Mithilfe von Azure API Center katalogisieren Sie APIs, die in Ihrer Organisation verwendet werden. Dadurch können Sie ermitteln, welche APIs Sie verwenden, in welcher Phase des Lebenszyklus sich die API befindet und an wen Sie sich bei auftretenden Problemen wenden können. Sie können also den Governance-, Compliance- und Sicherheitsstatus verbessern, wenn Sie über einen aktuellen API-Katalog verfügen.

Wenn Sie Ihre App insbesondere bei der Integration neuer Szenarios erstellen, verwenden Sie möglicherweise APIs, die nicht in Azure API Center registriert sind. Diese APIs werden als Schatten-APIs bezeichnet. Schatten-APIs sind APIs, die nicht in Ihrer Organisation registriert sind. Dabei könnte es sich um APIs handeln, die noch nicht registriert sind oder die in Ihrer Organisation nicht verwendet werden sollen.

Eine Möglichkeit zur Überprüfung auf Schatten-APIs ist die Verwendung von Dev Proxy. Dev Proxy ist ein API-Simulator, der API-Anforderungen von Anwendungen abfängt und analysiert. Ein Feature von Dev Proxy besteht darin, zu überprüfen, ob die abgefangenen API-Anforderungen zu APIs gehören, die in API Center registriert sind.

Screenshot einer Eingabeaufforderung, auf dem Dev Proxy überprüft, ob die aufgezeichneten API-Anforderungen in Azure API Center registriert sind

Vor der Installation

Um Schatten-APIs zu erkennen, benötigen Sie eine Azure API Center-Instanz mit Informationen zu den APIs, die Sie in Ihrer Organisation verwenden. Wenn Sie noch keins erstellt haben, lesen Sie die Schnellstartanleitung: Erstellen Ihres API-Centers. Darüber hinaus müssen Sie Dev Proxy installieren.

Kopieren von API Center-Informationen

Kopieren Sie auf der Seite „Übersicht“ der Azure API Center-Instanz den Namen der API Center-Instanz sowie den Namen der Ressourcengruppe und Abonnement-ID. Diese Informationen benötigen Sie, um das ApiCenterOnboardingPlugin-Plug-In von Dev Proxy so zu konfigurieren, dass es eine Verbindung mit Ihrer Azure API Center-Instanz herstellen kann.

Screenshot der Seite „Übersicht“ von Azure API Center mit mehreren hervorgehobenen Eigenschaften

Konfigurieren von Dev Proxy

Um zu überprüfen, ob Ihre App Schatten-APIs verwendet, müssen Sie in der Konfigurationsdatei für Dev Proxy das ApiCenterOnboardingPlugin-Plug-In aktivieren. Um einen Bericht der APIs zu erstellen, die Ihre App verwendet, fügen Sie einen Reporter hinzu.

Aktivieren des ApiCenterOnboardingPlugin-Plug-Ins

Fügen Sie in der Datei devproxyrc.json die folgende Konfiguration hinzu:

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.19.0/rc.schema.json",
  "plugins": [
    {
      "name": "ApiCenterOnboardingPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
      "configSection": "apiCenterOnboardingPlugin"
    }
  ],
  "urlsToWatch": [
    "https://jsonplaceholder.typicode.com/*"
  ],
  "apiCenterOnboardingPlugin": {
    "subscriptionId": "00000000-0000-0000-0000-000000000000",
    "resourceGroupName": "demo",
    "serviceName": "contoso-api-center",
    "workspaceName": "default",
    "createApicEntryForNewApis": false
  }
}

Geben Sie in den Eigenschaften subscriptionId, resourceGroupName und serviceName die Informationen zu Ihrer Azure API Center-Instanz an.

Geben Sie in der Eigenschaft urlsToWatch die URLs an, die Ihre App verwendet.

Tipp

Verwenden Sie die Visual Studio Code-Erweiterung Dev Proxy Toolkit, um die Dev Proxy-Konfiguration mühelos zu verwalten.

Hinzufügen eines Reporters

Das ApiCenterOnboardingPlugin-Plug-In erstellt einen Bericht der APIs, die Ihre App verwendet. Fügen Sie ihrer Konfigurationsdatei für Dev Proxy einen Reporter hinzu, um diesen Bericht anzuzeigen. Dev Proxy bietet mehrere Reporter. In diesem Beispiel verwenden Sie den Nur-Text-Reporter.

Aktualisieren Sie Ihre devproxyrc.json-Datei mit einem Verweis auf den Nur-Text-Reporter:

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.19.0/rc.schema.json",
  "plugins": [
    {
      "name": "ApiCenterOnboardingPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
      "configSection": "apiCenterOnboardingPlugin"
    },
    {
      "name": "PlainTextReporter",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll"
    }
  ],
  "urlsToWatch": [
    "https://jsonplaceholder.typicode.com/*"
  ],
  "apiCenterOnboardingPlugin": {
    "subscriptionId": "00000000-0000-0000-0000-000000000000",
    "resourceGroupName": "demo",
    "serviceName": "contoso-api-center",
    "workspaceName": "default",
    "createApicEntryForNewApis": false
  }
}

Überprüfen, ob Ihre App Schatten-APIs verwendet

Um zu überprüfen, ob Ihre App Schatten-APIs verwendet, stellen Sie eine Verbindung mit Ihrem Azure-Abonnement her, führen Sie Dev Proxy aus, und lassen Sie Dev Proxy die API-Anforderungen von Ihrer App abfangen. Dev Proxy vergleicht daraufhin die Informationen zu den API-Anforderungen mit den Informationen aus Azure API Center und meldet alle APIs, die nicht in API Center registriert sind.

Verbinden mit Ihrem Azure-Abonnement

Dev Proxy verwendet Informationen aus Azure API Center, um zu ermitteln, ob Ihre App Schatten-APIs verwendet. Um diese Informationen zu erhalten, benötigt sie eine Verbindung mit Ihrem Azure-Abonnement. Es bestehen verschiedene Möglichkeiten, eine Verbindung mit Ihrem Azure-Abonnement herstellen.

Ausführen von Dev Proxy

Starten Sie Dev Proxy, nachdem Sie eine Verbindung mit Ihrem Azure-Abonnement hergestellt haben. Wenn Sie Dev Proxy aus demselben Ordner starten, in dem sich Ihre devproxyrc.json-Datei befindet, wird die Konfiguration automatisch geladen. Geben Sie andernfalls mithilfe der Option --config-file den Pfad zur Konfigurationsdatei an.

Beim Starten von Dev Proxy wird überprüft, ob eine Verbindung mit Ihrem Azure-Abonnement hergestellt werden kann. Wenn die Verbindung erfolgreich hergestellt werden kann, wird eine Meldung wie die folgende angezeigt:

 info    Plugin ApiCenterOnboardingPlugin 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

Drücken Sie r, um die Aufzeichnung der API-Anforderungen aus Ihrer App zu starten.

Verwenden der App

Verwenden Sie Ihre App wie gewohnt. Dev Proxy fängt die API-Anforderungen ab und speichert Informationen zu ihnen im Arbeitsspeicher. In der Befehlszeile, in der Dev Proxy ausgeführt wird, sollten Informationen zu API-Anforderungen angezeigt werden, die Ihre App ausführt.

 info    Plugin ApiCenterOnboardingPlugin 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://jsonplaceholder.typicode.com/posts
 api   ╰ Passed through

 req   ╭ DELETE https://jsonplaceholder.typicode.com/posts/1
 api   ╰ Passed through

Überprüfen von Schatten-APIs

Beenden Sie die Aufzeichnung, indem Sie s drücken. Dev Proxy stellt eine Verbindung mit der API Center-Instanz her und vergleicht die Informationen zu den Anforderungen mit den Informationen aus API Center.

 info    Plugin ApiCenterOnboardingPlugin 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://jsonplaceholder.typicode.com/posts
 api   ╰ Passed through

 req   ╭ DELETE https://jsonplaceholder.typicode.com/posts/1
 api   ╰ Passed through
○ Stopped recording
 info    Checking if recorded API requests belong to APIs in API Center...
 info    Loading APIs from API Center...
 info    Loading API definitions from API Center...

Nach Abschluss der Analyse erstellt Dev Proxy einen Bericht in einer Datei namens ApiCenterOnboardingPlugin_PlainTextReporter.txt mit dem folgenden Inhalt:

New APIs that aren't registered in Azure API Center:

https://jsonplaceholder.typicode.com:
  DELETE https://jsonplaceholder.typicode.com/posts/1

APIs that are already registered in Azure API Center:

GET https://jsonplaceholder.typicode.com/posts

Automatisches Integrieren von Schatten-APIs

Das ApiCenterOnboardingPlugin-Plug-In kann nicht allein Schatten-APIs erkennen, sondern diese darüber hinaus automatisch in API Center integrieren. Um Schatten-APIs automatisch zu integrieren, legen Sie in der Konfigurationsdatei für Dev Proxy createApicEntryForNewApis auf true fest.

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.19.0/rc.schema.json",
  "plugins": [
    {
      "name": "ApiCenterOnboardingPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
      "configSection": "apiCenterOnboardingPlugin"
    },
    {
      "name": "PlainTextReporter",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll"
    }
  ],
  "urlsToWatch": [
    "https://jsonplaceholder.typicode.com/*"
  ],
  "apiCenterOnboardingPlugin": {
    "subscriptionId": "00000000-0000-0000-0000-000000000000",
    "resourceGroupName": "demo",
    "serviceName": "contoso-api-center",
    "workspaceName": "default",
    "createApicEntryForNewApis": true
  }
}

Bei der Ausführung mit createApicEntryForNewApis auf true erstellt Dev Proxy in Azure API Center automatisch neue API-Einträge für die erkannten Schatten-APIs.

Screenshot von API Center mit einer neu integrierten API

Automatisches Integrieren von Schatten-APIs mit der OpenAPI-Spezifikation

Wenn Sie sich dazu entscheiden, Schatten-APIs automatisch in API Center zu integrieren, kann Dev Proxy die OpenAPI-Spezifikation für die API generieren. Durch das Integrieren von APIs mit OpenAPI-Spezifikationen wird die Integration fehlender Endpunkte beschleunigt, und Sie erhalten die erforderlichen Informationen zur API. Wenn das ApiCenterOnboardingPlugin-Plug-In erkennt, dass Dev Proxy eine neue OpenAPI-Spezifikation erstellt hat, ordnet es diese der entsprechenden integrierten API in API Center zu.

Aktualisieren Sie die Dev Proxy-Konfiguration so, dass das OpenApiSpecGeneratorPlugin-Plug-In enthalten ist, um OpenAPI-Spezifikationen für integrierte APIs automatisch zu generieren.

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.19.0/rc.schema.json",
  "plugins": [
    {
      "name": "OpenApiSpecGeneratorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll"
    },
    {
      "name": "ApiCenterOnboardingPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
      "configSection": "apiCenterOnboardingPlugin"
    },
    {
      "name": "PlainTextReporter",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll"
    }
  ],
  "urlsToWatch": [
    "https://jsonplaceholder.typicode.com/*"
  ],
  "apiCenterOnboardingPlugin": {
    "subscriptionId": "00000000-0000-0000-0000-000000000000",
    "resourceGroupName": "demo",
    "serviceName": "contoso-api-center",
    "workspaceName": "default",
    "createApicEntryForNewApis": true
  }
}

Wichtig

Dev Proxy führt Plug-Ins in der Reihenfolge aus, in der sie in der Konfiguration registriert sind. Sie müssen das OpenApiSpecGeneratorPlugin-Plug-In zuerst registrieren, damit es OpenAPI-Spezifikationen erstellen kann, bevor das ApiCenterOnboardingPlugin-Plug-In neue APIs integriert.

Bei der Ausführung mit dieser Konfiguration erstellt Dev Proxy in Azure API Center automatisch neue API-Einträge für die erkannten Schatten-APIs. Dev Proxy generiert für jede neue API eine OpenAPI-Spezifikation und ordnet diese in API Center der entsprechenden integrierten API zu.

 info    Plugin ApiCenterOnboardingPlugin 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://jsonplaceholder.typicode.com/posts
 api   ╰ Passed through

 req   ╭ DELETE https://jsonplaceholder.typicode.com/posts/1
 api   ╰ Passed through
○ Stopped recording
 info    Creating OpenAPI spec from recorded requests...
 info    Created OpenAPI spec file jsonplaceholder.typicode.com-20240614104931.json
 info    Checking if recorded API requests belong to APIs in API Center...
 info    Loading APIs from API Center...
 info    Loading API definitions from API Center...
 info    New APIs that aren't registered in Azure API Center:

https://jsonplaceholder.typicode.com:
  DELETE https://jsonplaceholder.typicode.com/posts/1
 info    Creating new API entries in API Center...
 info      Creating API new-jsonplaceholder-typicode-com-1718354977 for https://jsonplaceholder.typicode.com...
 info    DONE

Screenshot von Azure API Center mit einer neu integrierten API mit einer OpenAPI-Spezifikation

Zusammenfassung

Mithilfe von Dev Proxy und dem ApiCenterOnboardingPlugin-Plug-In können Sie überprüfen, ob Ihre App Schatten-APIs verwendet. Das Plug-In analysiert API-Anforderungen aus Ihrer App und meldet alle API-Anforderungen, die nicht in Azure API Center registriert sind. Mit dem Plug-In können Sie fehlenden APIs mühelos in API Center integrieren. Durch die Kombination des ApiCenterOnboardingPlugin-Plug-Ins mit dem OpenApiSpecGeneratorPlugin-Plug-In können Sie OpenAPI-Spezifikationen für die neu integrierten APIs automatisch generieren. Sie können diese Überprüfung manuell ausführen oder mit ihrer CI/CD-Pipeline integrieren, um sicherzustellen, dass Ihre App registrierte APIs verwendet, bevor Sie sie für die Produktion freigeben.

Weitere Informationen