Compartir a través de


Cómo comprobar si mi aplicación llama a las API con permisos mínimos

Al compilar la aplicación, es probable que se integre con varias API y operaciones. Para asegurarse de que la aplicación es segura y sigue el principio de privilegios mínimos, debe comprobar si la aplicación llama a las API con permisos mínimos. Mediante el uso de permisos mínimos, se reduce el riesgo de acceso no autorizado a los datos y recursos.

Lo que es difícil al comprobar si la aplicación llama a las API con permisos mínimos es que cada vez que integre una nueva operación, debe evaluar el conjunto de permisos que usa en la aplicación. El seguimiento manual de todas las operaciones y permisos es lento y propenso a errores. Con el proxy de desarrollo y el Centro de API de Azure puede automatizar la comprobación de si la aplicación llama a las API con permisos mínimos.

Para comprobar si la aplicación llama a las API con permisos mínimos, puede usar el ApiCenterMinimalPermissionsPlugin complemento. Este complemento compara los permisos que usa la aplicación con los permisos definidos en el Centro de API de Azure e informa sobre los permisos excesivos. También recomienda el conjunto mínimo de permisos que debe usar.

Captura de pantalla de un símbolo del sistema que muestra la comprobación del proxy de desarrollo si las solicitudes de API grabadas usan tokens mínimos de permisos de API.

Antes de comenzar

Para comprobar si la aplicación llama a las API con permisos mínimos, debe tener una instancia de Azure API Center con información sobre las API que usa en su organización.

Sugerencia

Descargue el valor preestablecido de este artículo ejecutando en el símbolo del sistema devproxy preset get demo-apicenter-minimalpermissions.

Creación de una instancia del Centro de API de Azure

Antes de empezar, cree una instancia del Centro de API de Azure y registre las API que use en su organización. Para cada API, cargue el archivo de especificación OpenAPI que describe las operaciones y permisos de API.

Captura de pantalla del Centro de API de Azure con una API y su especificación de OpenAPI con información de seguridad.

ApiCenterMinimalPermissionsPlugin Usa esta información para comprobar si la aplicación llama a las API mediante permisos mínimos.

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 ApiCenterMinimalPermissionsPlugin 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 llama a las API con permisos mínimos, debe habilitar el ApiCenterMinimalPermissionsPlugin en el archivo de configuración del proxy de desarrollo. Para crear un informe de permisos que usa la aplicación, agregue un periodista.

Habilitación del ApiCenterMinimalPermissionsPlugin

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": "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"
  }
}

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 ApiCenterMinimalPermissionsPlugin genera un informe de las API que usa la aplicación y los permisos mínimos necesarios para llamarlas. 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": "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"
  }
}

Compruebe si la aplicación llama a las API mediante permisos mínimos

Para comprobar si la aplicación llama a las API con permisos mínimos, debe conectarse a su suscripción de Azure, ejecutar proxy de desarrollo y permitir que intercepte las solicitudes de API de la aplicación. Después, el proxy de desarrollo compara la información sobre las solicitudes de API con la información del Centro de API de Azure e informa sobre los permisos mínimos.

Conexión a su suscripción de Azure

El proxy de desarrollo usa información del Centro de API de Azure para determinar si la aplicación llama a las API mediante permisos mínimos. 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 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

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. En este tutorial, puede usar la siguiente solicitud con un token de acceso simulado con customer.readwrite permiso:

@readwriteToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJzY3AiOlsiY3VzdG9tZXIucmVhZHdyaXRlIl19.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

GET https://api.northwind.com/customers/ALFKI
Authorization: Bearer {{readwriteToken}}

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

Compruebe los permisos.

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

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

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.

Resumen

Con el ApiCenterMinimalPermissionsPlugin, puede comprobar si la aplicación llama a las API mediante permisos mínimos. El complemento compara la información sobre las solicitudes de API de la aplicación con información del Centro de API de Azure e informa sobre permisos excesivos. También recomienda los permisos mínimos necesarios para llamar a las API que usa en la aplicación. Comprobar que la aplicación llama a las API con permisos mínimos, le ayuda a proteger la aplicación. Puede ejecutar esta comprobación manualmente o integrarla con la canalización de CI/CD para asegurarse de que la aplicación llama a las API mediante permisos mínimos antes de publicarla en producción.

Más información