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