Az - API Management

Tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

Basic Information

Azure API Management (APIM) は、API の公開、保護、変換、管理、監視のための 統合プラットフォームを提供するフルマネージドサービス です。組織が API 戦略を一元化 し、すべてのサービスで一貫したガバナンス、パフォーマンス、セキュリティを確保できるようにします。APIM はバックエンドサービスと API 消費者の間に抽象化レイヤーとして機能することで、統合を簡素化し、保守性を向上させながら、重要な運用およびセキュリティ機能を提供します。

Core Concepts

The API Gateway はすべての API トラフィックの単一エントリポイントとして機能し、バックエンドサービスへのリクエストのルーティング、レート制限の適用、レスポンスのキャッシュ、認証および認可の管理などの機能を処理します。このゲートウェイは Azure によってフルホストおよび管理され、高可用性とスケーラビリティを保証します。

The Developer Portal は API 消費者が利用可能な API を発見し、ドキュメントを読み、エンドポイントをテストできるセルフサービス環境を提供します。インタラクティブなツールやサブスクリプション情報へのアクセスを提供することで、オンボーディングを効率化します。

The Management Portal (Management Plane) は管理者が APIM サービスを構成および維持するために使用します。ここからユーザーは API やオペレーションを定義し、アクセス制御を構成し、ポリシーを適用し、ユーザーを管理し、API を製品(products)に整理できます。このポータルは管理を一元化し、一貫した API ガバナンスを確保します。

Authentication and Authorization

Azure API Management は API アクセスを保護するためのいくつかの authentication mechanisms をサポートします。これには subscription keysOAuth 2.0 tokens、および client certificates が含まれます。APIM は Microsoft Entra ID とネイティブに統合されており、エンタープライズレベルのアイデンティティ管理 と API およびバックエンドサービスへの 安全なアクセス を可能にします。

Policies

APIM のポリシーは、管理者が request and response processing をサービス、API、operation、または product レベルなどさまざまな粒度でカスタマイズできるようにします。ポリシーを通じて、JWT token validation を強制したり、XML や JSON ペイロードを変換したり、レート制限を適用したり、IP アドレスによる呼び出しを制限したり、managed identities を使用してバックエンドサービスに対して認証したりすることが可能です。ポリシーは 非常に柔軟 であり、API Management プラットフォームの コアな強み の一つで、バックエンドコードを変更することなく ランタイム動作を細かく制御 できます。

Named Values

このサービスは Named Values と呼ばれる仕組みを提供しており、secretsAPI keys、またはポリシーで必要とされるその他の値などの 構成情報 を格納できます。

これらの値は APIM 内部に直接格納することも、Azure Key Vault から安全に参照することもできます。Named Values は構成データの 安全で集中化された管理 を促進し、ハードコーディングされた値の代わりに 再利用可能な参照 を許可することでポリシー作成を簡素化します。

Networking and Security Integration

Azure API Management は virtual network environments とシームレスに統合し、バックエンドシステムへの プライベートで安全な接続 を可能にします。

Virtual Network (VNet) 内にデプロイされると、APIM は内部サービスに対してそれらを公開することなくアクセスできます。サービスはまた、バックエンドサービスとの mutual TLS authentication をサポートするための custom certificates の構成を許可しており、強力なアイデンティティ検証 が必要なシナリオでセキュリティを向上させます。

これらの networking features により、APIM は cloud-native および hybrid architectures の両方に適しています。

Enumerate

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

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする