Delen via


Schaduw-API's detecteren met dev proxy

Met Behulp van Azure API Center catalogiseren u API's die in uw organisatie worden gebruikt. Zo kunt u zien welke API's u gebruikt, waar de API zich in de levenscyclus bevindt en wie er contact moet opnemen als er problemen zijn. Kortom, met een bijgewerkte catalogus met API's kunt u het governance-, compliance- en beveiligingspostuur verbeteren.

Wanneer u uw app bouwt, met name als u nieuwe scenario's integreert, gebruikt u mogelijk API's die niet zijn geregistreerd in Azure API Center. Deze API's worden schaduw-API's genoemd. Shadow-API's zijn API's die niet zijn geregistreerd in uw organisatie. Dit kunnen API's zijn die nog niet zijn geregistreerd of api's die niet in uw organisatie moeten worden gebruikt.

Een manier om te controleren op schaduw-API's is door dev proxy te gebruiken. Dev Proxy is een API-simulator die API-aanvragen van toepassingen onderschept en analyseert. Een functie van Dev Proxy is controleren of de onderschepte API-aanvragen behoren tot API's die zijn geregistreerd in API Center.

Schermopname van een opdrachtprompt met Dev Proxy-controle of de geregistreerde API-aanvragen zijn geregistreerd in Azure API Center.

Voordat u begint

Als u schaduw-API's wilt detecteren, moet u een Azure API Center-exemplaar hebben met informatie over de API's die u in uw organisatie gebruikt. Als u er nog geen hebt gemaakt, raadpleegt u quickstart: Uw API-centrum maken. Daarnaast moet u Dev Proxy installeren.

Informatie over API Center kopiëren

Kopieer op de overzichtspagina van het Azure API Center-exemplaar de naam van het API Center-exemplaar, de naam van de resourcegroep en de abonnements-id. U hebt deze informatie nodig om de Dev Proxy ApiCenterOnboardingPlugin te configureren, zodat deze verbinding kan maken met uw Azure API Center-exemplaar.

Schermopname van de overzichtspagina van Azure API Center met verschillende eigenschappen gemarkeerd.

Dev-proxy configureren

Als u wilt controleren of uw app schaduw-API's gebruikt, moet u het inschakelen in het configuratiebestand van de ApiCenterOnboardingPlugin dev-proxy. Als u een rapport wilt maken van API's die door uw app worden gebruikt, voegt u een reporter toe.

Schakel de ApiCenterOnboardingPlugin

Voeg in het devproxyrc.json bestand de volgende configuratie toe:

{
  "$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": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "resourceGroupName": "demo",
    "serviceName": "contoso-api-center",
    "workspaceName": "default",
    "createApicEntryForNewApis": false
  }
}

Geef in de subscriptionId, resourceGroupNameen serviceName eigenschappen de informatie op over uw Azure API Center-exemplaar.

Geef in de urlsToWatch eigenschap de URL's op die door uw app worden gebruikt.

Tip

Gebruik de Visual Studio Code-extensie Dev Proxy Toolkit om de Dev Proxy-configuratie eenvoudig te beheren.

Een reporter toevoegen

Het ApiCenterOnboardingPlugin produceert een rapport van API's die door uw app worden gebruikt. Als u dit rapport wilt weergeven, voegt u een reporter toe aan uw Dev Proxy-configuratiebestand. Dev Proxy biedt verschillende reporters. In dit voorbeeld gebruikt u de reporter zonder opmaak.

Werk uw devproxyrc.json bestand bij met een verwijzing naar de reporter zonder opmaak:

{
  "$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": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "resourceGroupName": "demo",
    "serviceName": "contoso-api-center",
    "workspaceName": "default",
    "createApicEntryForNewApis": false
  }
}

Controleer of uw app schaduw-API's gebruikt

Als u wilt controleren of uw app schaduw-API's gebruikt, maakt u verbinding met uw Azure-abonnement, voert u Dev Proxy uit en laat u API-aanvragen van uw app onderscheppen. Dev Proxy vergelijkt vervolgens de informatie over de API-aanvragen met de informatie uit Azure API Center en rapporteert over API's die niet zijn geregistreerd in API Center.

Verbinding maken met uw Azure-abonnement

Dev Proxy gebruikt informatie uit Azure API Center om te bepalen of uw app schaduw-API's gebruikt. Om deze informatie op te halen, heeft deze een verbinding met uw Azure-abonnement nodig. U kunt op verschillende manieren verbinding maken met uw Azure-abonnement.

Dev-proxy uitvoeren

Nadat u verbinding hebt gemaakt met uw Azure-abonnement, start u Dev Proxy. Als u Dev Proxy start vanuit dezelfde map waarin het devproxyrc.json bestand zich bevindt, wordt de configuratie automatisch geladen. Geef anders het pad naar het configuratiebestand op met behulp van de --config-file optie.

Wanneer dev proxy wordt gestart, wordt gecontroleerd of deze verbinding kan maken met uw Azure-abonnement. Wanneer de verbinding is geslaagd, ziet u een bericht dat lijkt op:

 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

Druk op r om API-aanvragen van uw app op te nemen.

Uw app gebruiken

Gebruik uw app zoals u dat normaal zou doen. Dev Proxy onderschept de API-aanvragen en slaat informatie over deze aanvragen op in het geheugen. Op de opdrachtregel waar Dev Proxy wordt uitgevoerd, ziet u informatie over API-aanvragen die uw app maakt.

 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

Schaduw-API's controleren

Stop de opname door op s te drukken. Dev Proxy maakt verbinding met het API Center-exemplaar en vergelijkt de informatie over aanvragen met de informatie uit 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...

Wanneer de analyse van de Dev Proxy is voltooid, wordt er een rapport gemaakt in een bestand met de volgende ApiCenterOnboardingPlugin_PlainTextReporter.txt inhoud:

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

Schaduw-API's automatisch onboarden

De ApiCenterOnboardingPlugin api's kunnen niet alleen schaduw-API's detecteren, maar ook automatisch onboarden naar API Center. Als u schaduw-API's automatisch wilt onboarden, werkt u in het configuratiebestand dev proxy het createApicEntryForNewApis bij naar true.

{
  "$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": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "resourceGroupName": "demo",
    "serviceName": "contoso-api-center",
    "workspaceName": "default",
    "createApicEntryForNewApis": true
  }
}

Wanneer u Dev Proxy uitvoert waarop createApicEntryForNewApis deze is ingesteld true, worden er automatisch nieuwe API-vermeldingen gemaakt in Azure API Center voor de schaduw-API's die worden gedetecteerd.

Schermopname van API Center met een nieuw onboarding-API.

Schaduw-API's automatisch onboarden met OpenAPI-specificatie

Wanneer u ervoor kiest om automatisch onboarding uit te voeren, kunt u schaduw-API's naar API Center laten genereren door Dev Proxy de OpenAPI-specificatie voor de API te genereren. Onboarding-API's met OpenAPI-specificaties versnellen de onboarding van ontbrekende eindpunten en bieden u de benodigde informatie over de API. Wanneer de ApiCenterOnboardingPlugin dev-proxy een nieuwe OpenAPI-specificatie heeft gemaakt, wordt deze gekoppeld aan de bijbehorende onboarding-API in API Center.

Als u automatisch OpenAPI-specificaties voor onboarded API's wilt genereren, werkt u de Dev Proxy-configuratie bij om de OpenApiSpecGeneratorPlugin.

{
  "$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": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "resourceGroupName": "demo",
    "serviceName": "contoso-api-center",
    "workspaceName": "default",
    "createApicEntryForNewApis": true
  }
}

Belangrijk

Dev Proxy voert invoegtoepassingen uit in de volgorde waarin ze zijn geregistreerd in de configuratie. U moet de OpenApiSpecGeneratorPlugin eerste registreren, zodat deze OpenAPI-specificaties kan maken voordat de ApiCenterOnboardingPlugin nieuwe API's worden onboardd.

Wanneer u Dev Proxy uitvoert met deze configuratie, worden er automatisch nieuwe API-vermeldingen gemaakt in Azure API Center voor de schaduw-API's die worden gedetecteerd. Voor elke nieuwe API genereert Dev Proxy een OpenAPI-specificatie en koppelt deze aan de bijbehorende onboarded API in 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    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

Schermopname van Azure API Center met een nieuw onboarded API met een OpenAPI-specificatie.

Samenvatting

Met dev-proxy en de bijbehorende ApiCenterOnboardingPluginproxy kunt u controleren of uw app schaduw-API's gebruikt. De invoegtoepassing analyseert API-aanvragen van uw app en rapporteert over API-aanvragen die niet zijn geregistreerd in Azure API Center. Met de invoegtoepassing kunt u eenvoudig ontbrekende API's onboarden naar API Center. Door de ApiCenterOnboardingPlugin invoegtoepassing te combineren met de OpenApiSpecGeneratorPlugin, kunt u automatisch OpenAPI-specificaties genereren voor de zojuist onboarded API's. U kunt deze controle handmatig uitvoeren of integreren met uw CI/CD-pijplijn om ervoor te zorgen dat uw app geregistreerde API's gebruikt voordat deze in productie wordt vrijgegeven.

Meer informatie