Integratie API Management in een intern virtueel netwerk met Application Gateway
U kunt de API Management in een virtueel netwerk inde interne modus configureren, zodat deze alleen toegankelijk is binnen het virtuele netwerk. Azure Application Gateway is een PaaS-service die als laag-7-load balancer. Het fungeert als een omgekeerde proxyservice en biedt onder andere een Web Application Firewall (WAF).
Door de API Management die zijn ingericht in een intern virtueel netwerk te combineren met Application Gateway front-end, kunt u het volgende doen:
- Gebruik dezelfde API Management voor gebruik door zowel interne consumenten als externe consumenten.
- Gebruik één resource API Management en er is een subset API's gedefinieerd in API Management beschikbaar is voor externe gebruikers.
- Een kant-en-klare manier bieden om de toegang tot API Management via het openbare internet in of uit te schakelen.
Notitie
Dit artikel is bijgewerkt voor het gebruik van de Application Gateway WAF_v2 SKU.
Beschikbaarheid
Belangrijk
Deze functie is beschikbaar in de Premium -en Developer -laag van API management.
Vereisten
Notitie
In dit artikel wordt de Azure Az PowerShell-module gebruikt. Dit is de aanbevolen PowerShell-module voor interactie met Azure. Raadpleeg Azure PowerShell installeren om aan de slag te gaan met de Az PowerShell-module. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.
Als u de stappen wilt volgen die in dit artikel worden beschreven, hebt u het volgende nodig:
Een actief Azure-abonnement.
Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.
Certificaten
- PFX-bestanden voor de API Management van de aangepaste hostnamen van de service: gateway, ontwikkelaarsportal en beheer-eindpunt.
- Een CER-bestand voor het basiscertificaat van de PFX-certificaten.
Zie Certificaten voor de back-end voor meer informatie. Voor testdoeleinden kunt u eventueel zelfonder ondertekende certificaten genereren.
De nieuwste versie van Azure PowerShell. Als u dat nog niet hebt gedaan, installeert Azure PowerShell.
Scenario
In dit artikel leert u hoe u één API Management-service gebruikt voor zowel interne als externe consumenten en hoe u deze als één front-end laat fungeren voor zowel on-premises API's als cloud-API's. U begrijpt ook hoe u alleen een subset van uw API's beschikbaar maakt (in het voorbeeld zijn ze groen gemarkeerd) voor extern gebruik met behulp van routeringsfunctionaliteit die beschikbaar is in Application Gateway.
In het eerste installatievoorbeeld worden al uw API's alleen beheerd vanuit uw virtuele netwerk. Interne consumenten (oranje gemarkeerd) hebben toegang tot al uw interne en externe API's. Verkeer gaat nooit naar internet. Connectiviteit met hoge prestaties kan worden geleverd via Express Route-circuits.

Wat is er vereist om API Management en Application Gateway?
- Back-endserverpool: Dit is het interne virtuele IP-adres van de API Management service.
- Back-endserverpoolinstellingen: elke pool heeft instellingen, zoals voor de poort, het protocol en de op cookies gebaseerde affiniteit. Deze instellingen worden toegepast op alle servers in de groep.
- Front-endpoort: Dit is de openbare poort die wordt geopend op de toepassingsgateway. Verkeer dat wordt gebruikt, wordt omgeleid naar een van de back-endservers.
- Luisteraar: De listener heeft een front-endpoort, een protocol (Http of Https; deze waarden zijn case-gevoelig) en de TLS/SSL-certificaatnaam (als u TLS-offloading configureert).
- Regel: De regel verbindt een listener met een back-endservergroep.
- Aangepaste statustest: Application Gateway gebruikt standaard tests op basis van IP-adressen om te achterhalen welke servers in de BackendAddressPool actief zijn. De API Management-service reageert alleen op aanvragen met de juiste hostheader, waardoor de standaardtests mislukken. U definieert een aangepaste statustest om de toepassingsgateway te helpen bepalen of de service springlevend is en aanvragen moet doorsturen.
- Aangepaste domeincertificaten: Als u API Management internet wilt openen, moet u een CNAME-toewijzing van de hostnaam aan de Application Gateway front-end-DNS-naam maken. Dit zorgt ervoor dat de hostnaamheader en het certificaat die naar Application Gateway worden verzonden en doorgestuurd naar API Management een header zijn die API Management als geldig worden herkend. In dit voorbeeld gebruiken we drie certificaten: voor de gateway van de API Management-service (de back-end), de ontwikkelaarsportal en het beheer-eindpunt.
Vereiste stappen voor het integreren API Management en Application Gateway
- Maak een resourcegroep voor Resource Manager.
- Maak een virtueel netwerk, subnet en openbaar IP-adres voor de Application Gateway. Maak nog een subnet voor API Management.
- Maak een API Management-service in het subnet van het virtuele netwerk dat u in de vorige stap hebt gemaakt. Zorg ervoor dat u de interne modus gebruikt.
- Aangepaste domeinnamen instellen in de API Management service.
- Een privé-DNS-zone configureren voor DNS-resolutie in het virtuele netwerk
- Maak een Application Gateway-configuratieobject.
- Maak een Application Gateway resource.
- Maak een CNAME van de openbare DNS-naam van de Application Gateway naar API Management proxyhostnaam.
De ontwikkelaarsportal en het beheer-eindpunt extern blootstellen via Application Gateway
In deze handleiding maken we ook de ontwikkelaarsportal en het beheer-eindpunt via de toepassingsgateway voor externe doelgroepen bekend. Er zijn extra stappen nodig om een listener, test, instellingen en regels voor elk eindpunt te maken. Alle details worden opgegeven in de desbetreffende stappen.
Waarschuwing
Als u Azure AD of verificatie van derden gebruikt, moet u de functie sessie-affiniteit op basis van cookies inschakelen in Application Gateway.
Waarschuwing
Om te Application Gateway dat de WAF het downloaden van OpenAPI-specificaties in de ontwikkelaarsportal verbreekt, moet u de firewallregel 942200 - "Detects MySQL comment-/space-obfuscated injections and backtick termination" uitschakelen.
Application Gateway WAF-regels die de functionaliteit van de portal kunnen breken, zijn onder andere:
920300,920330, , , , , , , , voor de931130942100942110942180942200942260942340942370beheermodus942200,942260, , , voor de942370942430942440gepubliceerde portal
Een resourcegroep maken voor Resource Manager
Stap 1
Meld u aan bij Azure.
Connect-AzAccount
Verifieert u met uw referenties.
Stap 2
Selecteer het gewenste abonnement.
$subscriptionId = "00000000-0000-0000-0000-000000000000" # GUID of your Azure subscription
Get-AzSubscription -Subscriptionid $subscriptionId | Select-AzSubscription
Stap 3
Maak een resourcegroep (u kunt deze stap overslaan als u een bestaande resourcegroep gebruikt).
$resGroupName = "apim-appGw-RG" # resource group name
$location = "West US" # Azure region
New-AzResourceGroup -Name $resGroupName -Location $location
Azure Resource Manager vereist dat er voor alle resourcegroepen een locatie wordt opgegeven. Deze locatie wordt gebruikt als de standaardlocatie voor resources in die resourcegroep. Zorg ervoor dat alle opdrachten voor het maken van een toepassingsgateway dezelfde resourcegroep gebruiken.
Een virtueel netwerk en een subnet maken voor de toepassingsgateway
In het volgende voorbeeld ziet u hoe u een virtueel netwerk maakt met Resource Manager. Het virtuele netwerk in dit voorbeeld bestaat uit afzonderlijke subnetten voor Application Gateway en API Management.
Stap 1
Maak netwerkbeveiligingsgroepen en NSG-regels voor de Application Gateway en API Management subnetten.
$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
Stap 2
Wijs het adresbereik 10.0.0.0/24 toe aan de subnetvariabele die moet worden gebruikt voor Application Gateway tijdens het maken van een virtueel netwerk.
$appGatewaySubnet = New-AzVirtualNetworkSubnetConfig -Name "appGatewaySubnet" -NetworkSecurityGroup $appGwNsg -AddressPrefix "10.0.0.0/24"
Stap 3
Wijs het adresbereik 10.0.1.0/24 toe aan de subnetvariabele die moet worden gebruikt voor API Management tijdens het maken van een virtueel netwerk.
$apimSubnet = New-AzVirtualNetworkSubnetConfig -Name "apimSubnet" -NetworkSecurityGroup $apimNsg -AddressPrefix "10.0.1.0/24"
Stap 4
Maak een virtueel netwerk met de naam appgwvnet in de resourcegroep apim-appGw-RG voor de regio VS - west. Gebruik het voorvoegsel 10.0.0.0/16 met subnetten 10.0.0.0/24 en 10.0.1.0/24.
$vnet = New-AzVirtualNetwork -Name "appgwvnet" -ResourceGroupName $resGroupName `
-Location $location -AddressPrefix "10.0.0.0/16" -Subnet $appGatewaySubnet,$apimSubnet
Stap 5
Subnetvariabelen toewijzen voor de volgende stappen
$appGatewaySubnetData = $vnet.Subnets[0]
$apimSubnetData = $vnet.Subnets[1]
Een API Management maken in een virtueel netwerk dat is geconfigureerd in de interne modus
In het volgende voorbeeld ziet u hoe u een API Management maakt in een virtueel netwerk dat alleen is geconfigureerd voor interne toegang.
Stap 1
Maak een API Management virtueel netwerkobject met behulp van het subnet $apimSubnetData dat hierboven is gemaakt.
$apimVirtualNetwork = New-AzApiManagementVirtualNetwork -SubnetResourceId $apimSubnetData.Id
Stap 2
Maak een API Management service in het virtuele netwerk. In dit voorbeeld wordt de service gemaakt in de servicelaag Developer. Vervang een unieke naam voor uw API Management service.
$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"
Het kan tussen de dertig en veertig minuten duren om een API Management-service in deze laag te maken en activeren. Nadat de vorige opdracht is geslaagd, raadpleegt u DNS-configuratie vereist voor toegang tot het interne virtuele netwerk API Management service om de toegang tot het netwerk te bevestigen.
Aangepaste domeinnamen instellen in API Management
Stap 1
Initialiseer de volgende variabelen met de details van de certificaten met persoonlijke sleutels voor de domeinen en het vertrouwde basiscertificaat. In dit voorbeeld gebruiken we api.contoso.net portal.contoso.net , en 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
Stap 2
Maak en stel de hostnaamconfiguratieobjecten voor de API Management in.
$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
Notitie
Als u connectiviteit met de verouderde ontwikkelaarsportal wilt configureren, moet u vervangen -HostnameType DeveloperPortal door -HostnameType Portal .
Een privézone configureren voor DNS-resolutie in het virtuele netwerk
Stap 1
Maak een privé-DNS-zone en koppel het virtuele netwerk.
$myZone = New-AzPrivateDnsZone -Name "contoso.net" -ResourceGroupName $resGroupName
$link = New-AzPrivateDnsVirtualNetworkLink -ZoneName contoso.net `
-ResourceGroupName $resGroupName -Name "mylink" `
-VirtualNetworkId $vnet.id
Stap 2
Maak A-records voor de hostnamen van het aangepaste domein en wijs deze toe aan het privé-IP-adres van de API Management service:
$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)
Een openbaar IP-adres maken voor de front-endconfiguratie
Maak een openbare IP-standaardresource publicIP01 in de resourcegroep.
$publicip = New-AzPublicIpAddress -ResourceGroupName $resGroupName `
-name "publicIP01" -location $location -AllocationMethod Static -Sku Standard
Er wordt een IP-adres toegewezen aan de toepassingsgateway wanneer de service wordt gestart.
Configuratie van toepassingsgateway maken
Alle configuratie-items moeten zijn ingesteld voordat u de toepassingsgateway maakt. Volg de onderstaande stappen om de configuratie-items te maken die nodig zijn voor een toepassingsgatewayresource.
Stap 1
Maak een IP-configuratie voor de toepassingsgateway met de naam gatewayIP01. Wanneer Application Gateway wordt gestart, wordt er een IP-adres opgehaald uit het geconfigureerde subnet en wordt netwerkverkeer gerouteerd naar de IP-adressen in de back-end-IP-adresgroep. Onthoud dat elk exemplaar één IP-adres gebruikt.
$gipconfig = New-AzApplicationGatewayIPConfiguration -Name "gatewayIP01" -Subnet $appGatewaySubnetData
Stap 2
Configureer de front-end-IP-poort voor het openbare IP-eindpunt. Deze poort is de poort waar eindgebruikers verbinding mee maken.
$fp01 = New-AzApplicationGatewayFrontendPort -Name "port01" -Port 443
Stap 3
Configureer het front-end-IP-adres met openbaar IP-eindpunt.
$fipconfig01 = New-AzApplicationGatewayFrontendIPConfig -Name "frontend1" -PublicIPAddress $publicip
Stap 4
Configureer de certificaten voor de Application Gateway, die worden gebruikt voor het ontsleutelen en opnieuw versleutelen van het verkeer dat wordt passeren.
Notitie
Application Gateway biedt ondersteuning voor het definiëren van aangepaste TLS-opties, het uitschakelen van bepaalde TLS-protocolversies en het opgeven van coderingssuites en de volgorde van voorkeur. Zie overzicht van TLS-beleid voor meer informatie over configureerbare TLS-opties.
$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
Stap 5
Maak de HTTP-listeners voor de Application Gateway. Wijs de front-end-IP-configuratie, poort en TLS/SSL-certificaten aan deze certificaten toe.
$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
Stap 6
Maak aangepaste tests naar het API Management van het domein van ContosoApi de servicegateway. Het pad /status-0123456789abcdef is een standaard health-eindpunt dat wordt gehost op alle API Management services. Stel api.contoso.net in als een aangepaste testhostnaam om deze te beveiligen met het TLS/SSL-certificaat.
Notitie
De hostnaam is de standaardhostnaam van de proxy die is geconfigureerd wanneer een service met de naam contosoapi.azure-api.net wordt gemaakt in openbare contosoapi Azure.
$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
Stap 7
Upload vertrouwde basiscertificaat configureren op de HTTP-instellingen.
$trustedRootCert = New-AzApplicationGatewayTrustedRootCertificate -Name "whitelistcert1" -CertificateFile $trustedRootCertCerPath
Stap 8
Configureer de HTTP-back-Application Gateway voor de back-Application Gateway, inclusief een time-outlimiet voor back-en-outaanvragen, waarna ze worden geannuleerd. Deze waarde verschilt van de time-out van de test.
$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
Stap 9
Configureer een back-end-IP-adresgroep voor API Management eindpunt, met behulp van de respectieve domeinnaam.
$apimGatewayBackendPool = New-AzApplicationGatewayBackendAddressPool -Name "gatewaybackend" `
-BackendFqdns $gatewayHostname
$apimPortalBackendPool = New-AzApplicationGatewayBackendAddressPool -Name "portalbackend" `
-BackendFqdns $portalHostname
$apimManagementBackendPool = New-AzApplicationGatewayBackendAddressPool -Name "managementbackend" `
-BackendFqdns $managementHostname
Stap 10
Regels maken voor de toepassingsgateway om basisroutering te gebruiken.
$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
Tip
Wijzig de -RuleType routering en om de toegang tot bepaalde pagina's van de ontwikkelaarsportal te beperken.
Stap 11
Configureer het aantal exemplaren en de grootte voor de toepassingsgateway. In dit voorbeeld gebruiken we de WAF_v2 SKU voor een betere beveiliging van de API Management resource.
We raden u aan minimaaltwee exemplaren (capaciteit) te gebruiken voor productieworkloads. Mogelijk wilt u echter slechts één exemplaar gebruiken voor niet-productiescenario's of voor algemene experimenten. Zie prijzen voor Azure Application Gateway meer informatie.
$sku = New-AzApplicationGatewaySku -Name "WAF_v2" -Tier "WAF_v2" -Capacity 2
Stap 12
Configureer WAF in de modus Preventie.
$config = New-AzApplicationGatewayWebApplicationFirewallConfiguration -Enabled $true -FirewallMode "Prevention"
Stap 13
Omdat TLS 1.0 momenteel de standaardinstelling is, is het een goed idee om de toepassingsgateway zo in te stellen dat het meest recente TLS 1.2-beleid wordt gebruikt.
$policy = New-AzApplicationGatewaySslPolicy -PolicyType Predefined -PolicyName AppGwSslPolicy20170401S
Een toepassingsgateway maken
Maak een Application Gateway met alle configuratieobjecten uit de voorgaande stappen.
$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
Nadat de implementatie van de toepassingsgateway is voltooid, bevestigt u de status van de back-API Management in de portal of door de volgende opdracht uit te voeren:
Get-AzApplicationGatewayBackendHealth -Name $appgwName -ResourceGroupName $resGroupName
Zorg ervoor dat de status van elke back-endpool In orde is. Zie Problemen met de back-en-mailstatus oplossen in Application Gateway als u problemen met een slechte back-end of een back-end met een onbekende status moet Application Gateway.
CNAME de API Management proxyhostnaam naar de openbare DNS-naam van de Application Gateway resource
Zodra de gateway is gemaakt, configureert u de front-end voor communicatie. Wanneer u een openbaar IP-adres gebruikt, Application Gateway een dynamisch toegewezen DNS-naam vereist, die mogelijk niet eenvoudig te gebruiken is.
Gebruik de DNS Application Gateway naam van de Application Gateway om een CNAME-record te maken die de hostnaam van de API Management-gateway (in de voorgaande voorbeelden) verwijst api.contoso.net naar deze DNS-naam. Als u de CNAME-record van de front-end-IP wilt configureren, haalt u de details van de Application Gateway en de bijbehorende IP-/DNS-naam op met behulp van het PublicIPAddress -element. Het gebruik van A-records wordt niet aanbevolen, omdat het VIP kan worden gewijzigd wanneer de gateway opnieuw wordt opgestart.
Get-AzPublicIpAddress -ResourceGroupName $resGroupName -Name "publicIP01"
Voor testdoeleinden kunt u het hosts-bestand op uw lokale computer bijwerken met vermeldingen die het openbare IP-adres van de Application Gateway toewijzen aan elk van de hostnamen van het API Management-eindpunt die u hebt geconfigureerd (bijvoorbeeld api.contoso.net portal.contoso.net , , management.contoso.net ).
Samenvatting
Azure API Management geconfigureerd in een virtueel netwerk biedt één gatewayinterface voor alle geconfigureerde API's, ongeacht of deze on-premises of in de cloud worden gehost. De integratie van Application Gateway met API Management biedt de flexibiliteit om bepaalde API's selectief toegankelijk te maken op internet en een WAF als front-end te bieden voor uw API Management-instantie.
Volgende stappen
- Meer informatie over Azure Application Gateway
- Meer informatie over API Management en virtueel netwerk