Como integrar o Gerenciamento de API em uma rede virtual interna com o gateway de aplicativo

É possível configurar o Gerenciamento de API do Azure uma rede virtual no modo interno, que o torna acessível apenas dentro da rede virtual. Gateway de Aplicativo do Azure é uma PaaS (plataforma como serviço) que atua como um balanceador de carga de Camada 7. Ele atua como um serviço de proxy reverso e fornece entre suas ofertas o WAF (Firewall de Aplicativo Web do Azure).

Ao combinar o Gerenciamento de API provisionado em uma rede virtual interna com o front-end do gateway de aplicativo, você pode:

  • Usar o mesmo recurso de Gerenciamento de API para consumo por clientes internos e externos.
  • Usar um único recurso de Gerenciamento de API e ter uma sub-rede de APIs definida no Gerenciamento de API disponível para consumidores externos.
  • Fornecer uma maneira rápida de ativar e desativar o acesso ao Gerenciamento de API da Internet pública.

Observação

Este artigo foi atualizado para usar o gateway de aplicativo WAF_V2 SKU.

Disponibilidade

Importante

Este recurso está disponível nas camadas Premium e Developer do Gerenciamento de API.

Pré-requisitos

Observação

Este artigo usa o módulo do PowerShell Azure Az, que é o módulo do PowerShell recomendado para interagir com o Azure. Para começar a usar o módulo do Az PowerShell, confira Instalar o Azure PowerShell. Para saber como migrar para o módulo Az PowerShell, confira Migrar o Azure PowerShell do AzureRM para o Az.

Para seguir as etapas descritas neste artigo, você precisa ter:

Cenário

Neste artigo você aprenderá como usar um único instância do Gerenciamento de API para consumidores internos e externos e como fazê-lo atuar como um único front-end para as APIs locais e na nuvem. Você também entenderá como expor apenas um subconjunto de suas APIs para consumo externo usando a funcionalidade de roteamento disponível no Gateway de Aplicativo. No exemplo, as APIs são realçadas em verde.

No primeiro exemplo de instalação, todas as suas APIs são gerenciadas somente de dentro da sua rede virtual. Os consumidores internos podem acessar todas as suas APIs internas e externas. O tráfego nunca é exposto à Internet. A conectividade de alto desempenho pode ser fornecida por meio de circuitos de Azure ExpressRoute. No exemplo, os consumidores internos são realçadas em laranja.

Diagram that shows the URL route.

O que é necessário para integrar o Gerenciamento de API e o Gateway de Aplicativo?

  • Pool de servidor de back-end: esse pool de servidores é o endereço IP virtual interno do Gerenciamento de API.
  • Configurações do pool de servidores back-end: cada pool tem configurações como porta, protocolo e afinidade baseada em cookie. Essas configurações são aplicadas a todos os servidores no pool.
  • Porta front-end: essa porta pública é aberta no gateway de aplicativo. O tráfego que o atinge é redirecionado para um dos servidores de back-end.
  • Ouvinte: o ouvinte tem uma porta front-end, um protocolo (Http ou Https, com diferenciação de maiúsculas de minúsculas) e o nome do certificado TLS/SSL (ao configurar o descarregamento de TSL).
  • Regra: a regra vincula um ouvinte para um pool de servidor de back-end.
  • Investigação de integridade personalizada: o Gateway de Aplicativo, por padrão, usa investigações baseadas em endereço IP para entender quais servidores no BackendAddressPool estão ativos. O Gerenciamento de API responde apenas às solicitações que têm o cabeçalho de host correto, portanto, as investigações padrão falham. Você define uma investigação de integridade personalizada para ajudar o gateway de aplicativo a determinar que o serviço está ativo e deve encaminhar as solicitações.
  • Certificado de domínio personalizado: para acessar o Gerenciamento de API da Internet, crie um mapeamento do nome do host de CNAME para o nome DNS de front-end do Gateway de Aplicativo. Esse mapeamento garante que o certificado e o cabeçalho do nome do host enviados ao Gateway de Aplicativo e encaminhados ao Gerenciamento de API sejam aqueles que o Gerenciamento de API reconheça e valide. Neste exemplo, vamos usar três certificados. Eles são para o Gateway de Gerenciamento de API (o back-end), o portal do desenvolvedor e o ponto de extremidade de gerenciamento.

Expor o portal do desenvolvedor e o ponto de extremidade de gerenciamento externamente por meio do gateway de aplicativo

Neste artigo, também expomos o portal do desenvolvedor e o ponto de extremidade de gerenciamento ao público externo por meio do gateway de aplicativo. Etapas adicionais são necessárias para criar um ouvinte, uma investigação, configurações e regras para cada ponto de extremidade. Todos os detalhes são fornecidos em suas respectivas etapas.

Se você usa o Azure Active Directory ou autenticação de terceiros, habilite o recurso afinidade de sessão baseada em cookie no Gateway de Aplicativo.

Aviso

Para impedir que o WAF do Gateway de Aplicativo interrompa o download das especificações do OpenAPI no portal do desenvolvedor, desabilite a regra de firewall 942200 - "Detects MySQL comment-/space-obfuscated injections and backtick termination".

As regras do WAF do Gateway de Aplicativo capazes de interromper a funcionalidade do portal incluem:

  • 920300, 920330, 931130, 942100, 942110, 942180, 942200, 942260, 942340, 942370 para o modo administrativo
  • 942200, 942260, 942370, 942430, 942440 para o portal publicado

Criar um grupo de recursos para o Gerenciador de Recursos

Para criar um grupo de recursos para o Azure Resource Manager:

  1. Entre no Azure.

    Connect-AzAccount
    
  2. Como autenticar com suas credenciais.

  3. Selecione a assinatura que você deseja.

    $subscriptionId = "00000000-0000-0000-0000-000000000000" # GUID of your Azure subscription
    Get-AzSubscription -Subscriptionid $subscriptionId | Select-AzSubscription
    
  4. Crie um grupos de recursos. Você poderá ignorar esta etapa se estiver usando um grupo de recursos existente.

    $resGroupName = "apim-appGw-RG" # resource group name
    $location = "West US"           # Azure region
    New-AzResourceGroup -Name $resGroupName -Location $location
    

O Resource Manager requer que todos os grupos de recursos especifiquem um local. Esse local é usado como o padrão para os recursos do grupo de recursos em questão. Verifique se todos os comandos para criar um Gateway de Aplicativo usam o mesmo grupo de recursos.

Criar uma rede virtual e uma sub-rede para o gateway de aplicativo

O exemplo a seguir mostra como criar uma rede virtual usando o Gerenciador de Recursos. A rede virtual neste exemplo consiste em sub-redes separadas para o Gerenciamento de API e gateway de aplicativo.

  1. Crie grupos de segurança de rede (NSGs) e regras de NSG para as sub-redes de Gerenciamento de API e do Gateway de Aplicativo.

    $appGwRule1 = New-AzNetworkSecurityRuleConfig -Name appgw-in -Description "AppGw inbound" `
        -Access Allow -Protocol * -Direction Inbound -Priority 100 -SourceAddressPrefix `
        GatewayManager -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 65200-65535
    $appGwRule2 = New-AzNetworkSecurityRuleConfig -Name appgw-in-internet -Description "AppGw inbound Internet" `
        -Access Allow -Protocol "TCP" -Direction Inbound -Priority 110 -SourceAddressPrefix `
        Internet -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 443
    $appGwNsg = New-AzNetworkSecurityGroup -ResourceGroupName $resGroupName -Location $location -Name `
        "NSG-APPGW" -SecurityRules $appGwRule1, $appGwRule2
    
    $apimRule1 = New-AzNetworkSecurityRuleConfig -Name apim-in -Description "APIM inbound" `
        -Access Allow -Protocol Tcp -Direction Inbound -Priority 100 -SourceAddressPrefix `
        ApiManagement -SourcePortRange * -DestinationAddressPrefix VirtualNetwork -DestinationPortRange 3443
    $apimNsg = New-AzNetworkSecurityGroup -ResourceGroupName $resGroupName -Location $location -Name `
        "NSG-APIM" -SecurityRules $apimRule1
    
  2. Ao criar uma rede virtual, atribua o intervalo de endereço 10.0.0.0/24 à variável de sub-rede a ser usada para o Gateway de Aplicativo.

    $appGatewaySubnet = New-AzVirtualNetworkSubnetConfig -Name "appGatewaySubnet" -NetworkSecurityGroup $appGwNsg -AddressPrefix "10.0.0.0/24"
    
  3. Ao criar uma rede virtual, atribua o intervalo de endereço 10.0.1.0/24 à variável de sub-rede a ser usada para o Gerenciamento de API.

    $apimSubnet = New-AzVirtualNetworkSubnetConfig -Name "apimSubnet" -NetworkSecurityGroup $apimNsg -AddressPrefix "10.0.1.0/24"
    
  4. Crie uma rede virtual do Microsoft Azure appgwvnet no grupo de recursos apim-appGw-RG para a região Oeste dos EUA. Use o prefixo 10.0.0.0/16 com as sub-redes 10.0.0.0/24 e 10.0.1.0/24.

    $vnet = New-AzVirtualNetwork -Name "appgwvnet" -ResourceGroupName $resGroupName `
      -Location $location -AddressPrefix "10.0.0.0/16" -Subnet $appGatewaySubnet,$apimSubnet
    
  5. Atribua variáveis de sub-rede para as próximas etapas.

    $appGatewaySubnetData = $vnet.Subnets[0]
    $apimSubnetData = $vnet.Subnets[1]
    

Criar uma instância de Gerenciamento de API dentro de uma rede virtual

O exemplo a seguir mostra como criar uma instância de Gerenciamento de API em uma rede virtual configurada somente para acesso interno.

  1. Crie um objeto de rede virtual de Gerenciamento de API usando a sub-rede $apimSubnetData criada.

    $apimVirtualNetwork = New-AzApiManagementVirtualNetwork -SubnetResourceId $apimSubnetData.Id
    
  2. Crie uma instância de Gerenciamento de API dentro da rede virtual. Este exemplo cria o serviço na camada de serviço do desenvolvedor. Substitua um nome exclusivo para a instância de Gerenciamento de API.

    $apimServiceName = "ContosoApi"       # API Management service instance name, must be globally unique
    $apimOrganization = "Contoso"         # Organization name
    $apimAdminEmail = "admin@contoso.com" # Administrator's email address
    $apimService = New-AzApiManagement -ResourceGroupName $resGroupName -Location $location -Name $apimServiceName -Organization $apimOrganization -AdminEmail $apimAdminEmail -VirtualNetwork $apimVirtualNetwork -VpnType "Internal" -Sku "Developer"
    

A criação e a ativação de uma instância de Gerenciamento de API nessa camada leva de 30 a 40 minutos. Depois que o comando anterior for bem-sucedido, confira a Configuração DNS necessária para acessar o serviço de Gerenciamento de API da rede virtual interna para confirmar o acesso a ele.

Configure nomes de domínio personalizados no Gerenciamento de API

Para configurar nomes de domínio personalizados no Gerenciamento de API:

  1. Inicialize as variáveis a seguir com os detalhes dos certificados e com chaves privadas para os domínios e o certificado raiz confiável. Neste exemplo, usamos a api.contoso.net, portal.contoso.net e management.contoso.net.

    $gatewayHostname = "api.contoso.net"                 # API gateway host
    $portalHostname = "portal.contoso.net"               # API developer portal host
    $managementHostname = "management.contoso.net"               # API management endpoint host
    $gatewayCertPfxPath = "C:\Users\Contoso\gateway.pfx" # Full path to api.contoso.net .pfx file
    $portalCertPfxPath = "C:\Users\Contoso\portal.pfx"   # Full path to portal.contoso.net .pfx file
    $managementCertPfxPath = "C:\Users\Contoso\management.pfx"   # Full path to management.contoso.net .pfx file
    $gatewayCertPfxPassword = "certificatePassword123"   # Password for api.contoso.net pfx certificate
    $portalCertPfxPassword = "certificatePassword123"    # Password for portal.contoso.net pfx certificate
    $managementCertPfxPassword = "certificatePassword123"    # Password for management.contoso.net pfx certificate
    # Path to trusted root CER file used in Application Gateway HTTP settings
    $trustedRootCertCerPath = "C:\Users\Contoso\trustedroot.cer" # Full path to contoso.net trusted root .cer file
    
    $certGatewayPwd = ConvertTo-SecureString -String $gatewayCertPfxPassword -AsPlainText -Force
    $certPortalPwd = ConvertTo-SecureString -String $portalCertPfxPassword -AsPlainText -Force
    $certManagementPwd = ConvertTo-SecureString -String $managementCertPfxPassword -AsPlainText -Force
    
  2. Crie e configure os objetos de configuração do Hostname para os pontos de extremidade de Gerenciamento de API.

    $gatewayHostnameConfig = New-AzApiManagementCustomHostnameConfiguration -Hostname $gatewayHostname `
      -HostnameType Proxy -PfxPath $gatewayCertPfxPath -PfxPassword $certGatewayPwd
    $portalHostnameConfig = New-AzApiManagementCustomHostnameConfiguration -Hostname $portalHostname `
      -HostnameType DeveloperPortal -PfxPath $portalCertPfxPath -PfxPassword $certPortalPwd
    $managementHostnameConfig = New-AzApiManagementCustomHostnameConfiguration -Hostname $managementHostname `
      -HostnameType Management -PfxPath $managementCertPfxPath -PfxPassword $certManagementPwd
    
    $apimService.ProxyCustomHostnameConfiguration = $gatewayHostnameConfig
    $apimService.PortalCustomHostnameConfiguration = $portalHostnameConfig
    $apimService.ManagementCustomHostnameConfiguration = $managementHostnameConfig
    
    Set-AzApiManagement -InputObject $apimService
    

Observação

Para definir a conectividade ao portal do desenvolvedor herdado, substitua -HostnameType DeveloperPortal por -HostnameType Portal.

Configurar uma zona privada para resolução DNS na rede virtual

Para configurar uma zona DNS privada para resolução DNS na rede virtual:

  1. Crie uma zona DNS privada e vincule a rede virtual.

    $myZone = New-AzPrivateDnsZone -Name "contoso.net" -ResourceGroupName $resGroupName 
    $link = New-AzPrivateDnsVirtualNetworkLink -ZoneName contoso.net `
      -ResourceGroupName $resGroupName -Name "mylink" `
      -VirtualNetworkId $vnet.id
    
  2. Crie registros A para os nomes de host de domínio personalizados que mapeiam para o endereço IP privado do Gerenciamento de API.

    $apimIP = $apimService.PrivateIPAddresses[0]
    
    New-AzPrivateDnsRecordSet -Name api -RecordType A -ZoneName contoso.net `
      -ResourceGroupName $resGroupName -Ttl 3600 `
      -PrivateDnsRecords (New-AzPrivateDnsRecordConfig -IPv4Address $apimIP)
    New-AzPrivateDnsRecordSet -Name portal -RecordType A -ZoneName contoso.net `
      -ResourceGroupName $resGroupName -Ttl 3600 `
      -PrivateDnsRecords (New-AzPrivateDnsRecordConfig -IPv4Address $apimIP)
    New-AzPrivateDnsRecordSet -Name management -RecordType A -ZoneName contoso.net `
      -ResourceGroupName $resGroupName -Ttl 3600 `
      -PrivateDnsRecords (New-AzPrivateDnsRecordConfig -IPv4Address $apimIP)
    

Criar um endereço IP público para a configuração de front-end

Criar um recurso IP público Standard publicIP01 no grupo de recursos.

$publicip = New-AzPublicIpAddress -ResourceGroupName $resGroupName `
  -name "publicIP01" -location $location -AllocationMethod Static -Sku Standard

Um endereço IP é atribuído ao gateway de aplicativo quando o serviço é iniciado.

Criar uma configuração do gateway de aplicativo

Todos os itens de configuração devem estar configurados antes de criar o gateway de aplicativo. As etapas a seguir criam os itens de configuração necessários para um recurso de Gateway de Aplicativo.

  1. Crie uma configuração de IP do Gateway de Aplicativo chamada gatewayIP01. Quando o Gateway de Aplicativo é iniciado, ele escolhe um endereço IP na sub-rede configurada e encaminha o tráfego de rede para os endereços IP no pool de IPs de back-end. Tenha em mente que cada instância usa um endereço IP.

    $gipconfig = New-AzApplicationGatewayIPConfiguration -Name "gatewayIP01" -Subnet $appGatewaySubnetData
    
  2. Configure a porta IP front-end para o ponto de extremidade IP público. Essa porta é aquela à qual os usuários se conectam.

    $fp01 = New-AzApplicationGatewayFrontendPort -Name "port01"  -Port 443
    
  3. Configure o IP front-end com um ponto de extremidade IP público.

    $fipconfig01 = New-AzApplicationGatewayFrontendIPConfig -Name "frontend1" -PublicIPAddress $publicip
    
  4. Configure o certificado para o gateway de aplicativo. Eles são usados para descriptografar e criptografar novamente o tráfego que passa.

    Observação

    O gateway de aplicativo dá suporte à definição de opções de TLS personalizada, à desabilitação de determinadas versões de protocolo TLS e à especificação de conjuntos de criptografia e à ordem de preferência. Para saber mais sobre as opções configuráveis de TLS, acesse Visão geral da política de TLS.

    $certGateway = New-AzApplicationGatewaySslCertificate -Name "gatewaycert" `
      -CertificateFile $gatewayCertPfxPath -Password $certGatewayPwd
    $certPortal = New-AzApplicationGatewaySslCertificate -Name "portalcert" `
      -CertificateFile $portalCertPfxPath -Password $certPortalPwd
    $certManagement = New-AzApplicationGatewaySslCertificate -Name "managementcert" `
      -CertificateFile $managementCertPfxPath -Password $certManagementPwd
    
  5. Crie o ouvinte HTTP para o Gateway de Aplicativo. Atribua a eles a configuração de IP, a porta e o certificado TSL/SSL do front-end.

    $gatewayListener = New-AzApplicationGatewayHttpListener -Name "gatewaylistener" `
      -Protocol "Https" -FrontendIPConfiguration $fipconfig01 -FrontendPort $fp01 `
      -SslCertificate $certGateway -HostName $gatewayHostname -RequireServerNameIndication true
    $portalListener = New-AzApplicationGatewayHttpListener -Name "portallistener" `
      -Protocol "Https" -FrontendIPConfiguration $fipconfig01 -FrontendPort $fp01 `
      -SslCertificate $certPortal -HostName $portalHostname -RequireServerNameIndication true
    $managementListener = New-AzApplicationGatewayHttpListener -Name "managementlistener" `
      -Protocol "Https" -FrontendIPConfiguration $fipconfig01 -FrontendPort $fp01 `
      -SslCertificate $certManagement -HostName $managementHostname -RequireServerNameIndication true
    
  6. Crie uma investigação personalizada para o ponto de extremidade de domínio do gateway ContosoApi do Gerenciamento de API. O caminho /status-0123456789abcdef é um ponto de extremidade de integridade padrão hospedado em todas as instâncias do Gerenciamento de API. Defina api.contoso.net como um nome de host de investigação personalizado para protegê-lo com o certificado TSL/SSL.

    Observação

    O nome do host contosoapi.azure-api.net é o nome do host do proxy padrão configurado quando um serviço contosoapi é criado no Azure público.

    $apimGatewayProbe = New-AzApplicationGatewayProbeConfig -Name "apimgatewayprobe" `
      -Protocol "Https" -HostName $gatewayHostname -Path "/status-0123456789abcdef" `
      -Interval 30 -Timeout 120 -UnhealthyThreshold 8
    $apimPortalProbe = New-AzApplicationGatewayProbeConfig -Name "apimportalprobe" `
      -Protocol "Https" -HostName $portalHostname -Path "/signin" `
      -Interval 60 -Timeout 300 -UnhealthyThreshold 8
    $apimManagementProbe = New-AzApplicationGatewayProbeConfig -Name "apimmanagementprobe" `
      -Protocol "Https" -HostName $managementHostname -Path "/ServiceStatus" `
      -Interval 60 -Timeout 300 -UnhealthyThreshold 8
    
  7. Carregue o certificado raiz confiável a ser configurado nas configurações de HTTP.

    $trustedRootCert = New-AzApplicationGatewayTrustedRootCertificate -Name "whitelistcert1" -CertificateFile $trustedRootCertCerPath
    
  8. Defina as configurações de back-end de HTTP para o Gateway de Aplicativo, incluindo um limite de tempo para solicitações de back-end, após o qual elas são canceladas. Esse valor é diferente do tempo limite de investigação.

    $apimPoolGatewaySetting = New-AzApplicationGatewayBackendHttpSettings -Name "apimPoolGatewaySetting" `
      -Port 443 -Protocol "Https" -CookieBasedAffinity "Disabled" -Probe $apimGatewayProbe `
      -TrustedRootCertificate $trustedRootCert -PickHostNameFromBackendAddress -RequestTimeout 180
    $apimPoolPortalSetting = New-AzApplicationGatewayBackendHttpSettings -Name "apimPoolPortalSetting" `
      -Port 443 -Protocol "Https" -CookieBasedAffinity "Disabled" -Probe $apimPortalProbe `
      -TrustedRootCertificate $trustedRootCert -PickHostNameFromBackendAddress -RequestTimeout 180
    $apimPoolManagementSetting = New-AzApplicationGatewayBackendHttpSettings -Name "apimPoolManagementSetting" `
      -Port 443 -Protocol "Https" -CookieBasedAffinity "Disabled" -Probe $apimManagementProbe `
      -TrustedRootCertificate $trustedRootCert -PickHostNameFromBackendAddress -RequestTimeout 180
    
  9. Configure um pool de endereços IP de back-end para cada ponto de extremidade de Gerenciamento de API, usando seu respectivo nome de domínio.

    $apimGatewayBackendPool = New-AzApplicationGatewayBackendAddressPool -Name "gatewaybackend" `
      -BackendFqdns $gatewayHostname
    $apimPortalBackendPool = New-AzApplicationGatewayBackendAddressPool -Name "portalbackend" `
      -BackendFqdns $portalHostname
    $apimManagementBackendPool = New-AzApplicationGatewayBackendAddressPool -Name "managementbackend" `
      -BackendFqdns $managementHostname
    
  10. Crie regras para o gateway de aplicativo para usar o roteamento básico.

    $gatewayRule = New-AzApplicationGatewayRequestRoutingRule -Name "gatewayrule" `
      -RuleType Basic -HttpListener $gatewayListener -BackendAddressPool $apimGatewayBackendPool `
      -BackendHttpSettings $apimPoolGatewaySetting
    $portalRule = New-AzApplicationGatewayRequestRoutingRule -Name "portalrule" `
      -RuleType Basic -HttpListener $portalListener -BackendAddressPool $apimPortalBackendPool `
      -BackendHttpSettings $apimPoolPortalSetting
    $managementRule = New-AzApplicationGatewayRequestRoutingRule -Name "managementrule" `
      -RuleType Basic -HttpListener $managementListener -BackendAddressPool $apimManagementBackendPool `
      -BackendHttpSettings $apimPoolManagementSetting
    

    Dica

    Altere o -RuleType e o roteamento, para restringir o acesso a determinadas páginas do portal do desenvolvedor.

  11. Configure o número de instâncias e o tamanho do gateway de aplicativo. Neste exemplo, usamos o WAF_v2 SKU para aumentar a segurança do recurso de Gerenciamento de API.

    Use um mínimo de duas instâncias (capacidade) para cargas de trabalho de produção. Talvez você queira usar apenas uma instância para cenários de não produção ou para experimentação geral. Para obter mais informações, consulte preços do Gateway de Aplicativo do Azure.

    $sku = New-AzApplicationGatewaySku -Name "WAF_v2" -Tier "WAF_v2" -Capacity 2
    
  12. Configure WAF para ativar o modo de "Prevenção".

    $config = New-AzApplicationGatewayWebApplicationFirewallConfiguration -Enabled $true -FirewallMode "Prevention"
    
  13. Como o TLS 1,0 atualmente é o padrão, defina o gateway de aplicativo para usar uma das políticas TLS 1.2 recentes.

    $policy = New-AzApplicationGatewaySslPolicy -PolicyType Predefined -PolicyName AppGwSslPolicy20220101
    

Criar um Gateway de Aplicativo

Para criar um recurso de Gateway de Aplicativo:

  1. Crie um Gateway de Aplicativo com todos os objetos de configuração das etapas anteriores.

    $appgwName = "apim-app-gw"
    $appgw = New-AzApplicationGateway -Name $appgwName -ResourceGroupName $resGroupName -Location $location `
      -BackendAddressPools $apimGatewayBackendPool,$apimPortalBackendPool,$apimManagementBackendPool `
      -BackendHttpSettingsCollection $apimPoolGatewaySetting, $apimPoolPortalSetting, $apimPoolManagementSetting `
      -FrontendIpConfigurations $fipconfig01 -GatewayIpConfigurations $gipconfig -FrontendPorts $fp01 `
      -HttpListeners $gatewayListener,$portalListener,$managementListener `
      -RequestRoutingRules $gatewayRule,$portalRule,$managementRule `
      -Sku $sku -WebApplicationFirewallConfig $config -SslCertificates $certGateway,$certPortal,$certManagement `
      -TrustedRootCertificate $trustedRootCert -Probes $apimGatewayProbe,$apimPortalProbe,$apimManagementProbe `
      -SslPolicy $policy
    
  2. Após a implantação do gateway de aplicativo, confirme o status de integridade dos back-ends de Gerenciamento de API no portal ou executando o seguinte comando:

    Get-AzApplicationGatewayBackendHealth -Name $appgwName -ResourceGroupName $resGroupName
    

Certifique-se de que o status de integridade de cada pool de back-end esteja íntegro. Se precisar solucionar um problema de back-end não íntegro ou de um back-end com status de integridade desconhecido, consulte Solucionar problemas de integridade de back-end no Gateway de Aplicativo.

Criar um registro CNAME a partir do nome DNS público

Depois de criar o gateway, configure o front-end para comunicação. Ao usar um endereço IP público, o Gateway de Aplicativo requer um nome DNS atribuído dinamicamente, o que pode não ser fácil de usar.

Use o nome DNS do gateway de aplicativo para criar um registro CNAME que aponte o nome de host do gateway de Gerenciamento de API (api.contoso.net nos exemplos anteriores) para esse nome DNS. Para configurar o registro CNAME de IP de front-end, recupere os detalhes do gateway de aplicativo e seu nome DNS/IP associado usando o elemento PublicIPAddress. Não use registros A porque o VIP pode mudar quando o gateway é reiniciado.

Get-AzPublicIpAddress -ResourceGroupName $resGroupName -Name "publicIP01"

Para fins de teste, você pode atualizar o arquivo de hosts em seu computador local com entradas que mapeiam o endereço IP público do gateway de aplicativo para cada um dos nomes de host de ponto de extremidade de Gerenciamento de API que você configurou. Exemplos api.contoso.net, portal.contoso.net, e management.contoso.net.

Resumo

O Gerenciamento de API, quando configurado em uma rede virtual, fornece uma interface de gateway única para todas as APIs configuradas, estejam elas hospedadas no local ou na nuvem. A integração do Gateway de Aplicativo ao Gerenciamento de API fornece a flexibilidade para habilitar seletivamente as APIs específicas para que possam ser acessadas pela Internet. A integração também fornece um WAF como um front-end à sua instância de Gerenciamento de API.

Próximas etapas