Megosztás a következőn keresztül:


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ítottproxy-szolgáltatásként működik, és ajánlatai között az Azure Web Application Firewall (WAF) is megtalálható.

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 kezdőzóna gyorsí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. Az első lépésekhez tekintse meg Az Azure PowerShell telepítése 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 még nem rendelkezik Azure-fiókkal, első lépésként hozzon létre egy ingyenes fiókot.

  • Diplomák

    • Az API Management egyéni gazdagépneveihez tartozó személyes információcserélő fájlok (PFX-fájlok): az átjáró, a fejlesztői portál és a 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óért lásd: 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. Létrehozhat egy API Management-példányt, és üzembe helyezheti egy Azure-beli virtuális hálózaton. 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.

Az URL-útvonalat ábrázoló diagram.

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ő rendelkezik egy előtérporttal, egy protokollal (HTTP vagy HTTPS, ezek az értékek megkülönböztetik a kis- és nagybetűket), valamint a Transport Layer Security (TLS) tanúsítványnévvel (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ő host fejléccel rendelkező kérésekre válaszol, így az alapértelmezett ellenőrzések nem sikerülnek. 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épneveknek az Application Gateway elsődleges IP-címére való megtérképezéséhez. Ez a leképezés biztosítja, hogy a Host fejléc és az API Management részére 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 fel kell tárnia a v2 konfigurációs végpontját a saját üzemeltetésű átjárónak, 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, 942370 felügyeleti mód esetén
  • 942200, 942260, 942370, 942430942440 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 = "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"      # 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:

  1. Jelentkezzen be az Azure-ba.

    Connect-AzAccount
    
  2. Hitelesítés a hitelesítő adatokkal.

  3. Válassza ki a kívánt előfizetést.

    Get-AzSubscription -Subscriptionid $subscriptionId | Select-AzSubscription
    
  4. 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.

  1. Á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
    
  2. 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
    
  3. Hozzon létre egy hálózati biztonsági csoportot (NSG) és NSG-szabályokat az API Management alhálózathoz. Az API Management 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
    
  4. 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"
    
  5. 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"
    
  6. Hozzon létre egy vnet-contoso nevű virtuális hálózatot. Használja a 10.0.0.0/16 előtagot 10.0.0.0/24 és 10.0.1.0/24 alhálózatokkal.

    $vnet = New-AzVirtualNetwork -Name "vnet-contoso" -ResourceGroupName $resGroupName `
      -Location $location -AddressPrefix "10.0.0.0/16" -Subnet $appGatewaySubnet,$apimSubnet
    
  7. 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.

  1. Az API Managementhez egyedi DomainNameLabelnyilvános IP-cím szükséges.

    $apimPublicIpAddressId = New-AzPublicIpAddress -ResourceGroupName $resGroupName -name "pip-apim" -location $location `
        -AllocationMethod Static -Sku Standard -Force -DomainNameLabel $apimDomainNameLabel
    
  2. 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
    
  3. 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:

  1. 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, és management.contoso.net használatát mutatjuk be.

    $certGatewayPwd = ConvertTo-SecureString -String $gatewayCertPfxPassword -AsPlainText -Force
    $certPortalPwd = ConvertTo-SecureString -String $portalCertPfxPassword -AsPlainText -Force
    $certManagementPwd = ConvertTo-SecureString -String $managementCertPfxPassword -AsPlainText -Force
    
  2. 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:

  1. 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
    
  2. Hozzon létre A-rekordokat az egyéni tartomány gazdagépneveihez, amelyek az API-kezelőfelület 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.

  1. 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
    
  2. 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
    
  3. 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]
    
  4. Konfigurálja az Application Gateway tanúsítványait. Ezeket arra használják, hogy dekódolják majd újrakódolják 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
    
  5. Hozza létre az Application Gateway HTTP-figyelőit. Rendelje hozzá az előtérbeli IP-konfigurációt, portot és a TLS/SSL-tanúsítványokat hozzájuk.

    # 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
    
  6. Egyéni mintavételek létrehozása az API Management-átjáró ContosoApi tartományi végpontja számára. Az /status-0123456789abcdef elérési út egy alapértelmezett egészségügyi végpont, amely az API Management összes példányán üzemeltetett. Állítsa be api.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 contosoapi nevű szolgáltatás kerül létrehozásra 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
    
  7. Konfigurálja a kiszolgálói tanú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
    
  8. 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
    
  9. 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
    
  10. Hozzon létre útválasztási szabályokat az alkalmazáskiszolgáló számára az alapvető ú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
    

    Tanács.

    A -RuleType módosítása és az útválasztás megváltoztatása a fejlesztői portál bizonyos oldalaihoz való hozzáférés korlátozása érdekében.

  11. Konfigurálja az alkalmazás átjáró példányszámát és méretét. 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 (Capacity) 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
    
  12. Konfigurálja a WAF módot.

    Tanács.

    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"
    
  13. 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

  1. 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
    
  2. 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ércsoportok állapota egészséges. Ha egy nem megfelelő állapotú háttérrendszer vagy egy ismeretlen állapotú háttérrendszer hibáit kell elhárítania, olvassa el az Application Gateway háttérrendszerének állapotproblémáival kapcsolatos hibaelhárítás című 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. Hozzon létre DNS A-rekordokat, amelyek hozzárendelik az API Management végpont állomásneveit, amelyeket korábban konfigurált, az Application Gateway statikus nyilvános IP-címéhez. Ebben a cikkben például a gazdagépnevek a következők: api.contoso.net, portal.contoso.net és management.contoso.net.

Kapcsolat 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:

  1. Módosítsa a host fájlokat. Ha például az Application Gateway nyilvános IP-címe 172.203.129.101, a bejegyzés lehet 172.203.129.101 api.contoso.net.
  2. 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 egy 200 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 egy felosztott DNS-helyzetet hoz létre, amelyben a külső DNS-feloldót úgy kell beállítani, hogy az az alkalmazásátjáró külső IP-címére oldódjon fel, míg a belső DNS-feloldónak ugyanezt a tartományt kell az alkalmazásátjáró belső IP-címére feloldania. 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ó emellett egy WAF-ot is biztosít védőrétegként az API Management-példány számára.