# Az - API Management {{#include ../../../banners/hacktricks-training.md}} ## Informações Básicas Azure API Management (APIM) é um serviço totalmente gerenciado que oferece uma **plataforma unificada para publicar, proteger, transformar, gerenciar e monitorar APIs**. Ele permite que as organizações **centralizem sua estratégia de API** e garantam governança, desempenho e segurança consistentes em todos os seus serviços. Ao atuar como uma camada de abstração entre os serviços de backend e os consumidores de API, o APIM simplifica a integração e aumenta a manutenibilidade enquanto fornece capacidades operacionais e de segurança essenciais. ## Conceitos Principais **O API Gateway** serve como o ponto de entrada único para todo o tráfego de API, realizando funções como roteamento de requisições para serviços de backend, aplicação de limites de taxa, cache de respostas e gerenciamento de autenticação e autorização. Esse gateway é totalmente hospedado e gerenciado pela Azure, garantindo alta disponibilidade e escalabilidade. **O Developer Portal** fornece um ambiente de autoatendimento onde os consumidores de API podem descobrir APIs disponíveis, ler documentação e testar endpoints. Ele ajuda a agilizar a integração ao oferecer ferramentas interativas e acesso às informações de assinatura. **O Management Portal (Management Plane)** é usado por administradores para configurar e manter o serviço APIM. A partir daqui, os usuários podem definir APIs e operações, configurar controle de acesso, aplicar políticas, gerenciar usuários e organizar APIs em produtos. Este portal centraliza a administração e garante governança consistente das APIs. ## Autenticação e Autorização Azure API Management suporta vários **mecanismos de autenticação** para proteger o acesso às APIs. Estes incluem **chaves de assinatura**, **tokens OAuth 2.0** e **certificados de cliente**. O APIM também integra-se nativamente com **Microsoft Entra ID**, permitindo **gerenciamento de identidades em nível empresarial** e **acesso seguro** tanto às APIs quanto aos serviços de backend. ## Políticas As políticas no APIM permitem que administradores personalizem o **processamento de requisições e respostas** em vários níveis de granularidade, incluindo o nível de **serviço**, **API**, **operação** ou **produto**. Através de políticas, é possível aplicar **validação de tokens JWT**, **transformar payloads XML ou JSON**, **aplicar limitação de taxa**, **restrição de chamadas por endereço IP** ou **autenticar contra serviços de backend usando identidades gerenciadas**. As políticas são **altamente flexíveis** e constituem uma das **principais forças** da plataforma API Management, possibilitando **controle granular sobre o comportamento em tempo de execução** sem modificar o código do backend. ## Named Values O serviço fornece um mecanismo chamado **Named Values**, que permite armazenar **informações de configuração** como **segredos**, **chaves de API** ou outros valores necessários para as políticas. Esses valores podem ser armazenados diretamente no APIM ou referenciados com segurança a partir do **Azure Key Vault**. Named Values promovem **gerenciamento seguro e centralizado** dos dados de configuração e simplificam a criação de políticas ao permitir **referências reutilizáveis** em vez de valores codificados diretamente. ## Integração de Rede e Segurança Azure API Management integra-se perfeitamente com **ambientes de rede virtual**, possibilitando **conectividade privada e segura** a sistemas de backend. Quando implantado dentro de uma **Virtual Network (VNet)**, o APIM pode acessar **serviços internos** sem expô-los publicamente. O serviço também permite a configuração de **certificados personalizados** para suportar **autenticação mTLS (mutual TLS)** com serviços de backend, melhorando a segurança em cenários onde **validação forte de identidade** é necessária. Essas **funcionalidades de rede** tornam o APIM adequado tanto para arquiteturas **cloud-native** quanto **híbridas**. ### Enumerar Para enumerar o serviço API Management: ```bash # Lists all Named Values configured in the Azure API Management instance az apim nv list --resource-group --service-name # Retrieves all policies applied at the API level in raw XML format az rest --method GET \ --uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.ApiManagement/service//apis//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//resourceGroups//providers/Microsoft.ApiManagement/service//apis//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//resourceGroups//providers/Microsoft.ApiManagement/service/?api-version=2024-05-01" # Lists all backend services registered in the APIM instance az rest --method GET \ --uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.ApiManagement/service//backends?api-version=2024-05-01" # Retrieves details of a specific backend service az rest --method GET \ --uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.ApiManagement/service//backends/?api-version=2024-05-01" # Gets general information about the APIM service az rest --method GET \ --uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.ApiManagement/service/?api-version=2024-05-01" # Calls an exposed API endpoint through the APIM gateway curl https://.azure-api.net/ ``` {{#include ../../../banners/hacktricks-training.md}}