Az API Management integrálása belső virtuális hálózatba az Application Gateway használatával
A KÖVETKEZŐKRE VONATKOZIK: Fejlesztő | Prémium
Az Azure API Managementet belső módban konfigurálhatja egy virtuális hálózaton, ami csak a virtuális hálózaton belül teszi elérhetővé. Azure-alkalmazás Gateway egy szolgáltatásként nyújtott platform (PaaS), amely 7. rétegbeli terheléselosztóként működik. Fordított proxy szolgáltatásként működik, és az Azure Web Application Firewall (WAF) ajánlatai között nyújt.
A belső virtuális hálózatban kiépített API Management és az előtérbeli Application Gateway kombinálásával a következőt teheti:
- Ugyanazt az API Management-erőforrást használhatja a belső és a külső fogyasztók általi felhasználáshoz.
- Egyetlen API Management-erőforrást használhat, és a külső fogyasztók számára elérhető API Management szolgáltatásban definiált API-k részhalmazával rendelkezhet.
- Kulcsrakész megoldást biztosíthat az API Management nyilvános internetről való elérésének be- és kikapcsolásához.
Az architekturális útmutatásért lásd:
- Alapszintű vállalati integráció: Referenciaarchitektúra
- API Management célzónagyorsító: Referenciaarchitektúra és tervezési útmutató
Feljegyzés
Ez a cikk az Application Gateway WAF_v2 termékváltozat használatára lett frissítve.
Előfeltételek
Feljegyzés
Javasoljuk, hogy az Azure Az PowerShell modult használja az Azure-ral való interakcióhoz. Első lépésként tekintse meg az Azure PowerShell telepítését ismertető témakört. Az Az PowerShell-modulra történő migrálás részleteiről lásd: Az Azure PowerShell migrálása az AzureRM modulból az Az modulba.
A cikkben leírt lépések végrehajtásához a következőket kell tennie:
Aktív Azure-előfizetés
Ha nem rendelkezik Azure-előfizetéssel, első lépésként hozzon létre egy ingyenes Azure-fiókot.
Diplomák
- Az API Management egyéni gazdagépneveit tartalmazó személyes exchange -fájlok (PFX-fájlok): átjáró, fejlesztői portál és felügyeleti végpont.
- Tanúsítványfájl a PFX-tanúsítványok főtanúsítványához.
További információ: Tanúsítványok a háttérrendszerhez. Tesztelési célokra önaláírt tanúsítványokat hozhat létre.
Az Azure PowerShell legújabb verziója
Eset
Ebből a cikkből megtudhatja, hogyan használhat egyetlen API Management-példányt belső és külső felhasználók számára, és hogyan használható egyetlen kezelőfelületként a helyszíni és a felhőbeli API-k számára is. Az újabb egybérlős 2-es (stv2) verziójú API Management-példányt hozza létre. Megtudhatja, hogyan használhat nyilvános és privát figyelőket az Application Gatewayben. Az Application Gatewayben elérhető útválasztási funkciókkal megtudhatja, hogyan teheti közzé csak az API-k egy részét külső felhasználás céljából. A példában az API-k zöld színnel vannak kiemelve.
Az első beállítási példában az összes API-t csak a virtuális hálózaton belül kezeli a rendszer. A belső felhasználók hozzáférhetnek az összes belső és külső API-hoz. A forgalom soha nem megy ki az internetre. A nagy teljesítményű kapcsolat azure ExpressRoute-kapcsolatcsoportokon keresztül is elérhető. A példában a belső fogyasztók narancssárga színnel vannak kiemelve.
Mi szükséges az API Management és az Application Gateway integrálásához?
- Háttérkiszolgáló-készlet: Ez a kiszolgálókészlet az API Management belső virtuális IP-címe.
- Háttér-kiszolgálókészlet beállításai: Minden készlet rendelkezik beállításokkal, például a portra, protokollra vagy cookie-alapú affinitásra vonatkozóan. Ezek a beállítások a készletben található összes kiszolgálóra érvényesek.
- Előtérbeli port: Ez a nyilvános port meg van nyitva az Application Gatewayen. Az erre a portra érkező forgalmat a rendszer átirányítja az egyik háttérkiszolgálóra.
- Figyelő: A figyelő előtérporttal, protokollal (Http vagy Https, ezek az értékek megkülönböztetik a kis- és nagybetűket) és a Transport Layer Security (TLS) tanúsítványnévvel rendelkezik (ha a TLS-kiszervezést konfigurálja).
- Szabály: A szabály egy figyelőt köt egy háttérkiszolgáló-készlethez.
- Egyéni állapotadat-mintavétel: Az Application Gateway alapértelmezés szerint IP-címalapú mintavételekkel állapítja meg, hogy mely kiszolgálók
BackendAddressPool
aktívak. Az API Management csak a megfelelő gazdagépfejléccel rendelkező kérelmekre válaszol, ezért az alapértelmezett mintavételek sikertelenek. Definiáljon egy egyéni állapottesztet, amelynek segítségével az Application Gateway meghatározhatja, hogy a szolgáltatás működik-e, és továbbítania kell a kéréseket. - Egyéni tartománytanúsítványok: Ha az API Managementet az internetről szeretné elérni, hozzon létre dns-rekordokat a gazdagépneveinek az Application Gateway előtérbeli IP-címére való leképezéséhez. Ez a leképezés biztosítja, hogy a gazdagépfejléc és az API Managementnek elküldött tanúsítvány érvényes legyen. Ebben a példában három tanúsítványt használunk. Ezek az API Management átjárójához (a háttérrendszerhez), a fejlesztői portálhoz és a felügyeleti végponthoz tartoznak.
A fejlesztői portál és a felügyeleti végpont külső elérhetővé tétele az Application Gatewayen keresztül
Ebben a cikkben a fejlesztői portált és a felügyeleti végpontot is elérhetővé tesszük a külső közönség számára az Application Gatewayen keresztül. További lépésekre van szükség a figyelő, a mintavétel, a beállítások és a szabályok minden végponthoz való létrehozásához. Minden részletet a megfelelő lépésekben talál. Ha el kell helyeznie a saját üzemeltetésű átjáró v2 konfigurációs végpontját, kövesse a hasonló lépéseket (nem jelenik meg).
Ha Microsoft Entra-azonosítót vagy külső hitelesítést használ, engedélyezze a cookie-alapú munkamenet-affinitás funkciót az Application Gatewayben.
Figyelmeztetés
Ha meg szeretné akadályozni, hogy az Application Gateway WAF feltörje az OpenAPI-specifikációk letöltését a fejlesztői portálon, tiltsa le a tűzfalszabályt 942200 - "Detects MySQL comment-/space-obfuscated injections and backtick termination"
.
Az Application Gateway WAF-szabályai, amelyek megszakíthatják a portál funkcióit, a következők:
920300
, ,920330
931130
,942100
,942110
942180
,942200
,942260
, ,942340
felügyeleti942370
mód esetén942200
,942260
,942370
,942430
942440
a közzétett portálhoz
Változók beállítása
Ebben az útmutatóban több változót kell definiálnia. Az elnevezés az felhőadaptálási keretrendszer rövidítési útmutatón alapul.
# These variables must be changed.
$subscriptionId = "00000000-0000-0000-0000-000000000000" # GUID of your Azure subscription
$domain = "contoso.net" # The custom domain for your certificate
$apimServiceName = "apim-contoso" # API Management service instance name, must be globally unique
$apimDomainNameLabel = $apimServiceName # Domain name label for API Management's public IP address, must be globally unique
$apimAdminEmail = "admin@contoso.net" # Administrator's email address - use your email address
$gatewayHostname = "api.$domain" # API gateway host
$portalHostname = "portal.$domain" # API developer portal host
$managementHostname = "management.$domain" # API management endpoint host
$baseCertPath = "C:\Users\Contoso\" # The base path where all certificates are stored
$trustedRootCertCerPath = "${baseCertPath}trustedroot.cer" # Full path to contoso.net trusted root .cer file
$gatewayCertPfxPath = "${baseCertPath}gateway.pfx" # Full path to api.contoso.net .pfx file
$portalCertPfxPath = "${baseCertPath}portal.pfx" # Full path to portal.contoso.net .pfx file
$managementCertPfxPath = "${baseCertPath}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
# These variables may be changed.
$resGroupName = "rg-apim-agw" # Resource group name that will hold all assets
$location = "West US" # Azure region that will hold all assets
$apimOrganization = "Contoso" # Organization name
$appgwName = "agw-contoso" # The name of the Application Gateway
Erőforráscsoport létrehozása a Resource Managerhez
Erőforráscsoport létrehozása az Azure Resource Managerhez:
Bejelentkezés az Azure-ba.
Connect-AzAccount
Hitelesítés a hitelesítő adatokkal.
Válassza ki a kívánt előfizetést.
Get-AzSubscription -Subscriptionid $subscriptionId | Select-AzSubscription
Hozzon létre egy erőforráscsoportot. Ezt a lépést kihagyhatja, ha meglévő erőforráscsoportot használ.
New-AzResourceGroup -Name $resGroupName -Location $location
A Resource Manager megköveteli, hogy minden erőforráscsoport adjon meg egy helyet. Ez a hely lesz az erőforráscsoport erőforrásainak alapértelmezett értéke. Győződjön meg arról, hogy az application gateway létrehozásához használt összes parancs ugyanazt az erőforráscsoportot használja.
Virtuális hálózat és alhálózat létrehozása az Application Gateway számára
Az alábbi példa bemutatja, hogyan hozhat létre virtuális hálózatot a Resource Manager használatával. Ebben a példában a virtuális hálózat az Application Gateway és az API Management különálló alhálózataiból áll.
Állítsa be az Application Gateway IP-címeit.
Feljegyzés
Mivel lesznek nyilvános és privát figyelők, szükségünk van egy nyilvános és egy privát IP-címre. Létre kell hozni a statikus, nyilvános IP-címet, míg a privát IP-címet az application gatewayhez társított alhálózatból kell kiválasztani. A privát IP-cím tetszőlegesen lett kiválasztva.
$appGatewayExternalIP = New-AzPublicIpAddress -ResourceGroupName $resGroupName -name "pip-ag" -location $location -AllocationMethod Static -Sku Standard -Force $appGatewayInternalIP = "10.0.0.100" [String[]]$appGwNsgDestIPs = $appGatewayInternalIP, $appGatewayExternalIP.IpAddress
Hozzon létre egy hálózati biztonsági csoportot (NSG) és NSG-szabályokat az Application Gateway alhálózatához.
$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 $appGwNsgDestIPs -DestinationPortRange 443 $appGwNsg = New-AzNetworkSecurityGroup -ResourceGroupName $resGroupName -Location $location -Name ` "nsg-agw" -SecurityRules $appGwRule1, $appGwRule2
Hozzon létre egy hálózati biztonsági csoportot (NSG) és NSG-szabályokat az API Management alhálózathoz. Az API Management stv2 több konkrét NSG-szabályt igényel.
$apimRule1 = New-AzNetworkSecurityRuleConfig -Name APIM-Management -Description "APIM inbound" ` -Access Allow -Protocol Tcp -Direction Inbound -Priority 100 -SourceAddressPrefix ApiManagement ` -SourcePortRange * -DestinationAddressPrefix VirtualNetwork -DestinationPortRange 3443 $apimRule2 = New-AzNetworkSecurityRuleConfig -Name AllowAppGatewayToAPIM -Description "Allows inbound App Gateway traffic to APIM" ` -Access Allow -Protocol Tcp -Direction Inbound -Priority 110 -SourceAddressPrefix "10.0.0.0/24" ` -SourcePortRange * -DestinationAddressPrefix "10.0.1.0/24" -DestinationPortRange 443 $apimRule3 = New-AzNetworkSecurityRuleConfig -Name AllowAzureLoadBalancer -Description "Allows inbound Azure Infrastructure Load Balancer traffic to APIM" ` -Access Allow -Protocol Tcp -Direction Inbound -Priority 120 -SourceAddressPrefix AzureLoadBalancer ` -SourcePortRange * -DestinationAddressPrefix "10.0.1.0/24" -DestinationPortRange 6390 $apimRule4 = New-AzNetworkSecurityRuleConfig -Name AllowKeyVault -Description "Allows outbound traffic to Azure Key Vault" ` -Access Allow -Protocol Tcp -Direction Outbound -Priority 100 -SourceAddressPrefix "10.0.1.0/24" ` -SourcePortRange * -DestinationAddressPrefix AzureKeyVault -DestinationPortRange 443 $apimNsg = New-AzNetworkSecurityGroup -ResourceGroupName $resGroupName -Location $location -Name ` "nsg-apim" -SecurityRules $apimRule1, $apimRule2, $apimRule3, $apimRule4
Rendelje hozzá a 10.0.0.0/24 címtartományt az Application Gatewayhez használandó alhálózati változóhoz virtuális hálózat létrehozásakor.
$appGatewaySubnet = New-AzVirtualNetworkSubnetConfig -Name "appGatewaySubnet" -NetworkSecurityGroup $appGwNsg -AddressPrefix "10.0.0.0/24"
Rendelje hozzá a 10.0.1.0/24 címtartományt az API Managementhez használandó alhálózati változóhoz egy virtuális hálózat létrehozásakor.
$apimSubnet = New-AzVirtualNetworkSubnetConfig -Name "apimSubnet" -NetworkSecurityGroup $apimNsg -AddressPrefix "10.0.1.0/24"
Hozzon létre egy vnet-contoso nevű virtuális hálózatot. Használja a 10.0.0.0/16 előtagot a 10.0.0.0/24 és a 10.0.1.0/24 alhálózattal.
$vnet = New-AzVirtualNetwork -Name "vnet-contoso" -ResourceGroupName $resGroupName ` -Location $location -AddressPrefix "10.0.0.0/16" -Subnet $appGatewaySubnet,$apimSubnet
Alhálózati változók hozzárendelése a következő lépésekhez.
$appGatewaySubnetData = $vnet.Subnets[0] $apimSubnetData = $vnet.Subnets[1]
API Management-példány létrehozása virtuális hálózaton belül
Az alábbi példa bemutatja, hogyan hozhat létre API Management-példányt egy csak belső hozzáférésre konfigurált virtuális hálózaton.
Az API Management stv2-hez egy egyedi
DomainNameLabel
nyilvános IP-cím szükséges.$apimPublicIpAddressId = New-AzPublicIpAddress -ResourceGroupName $resGroupName -name "pip-apim" -location $location ` -AllocationMethod Static -Sku Standard -Force -DomainNameLabel $apimDomainNameLabel
Hozzon létre egy API Management virtuális hálózati objektumot a létrehozott alhálózat
$apimSubnetData
használatával.$apimVirtualNetwork = New-AzApiManagementVirtualNetwork -SubnetResourceId $apimSubnetData.Id
Hozzon létre egy API Management-példányt a virtuális hálózaton belül. Ez a példa a fejlesztői szolgáltatási szinten hozza létre a szolgáltatást. Cserélje le az API Management-példány egyedi nevét.
$apimService = New-AzApiManagement -ResourceGroupName $resGroupName -Location $location -Name $apimServiceName -Organization $apimOrganization ` -AdminEmail $apimAdminEmail -VirtualNetwork $apimVirtualNetwork -VpnType "Internal" -Sku "Developer" -PublicIpAddressId $apimPublicIpAddressId.Id
Ezen a szinten egy API Management-példány létrehozása és aktiválása 30–40 percet is igénybe vehet. Az előző parancs sikeres végrehajtása után tekintse meg a belső virtuális hálózati API Management szolgáltatás eléréséhez szükséges DNS-konfigurációt a hozzáférés megerősítéséhez.
Egyéni tartománynevek beállítása az API Managementben
Egyéni tartománynevek beállítása az API Managementben:
Inicializálja a következő változókat a tartományok titkos kulcsaival és a megbízható főtanúsítvánnyal rendelkező tanúsítványok részleteivel. Ebben a példában az
api.contoso.net
,portal.contoso.net
ésmanagement.contoso.net
a .$certGatewayPwd = ConvertTo-SecureString -String $gatewayCertPfxPassword -AsPlainText -Force $certPortalPwd = ConvertTo-SecureString -String $portalCertPfxPassword -AsPlainText -Force $certManagementPwd = ConvertTo-SecureString -String $managementCertPfxPassword -AsPlainText -Force
Hozza létre és állítsa be az
Hostname
API Management-végpontok konfigurációs objektumait.$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
Privát zóna konfigurálása DNS-feloldáshoz a virtuális hálózaton
Privát DNS-zóna konfigurálása DNS-feloldáshoz a virtuális hálózaton:
Hozzon létre egy privát DNS-zónát, és kapcsolja össze a virtuális hálózatot.
$myZone = New-AzPrivateDnsZone -Name $domain -ResourceGroupName $resGroupName $link = New-AzPrivateDnsVirtualNetworkLink -ZoneName $domain ` -ResourceGroupName $resGroupName -Name "mylink" ` -VirtualNetworkId $vnet.id
Hozzon létre A-rekordokat az egyéni tartomány gazdagépneveihez, amelyek az API Management magánhálózati IP-címére lesznek megfeleltetve.
$apimIP = $apimService.PrivateIPAddresses[0] New-AzPrivateDnsRecordSet -Name api -RecordType A -ZoneName $domain ` -ResourceGroupName $resGroupName -Ttl 3600 ` -PrivateDnsRecords (New-AzPrivateDnsRecordConfig -IPv4Address $apimIP) New-AzPrivateDnsRecordSet -Name portal -RecordType A -ZoneName $domain ` -ResourceGroupName $resGroupName -Ttl 3600 ` -PrivateDnsRecords (New-AzPrivateDnsRecordConfig -IPv4Address $apimIP) New-AzPrivateDnsRecordSet -Name management -RecordType A -ZoneName $domain ` -ResourceGroupName $resGroupName -Ttl 3600 ` -PrivateDnsRecords (New-AzPrivateDnsRecordConfig -IPv4Address $apimIP)
Application Gateway-konfiguráció létrehozása
Az Application Gateway létrehozása előtt minden konfigurációelemet be kell állítani. Az alábbi lépések létrehozzák az Application Gateway-erőforráshoz szükséges konfigurációelemeket.
Hozzon létre egy GatewayIP01 nevű Application Gateway IP-konfigurációt. Amikor az Application Gateway elindul, a konfigurált alhálózatból vesz fel egy IP-címet, és a hálózati forgalmat a háttérbeli IP-készlet IP-címeihez irányítja. Ne feledje, hogy minden példány egy IP-címet vesz fel.
$gipconfig = New-AzApplicationGatewayIPConfiguration -Name "gatewayIP01" -Subnet $appGatewaySubnetData
Konfigurálja ugyanazt az előtérbeli portot a nyilvános és a privát IP-végponthoz. Ehhez a porthoz csatlakoznak a felhasználók. Ha ugyanazt a portot használja mindkét porthoz, biztosítjuk, hogy a belső és a külső kérések ugyanarra a portra legyenek küldve.
$fp01 = New-AzApplicationGatewayFrontendPort -Name "port01" -Port 443
Konfiguráljon két előtérbeli IP-címet – egy nyilvános és egy privát ip-címet. A privát IP-cím az Application Gateway alhálózatából származik, amely a 0. indexnél először lett létrehozva.
$fipconfig01 = New-AzApplicationGatewayFrontendIPConfig ` -Name "gateway-public-ip" -PublicIPAddress $appGatewayExternalIP $fipconfig02 = New-AzApplicationGatewayFrontendIPConfig ` -Name "gateway-private-ip" -PrivateIPAddress $appGatewayInternalIP ` -Subnet $vnet.Subnets[0]
Konfigurálja az Application Gateway tanúsítványait. Ezek segítségével visszafejtik és újra visszafejtik az áthaladó forgalmat.
Feljegyzés
Az Application Gateway támogatja az egyéni TLS-beállítások meghatározását, bizonyos TLS protokollverziók letiltását, valamint a titkosítási csomagok és a beállítások sorrendjének megadását. A konfigurálható TLS-beállításokról a TLS-szabályzat áttekintésében olvashat bővebben.
$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
Hozza létre az Application Gateway HTTP-figyelőit. Rendelje hozzá az előtérbeli IP-konfigurációt, portot és TLS/SSL-tanúsítványokat.
# Public/external listeners $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 # Private/internal listeners $gatewayListenerPrivate = New-AzApplicationGatewayHttpListener -Name "gatewaylistener-private" ` -Protocol "Https" -FrontendIPConfiguration $fipconfig02 -FrontendPort $fp01 ` -SslCertificate $certGateway -HostName $gatewayHostname -RequireServerNameIndication true $portalListenerPrivate = New-AzApplicationGatewayHttpListener -Name "portallistener-private" ` -Protocol "Https" -FrontendIPConfiguration $fipconfig02 -FrontendPort $fp01 ` -SslCertificate $certPortal -HostName $portalHostname -RequireServerNameIndication true $managementListenerPrivate = New-AzApplicationGatewayHttpListener -Name "managementlistener-private" ` -Protocol "Https" -FrontendIPConfiguration $fipconfig02 -FrontendPort $fp01 ` -SslCertificate $certManagement -HostName $managementHostname -RequireServerNameIndication true
Egyéni mintavételek létrehozása az API Management-átjáró
ContosoApi
tartományi végpontja számára. Az elérési út/status-0123456789abcdef
az API Management összes példányán üzemeltetett alapértelmezett állapotvégpont. Állítsa beapi.contoso.net
egyéni mintavételi állomásnévként a TLS/SSL-tanúsítvánnyal való biztonságossá tételéhez.Feljegyzés
A gazdagépnév
contosoapi.azure-api.net
az alapértelmezett proxy gazdagépnév, amely akkor van konfigurálva, ha egy nevesítettcontosoapi
szolgáltatás jön létre a nyilvános Azure-ban.$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
Konfigurálja a háttértanúsítványok megbízható főtanúsítványát. Ez a tanúsítvány ellenőrzi a háttértanúsítványok hitelességét.
$trustedRootCert = New-AzApplicationGatewayTrustedRootCertificate ` -Name "allowlistcert1" -CertificateFile $trustedRootCertCerPath
Konfigurálja az Application Gateway HTTP-háttérrendszer-beállításait, beleértve a háttérkérelmek időtúllépési korlátját, amely után a rendszer megszakítja őket. Ez az érték eltér a mintavétel időtúllépésétől.
$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
Konfiguráljon egy háttérBELI IP-címkészletet minden API Management-végponthoz a megfelelő tartománynév használatával.
$apimGatewayBackendPool = New-AzApplicationGatewayBackendAddressPool -Name "gatewaybackend" ` -BackendFqdns $gatewayHostname $apimPortalBackendPool = New-AzApplicationGatewayBackendAddressPool -Name "portalbackend" ` -BackendFqdns $portalHostname $apimManagementBackendPool = New-AzApplicationGatewayBackendAddressPool -Name "managementbackend" ` -BackendFqdns $managementHostname
Hozzon létre útválasztási szabályokat az application gateway számára az egyszerű útválasztás használatához.
# Public/external gateway rules $gatewayRule = New-AzApplicationGatewayRequestRoutingRule -Name "gatewayrule" ` -RuleType Basic -HttpListener $gatewayListener -BackendAddressPool $apimGatewayBackendPool ` -BackendHttpSettings $apimPoolGatewaySetting -Priority 10 $portalRule = New-AzApplicationGatewayRequestRoutingRule -Name "portalrule" ` -RuleType Basic -HttpListener $portalListener -BackendAddressPool $apimPortalBackendPool ` -BackendHttpSettings $apimPoolPortalSetting -Priority 20 $managementRule = New-AzApplicationGatewayRequestRoutingRule -Name "managementrule" ` -RuleType Basic -HttpListener $managementListener -BackendAddressPool $apimManagementBackendPool ` -BackendHttpSettings $apimPoolManagementSetting -Priority 30 # Private/internal gateway rules $gatewayRulePrivate = New-AzApplicationGatewayRequestRoutingRule -Name "gatewayrule-private" ` -RuleType Basic -HttpListener $gatewayListenerPrivate -BackendAddressPool $apimGatewayBackendPool ` -BackendHttpSettings $apimPoolGatewaySetting -Priority 11 $portalRulePrivate = New-AzApplicationGatewayRequestRoutingRule -Name "portalrule-private" ` -RuleType Basic -HttpListener $portalListenerPrivate -BackendAddressPool $apimPortalBackendPool ` -BackendHttpSettings $apimPoolPortalSetting -Priority 21 $managementRulePrivate = New-AzApplicationGatewayRequestRoutingRule -Name "managementrule-private" ` -RuleType Basic -HttpListener $managementListenerPrivate -BackendAddressPool $apimManagementBackendPool ` -BackendHttpSettings $apimPoolManagementSetting -Priority 31
Tipp.
Módosítás
-RuleType
és útválasztás a fejlesztői portál egyes lapjaihoz való hozzáférés korlátozásához.Konfigurálja az Application Gatewayben a példányok számát és a méretet. Ebben a példában WAF_v2 termékváltozatot használunk az API Management-erőforrás nagyobb biztonsága érdekében.
Használjon legalább két példányt (kapacitást) az éles számítási feladatokhoz. Előfordulhat, hogy csak egy példányt szeretne használni nem gyártási forgatókönyvekhez vagy általános kísérletezéshez. További információ: Azure-alkalmazás Átjáró díjszabása.
$sku = New-AzApplicationGatewaySku -Name "WAF_v2" -Tier "WAF_v2" -Capacity 2
Konfigurálja a WAF módot.
Tipp.
A beállítás és a tűzfalszabályok tesztelése során egy rövid ideig érdemes lehet konfigurálni az "Észlelés" módot, amely figyeli és naplózza a veszélyforrás-riasztásokat, de nem blokkolja a forgalmat. Ezután elvégezheti a tűzfalszabályok frissítését, mielőtt a "Megelőzés" módra vált, amely blokkolja a szabályok által észlelt behatolásokat és támadásokat.
$config = New-AzApplicationGatewayWebApplicationFirewallConfiguration -Enabled $true -FirewallMode "Prevention"
Mivel jelenleg a TLS 1.0 az alapértelmezett, állítsa be az application gatewayt a legutóbbi TLS 1.2-szabályzat egyikének használatára.
$policy = New-AzApplicationGatewaySslPolicy -PolicyType Predefined -PolicyName AppGwSslPolicy20220101
Application Gateway létrehozása
Hozzon létre egy Application Gatewayt az előző lépésekben szereplő összes konfigurációs objektummal. Egy példány létrehozása 15 percet is igénybe vehet.
$appgw = New-AzApplicationGateway ` -Name $appgwName ` -ResourceGroupName $resGroupName ` -Location $location ` -Sku $sku ` -SslPolicy $policy ` -SslCertificates $certGateway, $certPortal, $certManagement ` -TrustedRootCertificate $trustedRootCert ` -BackendAddressPools $apimGatewayBackendPool, $apimPortalBackendPool, $apimManagementBackendPool ` -BackendHttpSettingsCollection $apimPoolGatewaySetting, $apimPoolPortalSetting, $apimPoolManagementSetting ` -GatewayIpConfigurations $gipconfig ` -FrontendIpConfigurations $fipconfig01, $fipconfig02 ` -FrontendPorts $fp01 ` -HttpListeners $gatewayListener, $portalListener, $managementListener, $gatewayListenerPrivate, $portalListenerPrivate, $managementListenerPrivate ` -RequestRoutingRules $gatewayRule, $portalRule, $managementRule, $gatewayRulePrivate, $portalRulePrivate, $managementRulePrivate ` -Probes $apimGatewayProbe, $apimPortalProbe, $apimManagementProbe ` -WebApplicationFirewallConfig $config
Ellenőrizze az API Management háttérrendszer állapotának állapotát.
Get-AzApplicationGatewayBackendHealth -Name $appgwName -ResourceGroupName $resGroupName
Győződjön meg arról, hogy az egyes háttérkészletek állapota kifogástalan. Ha nem kifogástalan háttérrendszert vagy ismeretlen állapotú háttérrendszert kell elhárítania, olvassa el az Application Gateway háttérállapot-problémáinak hibaelhárításával foglalkozó témakört.
DNS-rekordok létrehozása az API Management-végpontok internetről való eléréséhez
Az Application Gateway létrehozása után konfigurálja a kommunikációt az API Managementtel az internetről. Olyan DNS A-rekordokat hozhat létre, amelyek megfeleltetik az Application Gateway statikus nyilvános IP-címére konfigurált API Management-végpontok állomásneveit. Ebben a cikkben a gazdagépek nevei a következőkapi.contoso.net
: és portal.contoso.net
management.contoso.net
.
Csatlakozás tivitás ellenőrzése
Gyors tesztelés céljából fontolja meg ideiglenesen a számítógép gazdagépfájljának módosítását olyan bejegyzésekkel, amelyek az Application Gateway nyilvános IP-címét az API Management végpont gazdagépneveihez rendelik:
- Módosítsa a gazdagépfájlokat. Ha például az Application Gateway nyilvános IP-címe,
172.203.129.101
a bejegyzés lehet172.203.129.101 api.contoso.net
. - Végezzen curl-parancsot az API Management állapotvégpontján (ugyanazzal az elérési úttal, amelyet korábban az állapotadat-mintavételhez használt):
curl -v https://api.contoso.net/status-0123456789abcdef
Ennek egy200 Service Operational
állapotot kell visszaadnia, amely az API Managementtel az Application Gatewayen keresztüli sikeres kommunikációt jelzi.
DNS-szempontok
Az Application Gateway mostantól privát és nyilvános útvonalakat is használ. Ugyanezek a tartományok és portok használata felosztásos DNS-helyzetet hoz létre, amelyben egy külső DNS-feloldót úgy kell beállítani, hogy az az application gateway külső IP-címére legyen feloldva api.contoso.net
, míg egy belső DNS-feloldónak ugyanazt a tartományt kell feloldani az Application Gateway belső IP-címére. Ez a beállítás előnye, hogy az alkalmazásoknak nem kell tartományt vagy portot módosítaniuk az alkalmazások és API-k belső vagy külső célzásához. A célzás felelőssége megfelelően halasztható a DNS-feloldókra.
Összegzés
A virtuális hálózaton konfigurált API Management egyetlen átjárófelületet biztosít az összes konfigurált API-hoz, függetlenül attól, hogy azok a helyszínen vagy a felhőben vannak-e üzemeltetve. Az Application Gateway és az API Management integrálása lehetővé teszi, hogy az egyes API-k szelektíven elérhetők legyenek az interneten. Az integráció egy WAF-ot is biztosít az API Management-példány előtérként.
Következő lépések
Beállítás Azure Resource Manager-sablonnal
További információ az Application Gatewayről:
További információ az API Managementről és a virtuális hálózatokról: