6.1 KiB
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:
# 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}}