6.2 KiB
Az - API Management
{{#include ../../../banners/hacktricks-training.md}}
Grundlegende Informationen
Azure API Management (APIM) ist ein vollständig verwalteter Service, der eine einheitliche Plattform zum Veröffentlichen, Schützen, Transformieren, Verwalten und Überwachen von APIs bietet. Er ermöglicht Organisationen, ihre API-Strategie zu zentralisieren und eine konsistente Governance, Performance und Sicherheit über alle Dienste hinweg sicherzustellen. Indem APIM als Abstraktionsschicht zwischen Backend-Diensten und API-Konsumenten fungiert, vereinfacht es die Integration und erhöht die Wartbarkeit, während essentielle betriebliche und sicherheitsrelevante Funktionalitäten bereitgestellt werden.
Kernkonzepte
Das API-Gateway dient als einziger Einstiegspunkt für den gesamten API-Verkehr und übernimmt Aufgaben wie das Routings von Anfragen an Backend-Dienste, Durchsetzung von Rate Limits, Caching von Antworten sowie Verwaltung von Authentifizierung und Autorisierung. Dieses Gateway wird vollständig von Azure gehostet und verwaltet, wodurch hohe Verfügbarkeit und Skalierbarkeit gewährleistet sind.
Das Developer-Portal bietet eine Self-Service-Umgebung, in der API-Konsumenten verfügbare APIs entdecken, Dokumentation lesen und Endpunkte testen können. Es erleichtert das Onboarding durch interaktive Werkzeuge und Zugriff auf Abonnementinformationen.
Das Management-Portal (Management Plane) wird von Administratoren zur Konfiguration und Wartung des APIM-Services genutzt. Von hier aus können Benutzer APIs und Operationen definieren, Zugriffskontrollen konfigurieren, Policies anwenden, Benutzer verwalten und APIs in Produkte organisieren. Dieses Portal zentralisiert die Administration und stellt eine konsistente API-Governance sicher.
Authentifizierung und Autorisierung
Azure API Management unterstützt mehrere Authentifizierungsmechanismen, um den API-Zugriff zu sichern. Dazu gehören subscription keys, OAuth 2.0 tokens und client certificates. APIM integriert sich außerdem nativ mit Microsoft Entra ID, was enterprise-level identity management und sicheren Zugriff sowohl auf APIs als auch auf Backend-Dienste ermöglicht.
Policies
Policies in APIM erlauben Administratoren, die Verarbeitung von Requests und Responses in verschiedenen Granularitäten anzupassen, einschließlich auf Service-, API-, Operation- oder Produkt-Ebene. Über Policies können z. B. JWT token validation durchgesetzt, XML- oder JSON-Payloads transformiert, Rate Limiting angewendet, Aufrufe nach IP-Adresse eingeschränkt oder Authentifizierung gegenüber Backend-Diensten unter Verwendung von managed identities durchgeführt werden. Policies sind sehr flexibel und stellen eine der Kernstärken der API Management-Plattform dar, da sie eine feingranulare Kontrolle über das Laufzeitverhalten ermöglichen, ohne Backend-Code zu ändern.
Named Values
Der Service stellt einen Mechanismus namens Named Values zur Verfügung, mit dem Konfigurationsinformationen wie Secrets, API keys oder andere für Policies benötigte Werte gespeichert werden können.
Diese Werte können direkt in APIM gespeichert oder sicher aus Azure Key Vault referenziert werden. Named Values fördern eine sichere und zentrale Verwaltung von Konfigurationsdaten und vereinfachen das Erstellen von Policies, indem wiederverwendbare Referenzen anstelle von hartcodierten Werten verwendet werden.
Netzwerk- und Sicherheitsintegration
Azure API Management integriert sich nahtlos in virtuelle Netzwerkumgebungen und ermöglicht private und sichere Konnektivität zu Backend-Systemen.
Wenn APIM innerhalb eines Virtual Network (VNet) bereitgestellt wird, kann es auf interne Dienste zugreifen, ohne diese öffentlich exponieren zu müssen. Der Service erlaubt außerdem die Konfiguration kundenspezifischer Zertifikate, um gegenseitige TLS-Authentifizierung mit Backend-Diensten zu unterstützen, was die Sicherheit in Szenarien erhöht, in denen eine starke Identitätsprüfung erforderlich ist.
Diese Netzwerkfunktionen machen APIM sowohl für cloud-native als auch für hybride Architekturen geeignet.
Auflisten
Um den API-Management-Dienst aufzulisten:
# 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>
{{#include ../../../banners/hacktricks-training.md}}