Compartir vía


Detección de API de sombra mediante el proxy de desarrollo

Con el Centro de API de Azure se catalogarán las API que se usan en la organización. Esto le permite saber qué API usa, dónde se encuentra la API en su ciclo de vida y con quién debe ponerse en contacto si hay problemas. En resumen, tener un catálogo actualizado de API le ayuda a mejorar la gobernanza, el cumplimiento y la posición de seguridad.

Al compilar la aplicación, especialmente si va a integrar nuevos escenarios, es posible que use API que no estén registradas en el Centro de API de Azure. Estas API se denominan API ocultas. Las API ocultas son API que no están registradas en la organización. Pueden ser API que aún no están registradas o podrían ser API que no están diseñadas para usarse en la organización.

Una manera de comprobar las API ocultas es con Dev Proxy. Dev Proxy es un simulador de API que intercepta y analiza las solicitudes de API de las aplicaciones. Una característica de Dev Proxy consiste en comprobar si las solicitudes de API interceptadas pertenecen a las API registradas en el Centro de API.

Recorte de pantalla de un símbolo del sistema que muestra la comprobación de Dev Proxy si las solicitudes de API grabadas están registradas en el Centro de API de Azure.

Antes de comenzar

Para detectar las API ocultas, debe tener una instancia del Centro de API de Azure con información sobre las API que usa en su organización. Si aún no ha creado uno, consulte Inicio rápido: Creación del centro de API. Además, debe instalar Dev Proxy.

Copia de la información del Centro de API

En la página Información general de la instancia del Centro de API de Azure, copie el nombre de la instancia del Centro de API, el nombre del grupo de recursos y el identificador de suscripción. Necesita esta información para configurar el ApiCenterOnboardingPlugin de Dev Proxy para que pueda conectarse a la instancia del Centro de API de Azure.

Recorte de pantalla de la página de información general del Centro de API de Azure con varias propiedades resaltadas.

Configuración de Dev Proxy

Para comprobar si la aplicación usa las API ocultas, debe habilitar el ApiCenterOnboardingPlugin en el archivo de configuración de Dev Proxy. Para crear un informe de las API que usa la aplicación, agregue un informador.

Habilitación del ApiCenterOnboardingPlugin

En el archivo devproxyrc.json, agregue la siguiente configuración:

{
  "$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
  }
}

En las propiedades subscriptionId, resourceGroupName y serviceName, proporcione la información sobre la instancia del Centro de API de Azure.

En la propiedad urlsToWatch, especifique las direcciones URL que usa la aplicación.

Sugerencia

Use la extensión de Visual Studio Code del kit de herramientas de Dev Proxy para administrar fácilmente la configuración de Dev Proxy.

Adición de un informador

El ApiCenterOnboardingPlugin genera un informe de las API que usa la aplicación. Para ver este informe, agregue un informador al archivo de configuración de Dev Proxy. Dev Proxy ofrece varios informadores. En este ejemplo, usará el informador de texto sin formato.

Actualice el archivo devproxyrc.json con una referencia al informador de texto sin formato:

{
  "$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
  }
}

Comprobación de si la aplicación usa API ocultas

Para comprobar si la aplicación usa API ocultas, conéctese a su suscripción de Azure, ejecute Dev Proxy y deje que intercepte las solicitudes de API de la aplicación. Después, Dev Proxy compara la información sobre las solicitudes de API con la información del Centro de API de Azure e informa sobre las API que no están registradas en el Centro de API.

Conexión a su suscripción de Azure

Dev Proxy usa información del Centro de API de Azure para determinar si la aplicación usa las API ocultas. Para obtener esta información, necesita una conexión a la suscripción de Azure. Puede conectarse a la suscripción de Azure de varias maneras.

Ejecución de Dev Proxy

Después de conectarse a la suscripción de Azure, inicie Dev Proxy. Si inicia Dev Proxy desde la misma carpeta donde se encuentra el archivo devproxyrc.json, se carga automáticamente la configuración. De lo contrario, especifique la ruta de acceso al archivo de configuración mediante la opción --config-file.

Cuando se inicia Dev Proxy, comprueba que puede conectarse a la suscripción de Azure. Cuando la conexión se realiza correctamente, verá un mensaje similar al siguiente:

 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

Presione r para iniciar la grabación de solicitudes de API desde la aplicación.

Uso de la aplicación

Use la aplicación como lo haría normalmente. Dev Proxy intercepta las solicitudes de API y almacena información sobre ellas en la memoria. En la línea de comandos donde se ejecuta Dev Proxy, debería ver información sobre las solicitudes de API que realiza la aplicación.

 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

Comprobación de las API ocultas

Detenga la grabación presionando s. Dev Proxy se conecta a la instancia del Centro de API y compara la información sobre las solicitudes con la información del Centro de API.

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

Cuando Dev Proxy finaliza su análisis, crea un informe en un archivo denominado ApiCenterOnboardingPlugin_PlainTextReporter.txt con el siguiente contenido:

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

Incorporación automática de las API ocultas

El ApiCenterOnboardingPlugin no solo puede detectar API ocultas, sino también incorporarlas automáticamente al Centro de API. Para incorporar automáticamente las API ocultas, en el archivo de configuración de Dev Proxy, actualice el createApicEntryForNewApis a 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
  }
}

Al ejecutar Dev Proxy con el createApicEntryForNewApis establecido en true, crea automáticamente nuevas entradas de API en el Centro de API de Azure para las API ocultas que detecta.

Recorte de pantalla del Centro de API que muestra una API recién incorporada.

Incorporación automática de las API ocultas con la especificación de OpenAPI

Al elegir incorporar automáticamente las API ocultas al Centro de API, puede hacer que Dev Proxy genere la especificación de OpenAPI para la API. La incorporación de API con especificaciones de OpenAPI acelera la incorporación de puntos de conexión que faltan y proporciona la información necesaria sobre la API. Cuando el ApiCenterOnboardingPlugin detecta que Dev Proxy ha creado una nueva especificación de OpenAPI, la asocia a la API correspondiente en el Centro de API.

Para generar automáticamente especificaciones de OpenAPI para las API incorporadas, actualice la configuración de Dev Proxy para incluir el 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
  }
}

Importante

Dev Proxy ejecuta complementos en el orden en que se registran en la configuración. Primero debe registrar el OpenApiSpecGeneratorPlugin para que pueda crear especificaciones de OpenAPI antes de que el ApiCenterOnboardingPlugin incorpore nuevas API.

Al ejecutar Dev Proxy con esta configuración, crea automáticamente nuevas entradas de API en el Centro de API de Azure para las API ocultas que detecta. Para cada nueva API, Dev Proxy genera una especificación de OpenAPI y la asocia a la API incorporada correspondiente en el Centro de API.

 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

Recorte de pantalla del Centro de API de Azure que muestra una API recién incorporada con una especificación de OpenAPI.

Resumen

Con Dev Proxy y su ApiCenterOnboardingPlugin, puede comprobar si la aplicación usa las API ocultas. El complemento analiza las solicitudes de API de la aplicación e informa sobre las solicitudes de API que no están registradas en el Centro de API de Azure. El complemento le permite incorporar fácilmente las API que faltan al Centro de API. Al combinar el complemento ApiCenterOnboardingPlugin con el OpenApiSpecGeneratorPlugin, puede generar automáticamente especificaciones de OpenAPI para las API recién incorporadas. Puede ejecutar esta comprobación manualmente o integrarla con la canalización de CI/CD para asegurarse de que la aplicación usa las API registradas antes de publicarla en producción.

Información adicional