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.
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.
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
, resourceGroupName
en 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.
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
Samenvatting
Met dev-proxy en de bijbehorende ApiCenterOnboardingPlugin
proxy 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.