Az - API Management

Tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

Informations de base

Azure API Management (APIM) est un service entièrement managé qui propose une plateforme unifiée pour publier, sécuriser, transformer, gérer et surveiller les API. Il permet aux organisations de centraliser leur stratégie d’API et d’assurer une gouvernance, des performances et une sécurité cohérentes pour l’ensemble de leurs services. En servant de couche d’abstraction entre les services backend et les consommateurs d’API, APIM simplifie l’intégration et améliore la maintenabilité tout en fournissant des capacités opérationnelles et de sécurité essentielles.

Concepts clés

The API Gateway sert de point d’entrée unique pour tout le trafic API, gérant des fonctions telles que le routage des requêtes vers les services backend, l’application de limites de débit, la mise en cache des réponses, et la gestion de l’authentification et de l’autorisation. Cette passerelle est entièrement hébergée et gérée par Azure, garantissant haute disponibilité et scalabilité.

The Developer Portal fournit un environnement en libre-service où les consommateurs d’API peuvent découvrir les API disponibles, lire la documentation et tester les endpoints. Il facilite l’onboarding en proposant des outils interactifs et l’accès aux informations de subscription.

The Management Portal (Management Plane) est utilisé par les administrateurs pour configurer et maintenir le service APIM. Depuis cet endroit, les utilisateurs peuvent définir des APIs et des opérations, configurer le contrôle d’accès, appliquer des politiques, gérer les utilisateurs et organiser les APIs en produits. Ce portail centralise l’administration et garantit une gouvernance cohérente des API.

Authentification et autorisation

Azure API Management supporte plusieurs mécanismes d’authentification pour sécuriser l’accès aux API. Ceux-ci incluent les clés d’abonnement, les OAuth 2.0 tokens et les certificats client. APIM s’intègre également nativement avec Microsoft Entra ID, permettant la gestion des identités au niveau entreprise et un accès sécurisé aux API et aux services backend.

Politiques

Les politiques dans APIM permettent aux administrateurs de personnaliser le traitement des requêtes et des réponses à différents niveaux de granularité, y compris le service, l’API, l’opération ou le produit. Grâce aux politiques, il est possible d’appliquer la validation de JWT, de transformer des payloads XML ou JSON, d’appliquer des limites de débit, de restreindre les appels par adresse IP, ou de s’authentifier auprès des services backend en utilisant des identités gérées. Les politiques sont très flexibles et constituent l’une des forces principales de la plateforme API Management, permettant un contrôle fin du comportement au runtime sans modifier le code backend.

Named Values

Le service propose un mécanisme appelé Named Values, qui permet de stocker des informations de configuration telles que des secrets, des API keys, ou d’autres valeurs requises par les politiques.

Ces valeurs peuvent être stockées directement dans APIM ou référencées de manière sécurisée depuis Azure Key Vault. Named Values favorisent une gestion centralisée et sécurisée des données de configuration et simplifient la rédaction des politiques en autorisant des références réutilisables plutôt que des valeurs codées en dur.

Intégration réseau et sécurité

Azure API Management s’intègre parfaitement aux environnements Virtual Network (VNet), permettant une connectivité privée et sécurisée vers les systèmes backend.

Lorsqu’il est déployé à l’intérieur d’un Virtual Network (VNet), APIM peut accéder aux services internes sans les exposer publiquement. Le service permet également la configuration de certificats personnalisés pour prendre en charge mutual TLS authentication avec les services backend, renforçant la sécurité dans les scénarios nécessitant une validation d’identité forte.

Ces fonctionnalités réseau rendent APIM adapté aux architectures cloud-native et hybrides.

Énumérer

Pour énumérer le service API Management :

# Lists all Named Values configured in the Azure API Management instance
az apim nv list --resource-group <resource-group> --service-name <service-name>

# Retrieves all policies applied at the API level in raw XML format
az rest --method GET \
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<service-name>/apis/<api-id>/policies/?api-version=2024-05-01&format=rawxml"

# Retrieves the effective policy for a specific API in raw XML format
az rest --method GET \
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<service-name>/apis/<api-id>/policies/policy?api-version=2024-05-01&format=rawxml"

# Gets the configuration details of the APIM service instance
az rest --method GET \
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<apim>?api-version=2024-05-01"

# Lists all backend services registered in the APIM instance
az rest --method GET \
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<service-name>/backends?api-version=2024-05-01"

# Retrieves details of a specific backend service
az rest --method GET \
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<service-name>/backends/<backend-id>?api-version=2024-05-01"

# Gets general information about the APIM service
az rest --method GET \
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ApiManagement/service/<service-name>?api-version=2024-05-01"

# Calls an exposed API endpoint through the APIM gateway
curl https://<apim>.azure-api.net/<api-path>

Tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks