Partager via


Comment vérifier si mon application appelle des API avec des autorisations minimales

Lors de la création de votre application, vous intégrez probablement plusieurs API et opérations. Pour vous assurer que votre application est sécurisée et suit le principe du privilège minimum, vous devez vérifier si votre application appelle les API avec les autorisations minimales. En utilisant les autorisations minimales, vous réduisez le risque d’accès non autorisé à vos données et ressources.

Il est difficile de vérifier si votre application appelle des API avec les autorisations minimales, car à chaque fois que vous intégrez une nouvelle opération, vous devez évaluer le jeu d’autorisations que vous utilisez dans votre application. Le suivi manuel de toutes les opérations et autorisations est chronophage et sujet aux erreurs. En utilisant le proxy de développement et le Centre des API Azure, vous pouvez vérifier automatiquement si votre application appelle les API avec les autorisations minimales.

Pour vérifier si votre application appelle des API à l’aide d’autorisations minimales, vous pouvez utiliser le ApiCenterMinimalPermissionsPlugin plug-in. Ce plug-in compare les autorisations que votre application utilise avec les autorisations définies dans le Centre des API Azure et signale les autorisations excessives. Il recommande également le jeu minimal d’autorisations que vous devez utiliser.

Capture d’écran d’une invite de commandes montrant la vérification du proxy de développement si les demandes d’API enregistrées utilisent des jetons d’autorisations d’API minimales.

Avant de commencer

Pour vérifier si votre application appelle des API à l’aide d’autorisations minimales, vous devez disposer d’une instance du Centre d’API Azure avec des informations sur les API que vous utilisez dans votre organisation.

Conseil

Téléchargez la présélection de cet article explicatif en exécutant l’invite de commandes devproxy preset get demo-apicenter-minimalpermissions.

Créer une instance du Centre des API Azure

Avant de commencer, créez une instance du Centre des API Azure et inscrivez des API que vous utilisez dans votre organisation. Pour chaque API, chargez le fichier de spécification OpenAPI qui décrit les opérations et autorisations de l’API.

Capture d’écran du Centre des API Azure avec une API, et sa spécification OpenAPI avec des informations de sécurité.

L’utilisation ApiCenterMinimalPermissionsPlugin de ces informations permet de vérifier si votre application appelle des API à l’aide d’autorisations minimales.

Copier les informations du Centre API

Dans la page Vue d’ensemble de l’instance du Centre API Azure, copiez le nom de l’instance du Centre API, le nom du groupe de ressources et l’ID d’abonnement. Vous avez besoin de ces informations pour configurer le ApiCenterMinimalPermissionsPlugin afin qu’il puisse se connecter à votre instance Centre des API Azure.

Capture d’écran de la page de vue d’ensemble du Centre API Azure avec plusieurs propriétés mises en surbrillance.

Configurer Dev Proxy

Pour vérifier si votre application appelle les API en utilisant les autorisations minimales, vous devez activer le ApiCenterMinimalPermissionsPlugin dans le fichier de configuration du proxy de développement. Pour créer un rapport sur les autorisations utilisées par votre application, ajoutez un reporter.

Activer le ApiCenterMinimalPermissionsPlugin

Dans le fichier devproxyrc.json, ajoutez la configuration suivante :

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

Dans les propriétés subscriptionId, resourceGroupName et serviceName, fournissez les informations relatives à votre instance du Centre API Azure.

Dans la propriété urlsToWatch, spécifiez les URL que votre application utilise.

Conseil

Utilisez l’extension Visual Studio Code Dev Proxy Toolkit pour gérer facilement la configuration Dev Proxy.

Ajouter un rapporteur

Le ApiCenterMinimalPermissionsPlugin produit un rapport des API que votre application utilise et les autorisations minimales requises pour les appeler. Pour afficher ce rapport, ajoutez un rapporteur à votre fichier de configuration Dev Proxy. Dev Proxy propose plusieurs rapporteurs. Dans cet exemple, vous utilisez le rapporteur en texte brut.

Mettez à jour votre fichier devproxyrc.json avec une référence au rapporteur en texte brut :

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

Vérifier si votre application appelle les API en utilisant les autorisations minimales

Pour vérifier si votre application appelle les API en utilisant les autorisations minimales, vous devez vous connecter à votre abonnement Azure, exécuter le proxy de développement et le laisser intercepter les requêtes d’API provenant de votre application. Le proxy de développement compare ensuite les informations sur les requêtes d’API avec les informations du Centre des API Azure et produit un rapport sur les autorisations minimales.

Connectez-vous à un abonnement Azure

Le proxy de développement utilise les informations du Centre Des API Azure pour déterminer si votre application appelle les API en utilisant les autorisations minimales. Pour obtenir ces informations, il a besoin d’une connexion à votre abonnement Azure. Vous pouvez vous connecter à votre abonnement Azure de plusieurs façons.

Exécuter Dev Proxy

Après vous être connecté à votre abonnement Azure, démarrez Dev Proxy. Si vous démarrez Dev Proxy à partir du dossier où se trouve votre fichier devproxyrc.json, il charge automatiquement la configuration. Sinon, spécifiez le chemin d’accès au fichier de configuration à l’aide de l’option --config-file.

Lors de son démarrage, Dev Proxy vérifie qu’il peut se connecter à votre abonnement Azure. Une fois la connexion établie, un message similaire à celui-ci s’affiche :

 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

Appuyez sur r pour démarrer l’enregistrement des requêtes d’API provenant de votre application.

Utiliser votre application

Utilisez votre application comme vous le feriez normalement. Dans ce tutoriel, vous pouvez utiliser la requête suivante avec un jeton d’accès simulé avec l’autorisation customer.readwrite:

@readwriteToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJzY3AiOlsiY3VzdG9tZXIucmVhZHdyaXRlIl19.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

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

Dev Proxy intercepte les requêtes d’API et stocke les informations sur celles-ci en mémoire. Sur la ligne de commande où Dev Proxy s’exécute, vous devez voir des informations sur les requêtes d’API effectuées par votre application.

 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}

Vérifiez les autorisations

Arrêtez l’enregistrement en appuyant sur s. Dev Proxy se connecte à l’instance du Centre API, et compare les informations sur les requêtes aux informations contenues dans le Centre 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

Lorsque Dev Proxy termine son analyse, il crée un rapport dans un fichier nommé ApiCenterMinimalPermissionsPlugin_PlainTextReporter.txt avec le contenu suivant :

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.

Résumé

En utilisant le ApiCenterMinimalPermissionsPlugin, vous pouvez vérifier si votre application appelle les API en utilisant les autorisations minimales. Le plug-in compare les informations sur les requêtes d’API de votre application avec les informations du Centre des API Azure et produit un rapport sur les autorisations excessives. Il recommande également les autorisations minimales nécessaires pour appeler les API que vous utilisez dans votre application. Vérifier que votre application appelle les API en utilisant les autorisations minimales permet de rendre votre application plus sécurisée. Vous pouvez exécuter cette vérification manuellement, ou l’intégrer à votre pipeline CI/CD pour vous assurer que votre application appelle les API en utilisant les autorisations minimales avant de la passer en production.

Plus d’informations