Szerkesztés

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


Az Azure Spring Apps felfedése fordított proxyn keresztül

Azure Spring Apps
Azure Application Gateway
Azure Front Door

Amikor alkalmazásait vagy mikroszolgáltatásait az Azure Spring Appsben üzemelteti, nem mindig szeretné közvetlenül közzétenni őket az interneten. Érdemes lehet inkább egy fordított proxyn keresztül elérhetővé tenni őket. Ez a megközelítés lehetővé teszi, hogy egy szolgáltatást az alkalmazások elé helyezzen. A szolgáltatás olyan átfogó funkciókat definiálhat, mint a webalkalmazási tűzfal (WAF) funkciói, amelyekkel biztonságossá teheti az alkalmazásokat, a terheléselosztást, az útválasztást, a kérelmek szűrését és a sebességkorlátozást.

Amikor olyan gyakori fordított proxyszolgáltatást helyez üzembe, mint a Azure-alkalmazás Gateway vagy az Azure Front Door az Azure Spring Apps előtt, győződjön meg arról, hogy alkalmazásai csak fordított proxyn keresztül érhetőek el. Ez a védelem segít megakadályozni, hogy a rosszindulatú felhasználók megkerüljék a WAF-ot, vagy megkerüljék a szabályozási korlátokat.

Az Azure DDoS Protection alkalmazástervezési ajánlott eljárásokkal kombinálva továbbfejlesztett DDoS-kockázatcsökkentési funkciókat biztosít, hogy nagyobb védelmet nyújtson a DDoS-támadásokkal szemben. Az Azure DDOS Protectiont minden peremhálózaton engedélyeznie kell.

Ez a cikk azt ismerteti, hogyan kényszerítheti ki a hozzáférési korlátozásokat, hogy az Azure Spring Appsben üzemeltetett alkalmazások csak fordított proxyszolgáltatáson keresztül legyenek elérhetők. A korlátozások kikényszerítésének ajánlott módja az Azure Spring Apps-példány üzembe helyezésétől és a használt fordított proxytól függ. A különböző szempontokat érdemes figyelembe venni attól függően, hogy virtuális hálózaton belül vagy azon kívül telepít. Ez a cikk négy forgatókönyvről nyújt tájékoztatást.

  • Az Azure Spring Apps üzembe helyezése egy virtuális hálózaton belül, és az alkalmazások privát elérése a hálózaton belülről.

    • Ön szabályozhatja azt a virtuális hálózatot, amelyben az alkalmazások futnak. Natív Azure-hálózati funkciók, például hálózati biztonsági csoportok (NSG-k) használatával zárolhatja a hozzáférést, hogy csak a fordított proxyt engedélyezze.

    • Alkalmazásait nyilvánosan elérhetővé teheti az interneten az Azure-alkalmazás Gateway használatával, majd a zároláshoz alkalmazza a megfelelő hozzáférési korlátozásokat. Ezt a megközelítést a cikk későbbi, 1 . forgatókönyve ismerteti.

    • Nem használhatja közvetlenül az Azure Front Doort, mert nem éri el az Azure Spring Apps-példányt a privát virtuális hálózatában. Az Azure Front Door csak nyilvános IP-címen vagy privát végpontot használó szolgáltatásokon keresztül tud csatlakozni a háttérrendszerekhez. Ha az Azure Spring Apps többrégiós üzembe helyezése globális terheléselosztást igényel, továbbra is közzéteheti Azure Spring Apps-példányait az Application Gatewayen keresztül. A forgatókönyv eléréséhez az Azure Front Doort az Application Gateway elé kell helyeznie. Ezt a megközelítést a cikk későbbi, 2 . forgatókönyve ismerteti.

  • Ha végpontot rendel hozzájuk, helyezze üzembe az Azure Spring Appst egy virtuális hálózaton kívül, és tegye közzé az alkalmazásait közvetlenül az interneten.

    • Nem szabályozza a hálózatot, és nem használhat NSG-ket a hozzáférés korlátozására. Ahhoz, hogy csak a fordított proxy férhessen hozzá az alkalmazásokhoz, magában az Azure Spring Appsben is meg kell adni egy megközelítést.

    • Mivel az alkalmazások nyilvánosan elérhetők, fordított proxyként használhatja az Application Gatewayt vagy az Azure Front Doort. Az Application Gateway megközelítését a cikk későbbi, 3 . forgatókönyve ismerteti. Az Azure Front Door megközelítését a cikk 4 . forgatókönyve ismerteti.

    • Szükség szerint mindkét megközelítés kombinációját használhatja. Ha az Application Gatewayt és az Azure Front Doort is használja, használja ugyanazokat a hozzáférési korlátozásokat a 2. forgatókönyvben használt két fordított proxy között.

Megjegyzés:

Az Application Gateway vagy az Azure Front Door helyett más fordított proxyszolgáltatásokat is használhat. Az Azure-beli virtuális hálózaton ( például az Azure API Managementen) alapuló regionális szolgáltatások esetében az útmutató hasonló az Application Gateway útmutatásához. Ha nem Azure-szolgáltatásokat használ, az útmutató hasonló az Azure Front Door útmutatójához.

Forgatókönyvek összehasonlítása

Az alábbi táblázat az Azure Spring Apps négy fordított proxykonfigurációs forgatókönyvének rövid összehasonlítását ismerteti. Az egyes forgatókönyvekkel kapcsolatos részletes információkért tekintse meg a cikk megfelelő szakaszát.

Eset Üzembe helyezés Szolgáltatások Konfiguráció
1 A virtuális hálózaton belül Application Gateway – Minden közzéteendő alkalmazáshoz rendeljen hozzá egy végpontot, és képezze le a megfelelő egyéni tartományt vagy tartományokat az alkalmazáshoz.
– Az Application Gateway háttérkészletéhez használja az egyes alkalmazások hozzárendelt végpontját.
– A szolgáltatás futtatókörnyezeti alhálózatában adjon hozzá egy NSG-t, amely csak az Application Gateway alhálózatából, az alkalmazások alhálózatából és az Azure-terheléselosztóból engedélyezi a forgalmat. Tiltsa le az összes többi forgalmat.
2 A virtuális hálózaton belül Azure Front Door és Application Gateway – Korlátozza az Application Gateway és az Azure Spring Apps közötti hozzáférést az 1. forgatókönyvben ismertetett megközelítéssel.
– Az Application Gateway alhálózatán hozzon létre egy NSG-t, amely csak a AzureFrontDoor.Backend szolgáltatáscímkével rendelkező forgalmat engedélyezi.
– Hozzon létre egy egyéni WAF-szabályt az Application Gatewayben annak ellenőrzéséhez, hogy a X-Azure-FDID HTTP-fejléc tartalmazza-e az Adott Azure Front Door-példány azonosítóját.
3 Külső virtuális hálózat Application Gateway és Spring Cloud Gateway – A Spring Cloud Gateway használatával közzéteheti háttéralkalmazásait. Csak a Spring Cloud Gateway-alkalmazáshoz van szükség hozzárendelt végpontra. Az összes háttéralkalmazás egyéni tartományait erre az egyetlen Spring Cloud Gateway-alkalmazásra kell leképezni.
– Az Application Gateway háttérkészletéhez használja a Spring Cloud Gateway alkalmazás hozzárendelt végpontját.
– A Spring Cloud Gatewayben állítsa be az XForwarded Remote Addr útvonal-predikátumot az Application Gateway nyilvános IP-címére.
- Ha szeretné, a Spring Framework-alkalmazásokban állítsa az alkalmazástulajdonságot a server.forward-headers-strategy következőre FRAMEWORK: .
4 Külső virtuális hálózat Azure Front Door a Spring Cloud Gatewayrel – A Spring Cloud Gateway használatával közzéteheti háttéralkalmazásait. Csak a Spring Cloud Gateway-alkalmazáshoz van szükség hozzárendelt végpontra. Az összes háttéralkalmazás egyéni tartományait erre az egyetlen Spring Cloud Gateway-alkalmazásra kell leképezni.
- Az Azure Front Door háttérkészletéhez vagy forrásához használja a Spring Cloud Gateway alkalmazás hozzárendelt végpontját.
– A Spring Cloud Gatewayben állítsa be az útvonal-predikátumot az XForwarded Remote Addr Azure Front Door összes kimenő IP-tartományára, és tartsa naprakészen ezt a beállítást. Állítsa be az Header útvonal-predikátumot, hogy a X-Azure-FDID HTTP-fejléc tartalmazza-e az egyedi Azure Front Door-azonosítót.
- Ha szeretné, a Spring Framework-alkalmazásokban állítsa az alkalmazástulajdonságot a server.forward-headers-strategy következőre FRAMEWORK: .

Megjegyzés:

A konfiguráció beállítása után fontolja meg az Azure Policy vagy az erőforrás-zárolások használatát a véletlen vagy rosszindulatú módosítások elkerülése érdekében, amelyek lehetővé teszik a fordított proxy megkerülését és az alkalmazás közvetlen közzétételét. Ez a védelem csak az Azure-erőforrásokra (pontosabban az NSG-kre) vonatkozik, mivel az Azure Spring Appsben a konfiguráció nem látható az Azure vezérlősíkon.

Üzembe helyezés a virtuális hálózaton belül

Amikor az Azure Spring Apps virtuális hálózaton van üzembe helyezve, két alhálózatot használ:

  • A megfelelő hálózati erőforrásokat tartalmazó szolgáltatás-futtatókörnyezeti alhálózat
  • A kódot üzemeltető alkalmazások alhálózata

Mivel a szolgáltatás futtatókörnyezeti alhálózata tartalmazza az alkalmazásokhoz való csatlakozás terheléselosztóját, ezen a szolgáltatás futtatókörnyezeti alhálózatán meghatározhat egy NSG-t, amely csak a fordított proxyból érkező forgalmat engedélyezi. Ha letiltja az összes többi forgalmat, a virtuális hálózatban senki sem férhet hozzá az alkalmazásokhoz a fordított proxy használata nélkül.

Fontos

Ha csak a fordított proxyra korlátozza az alhálózati hozzáférést, az olyan funkciók hibáit okozhatja, amelyek az ügyféleszköz és az alkalmazás közötti közvetlen kapcsolattól függenek, például a naplóstreameléstől. Fontolja meg az NSG-szabályok hozzáadását kifejezetten ezekhez az ügyféleszközökhöz, és csak akkor, ha konkrét közvetlen hozzáférésre van szükség.

A fordított proxyn keresztül elérhetővé tenni kívánt összes alkalmazásnak rendelkeznie kell egy hozzárendelt végponttal, hogy a fordított proxy elérhesse az alkalmazást a virtuális hálózaton. Minden alkalmazás esetében le kell képeznie azokat az egyéni tartományokat is, amelyet használ, hogy ne bírálja felül a HTTP-fejlécet Host a fordított proxyban, és ne hagyja érintetlenül az eredeti gazdagépnevet. Ez a módszer elkerüli az olyan problémákat, mint a hibás cookie-k vagy az átirányítási URL-címek, amelyek nem működnek megfelelően. További információ: Gazdagépnév megőrzése.

Megjegyzés:

Másik lehetőségként (vagy a mélységi védelem érdekében, esetleg az NSG mellett) követheti az útmutatást, amikor az Azure Spring Apps a virtuális hálózaton kívül van üzembe helyezve. Ez a szakasz bemutatja, hogyan érhetők el a hozzáférési korlátozások általában a Spring Cloud Gateway használatával, ami a háttéralkalmazásokra is hatással van, mivel már nincs szükségük hozzárendelt végpontra vagy egyéni tartományra.

1. forgatókönyv: Az Application Gateway használata fordított proxyként

Az 1. forgatókönyv azt ismerteti, hogyan teheti közzé alkalmazásait nyilvánosan az interneten az Application Gateway használatával, majd hogyan alkalmazhatja a zároláshoz szükséges hozzáférési korlátozásokat.

Az alábbi ábra az 1. forgatókönyv architektúráit mutatja be:

Diagram that shows the use of Azure Application Gateway with Azure Spring Apps in a virtual network.

Töltse le az architektúra Visio-fájlját.

Amikor az Application Gateway az Azure Spring Apps-példány elé kerül, a Spring Cloud Gateway alkalmazás hozzárendelt végpontját használja háttérkészletként. Egy példavégpont: myspringcloudservice-myapp.private.azuremicroservices.io. A végpont egy privát IP-címre oldódik fel a szolgáltatás futtatókörnyezeti alhálózatában. Ezért a hozzáférés korlátozásához egy NSG-t a szolgáltatás futtatókörnyezeti alhálózatán helyezhet el a következő bejövő biztonsági szabályokkal (a legalacsonyabb prioritást biztosítva a Megtagadási szabálynak):

Action Forrás típusa Forrásérték Protokoll Célporttartományok
Engedélyezés IP-címek Az Application Gateway alhálózatának privát IP-tartománya (például 10.1.2.0/24). TCP 80, 443 (vagy szükség szerint más portok)
Engedélyezés IP-címek Az Azure Spring Apps alkalmazásalhálózatának privát IP-tartománya (például 10.1.1.0/24). TCP *
Engedélyezés Szolgáltatáscímke AzureLoadBalancer Any *
Deny Szolgáltatáscímke Any Any *

Az 1. forgatókönyv konfigurációja biztosítja, hogy a szolgáltatás futtatókörnyezeti alhálózata csak a következő forrásokból engedélyezze a forgalmat:

  • A dedikált Application Gateway-alhálózat
  • Az alkalmazások alhálózata (kétirányú kommunikáció szükséges a két Azure Spring Apps-alhálózat között.)
  • Az Azure Load Balancer (amely egy általános Azure-platformkövetelmény)

Minden más forgalom le van tiltva.

2. forgatókönyv: Az Azure Front Door és az Application Gateway használata fordított proxyként

Ahogy korábban már említettük, az Azure Front Door nem helyezhető közvetlenül az Azure Spring Apps elé, mert az nem érhető el a privát virtuális hálózatba. (Az Azure Front Door Standard vagy a Premium képes csatlakozni egy virtuális hálózat privát végpontjaihoz, de az Azure Spring Apps jelenleg nem kínál privát végponttámogatást.) Ha továbbra is az Azure Front Doort szeretné használni, például globális terheléselosztást szeretne igényelni a különböző Azure-régiókban található Azure Spring Apps több példánya között, akkor is közzéteheti alkalmazásait az Application Gatewayen keresztül. A forgatókönyv eléréséhez az Azure Front Doort az Application Gateway elé kell helyeznie.

Az alábbi ábra a 2. forgatókönyv architektúrájának ábrázolása:

Diagram that shows the use of Azure Front Door and Azure Application Gateway with Azure Spring Apps in a virtual network.

Töltse le az architektúra Visio-fájlját.

A 2. forgatókönyv konfigurációja az Application Gateway és az Azure Spring Apps közötti hozzáférési korlátozásokat az 1. forgatókönyvhöz hasonlóan valósítja meg. A megfelelő szabályokkal helyezzen el egy NSG-t a szolgáltatás futtatókörnyezeti alhálózatán.

A 2. forgatókönyvben azt is biztosítania kell, hogy az Application Gateway csak az Azure Front Door-példányból érkező forgalmat fogadja el. Az Azure Front Door dokumentációja bemutatja , hogyan zárolhatja a háttérrendszerhez való hozzáférést, hogy csak az Azure Front Door forgalmát engedélyezze. Ha a háttérrendszer Application Gateway, a következő módon valósíthatja meg ezt a korlátozást:

Üzembe helyezés a virtuális hálózaton kívül

Ha az Azure Spring Appst egy virtuális hálózaton kívül helyezi üzembe, nem használhat natív Azure-hálózati funkciókat, mert nem szabályozza a hálózatot. Ehelyett magukra az alkalmazásokra kell alkalmazni a szükséges hozzáférési korlátozásokat, hogy csak a fordított proxyról engedélyezze a forgalmat. Ha sok alkalmazással rendelkezik, ez a megközelítés összetettebbé teheti az alkalmazást, és fennáll a veszélye annak, hogy nem minden alkalmazás konfigurálható megfelelően.

A Spring Cloud Gateway használata az alkalmazások elérhetővé tételéhez és védelméhez

Ha el szeretné távolítani a hozzáférés-vezérlés felelősségét az egyes alkalmazások fejlesztőitől, horizontális korlátozásokat alkalmazhat a Spring Cloud Gateway használatával. A Spring Cloud Gateway egy gyakran használt Spring-projekt, amelyet ugyanúgy üzembe helyezhet az Azure Spring Appsben, mint bármely más alkalmazásban. A Spring Cloud Gateway használatával saját alkalmazásait privátan tarthatja az Azure Spring Apps-példányon belül, és meggyőződhet arról, hogy csak a megosztott Spring Cloud Gateway-alkalmazáson keresztül érhető el. Ezt követően a Spring Cloud Gateway beépített funkciója, az útvonal-predikátumok használatával konfigurálhatja ezt az alkalmazást a szükséges hozzáférési korlátozásokkal. Az útvonal-predikátumok a bejövő HTTP-kérés különböző attribútumait használhatják annak megállapításához, hogy a kérést a háttéralkalmazáshoz irányítják vagy elutasítják. A predikátum olyan attribútumokat használhat, mint az ügyfél IP-címe, a kérelem metódusa vagy elérési útja, HTTP-fejlécek stb.

Fontos

Ha ilyen módon helyezi el a Spring Cloud Gatewayt a háttéralkalmazások elé, az összes egyéni tartományt le kell képeznie a Spring Cloud Gateway alkalmazásra a háttéralkalmazások helyett. Ellenkező esetben az Azure Spring Apps nem irányítja át először a bejövő forgalmat a Spring Cloud Gatewayre, amikor kérés érkezik bármelyik egyéni tartományhoz.

Ez a megközelítés feltételezi, hogy a fordított proxy nem bírálja felül a HTTP-fejlécet Host , és érintetlenül tartja az eredeti gazdagépnevet. További információ: Gazdagépnév megőrzése .

Ezt a mintát gyakran használják. A cikk alkalmazásában feltételezzük, hogy az alkalmazásokat a Spring Cloud Gatewayen keresztül teszi elérhetővé. Azt várjuk, hogy az útvonal-predikátumokkal állítsa be a szükséges hozzáférési korlátozásokat, hogy csak a fordított proxytól érkező kérések legyenek engedélyezettek. Még ha nem is használja a Spring Cloud Gatewayt, ugyanazok az általános alapelvek érvényesek. Azonban saját kérésszűrési képességeket kell létrehoznia az alkalmazásokban ugyanazon X-Forwarded-For HTTP-fejléc alapján, amelyet a cikk későbbi részében tárgyaltak.

Megjegyzés:

A Spring Cloud Gateway maga is egy fordított proxy, amely olyan szolgáltatásokat biztosít, mint az útválasztás, a kérelmek szűrése és a sebességkorlátozás. Ha ez a szolgáltatás biztosítja a forgatókönyvhöz szükséges összes funkciót, előfordulhat, hogy nincs szükség további fordított proxyra, például az Application Gatewayre vagy az Azure Front Doorra. A többi Azure-szolgáltatás használatának leggyakoribb oka az általuk biztosított WAF-funkciók vagy az Azure Front Door által kínált globális terheléselosztási képességek.

A Spring Cloud Gateway működésének ismertetése a jelen cikk hatókörén kívül esik. Ez egy rendkívül rugalmas szolgáltatás, amelyet kóddal vagy konfigurációval testre szabhat. Az egyszerűség érdekében ez a cikk csak egy tisztán konfigurációalapú megközelítést ír le, amely nem igényel kódmódosítást. Ezt a megközelítést úgy valósíthatja meg, hogy a hagyományos application.properties vagy application.yml a fájlt az üzembe helyezett Spring Cloud Gateway-alkalmazásba is beépíti. A módszert az Azure Spring Apps Config-kiszolgálójának használatával is implementálhatja, amely a konfigurációs fájlt egy Git-adattárba külsővé teszi. Az alábbi példákban YAML-szintaxissal implementáljuk a application.yml megközelítést, de az egyenértékű application.properties szintaxis is működik.

Kérelmek átirányítása az alkalmazásokhoz

Alapértelmezés szerint, ha az Azure Spring Appsben az alkalmazáshoz nincs hozzárendelve végpont, vagy egy egyéni tartomány van konfigurálva hozzá, kívülről nem érhető el. Amikor egy alkalmazás regisztrálja magát a Spring Cloud Service regisztrációs adatbázisában, a Spring Cloud Gateway felderítheti az alkalmazást, hogy útválasztási szabályokkal továbbíthassa a forgalmat a megfelelő célalkalmazásba.

Ennek eredményeképpen az egyetlen alkalmazás, amelyhez hozzá kell rendelni egy végpontot az Azure Spring Appsben, az a Spring Cloud Gateway-alkalmazás. Ez a végpont kívülről érhető el. Ne rendeljen végpontot más alkalmazásokhoz. Ellenkező esetben az alkalmazások közvetlenül, nem pedig a Spring Cloud Gatewayen keresztül érhetőek el, ami lehetővé teszi a fordított proxy megkerülését.

Az összes regisztrált alkalmazásnak a Spring Cloud Gatewayen keresztüli felfedésére a DiscoveryClient útvonaldefiníciós lokátort használhatja az alábbiak szerint:

spring:
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true
          predicates:
          - Path="/"+serviceId+"/**" # Include the Path predicate to retain default behavior
          - (...)

Azt is megteheti, hogy az alkalmazásspecifikus útvonalak meghatározásával szelektíven tesz elérhetővé bizonyos alkalmazásokat a Spring Cloud Gatewayen keresztül:

spring:
  cloud:
    gateway:
      routes:
      - id: my_app1_route
        uri: lb://MY-APP1
        filters:
        - RewritePath=/myapp1(?<segment>/?.*), $\{segment}
        predicates:
        - (...)

A felderítési lokátor megközelítésével és az explicit útvonaldefiníciókkal az útválasztási predikátumokkal elutasíthatja az érvénytelen kéréseket. Ebben az esetben ezt a funkciót arra használjuk, hogy letiltsuk azOkat a kéréseket, amelyek nem a várt fordított proxyból származnak, amely az Azure Spring Apps előtt található.

Hozzáférés korlátozása az X-Forwarded-for HTTP fejléc használatával

Amikor üzembe helyez egy alkalmazást az Azure Spring Appsben, a HTTP-ügyfél vagy a fordított proxy nem csatlakozik közvetlenül az alkalmazáshoz. A hálózati forgalom először egy belső bejövőforgalom-vezérlőn megy keresztül.

Megjegyzés:

Ez a megközelítés azt jelenti, hogy három vagy akár négy fordított proxyval rendelkezik a kérelemfolyamatban, mielőtt az alkalmazást az alábbi forgatókönyvekben érné el. Ezek a lehetséges fordított proxyk: Az Azure Front Door és/vagy az Application Gateway, a bejövőforgalom-vezérlő és a Spring Cloud Gateway-alkalmazás.

Az extra szolgáltatás miatt a közvetlen hálózati ügyfél IP-címe mindig egy belső Azure Spring Apps-összetevő. Az IP-cím soha nem olyan logikai ügyfél, mint az alkalmazás meghívására várt fordított proxy. A hozzáférési korlátozásokhoz nem használhatja az ügyfél IP-címét. A Spring Cloud Gateway beépített RemoteAddr útvonal-predikátumát sem használhatja a kérésszűréshez, mert alapértelmezés szerint az ügyfél IP-címét használja.

Szerencsére az Azure Spring Apps mindig hozzáadja a logikai ügyfél IP-címét a X-Forwarded-For kérelem HTTP-fejlécéhez az alkalmazásba. A fejléc utolsó (jobb oldali) értéke X-Forwarded-For mindig a logikai ügyfél IP-címét tartalmazza.

A kérések fejlécen alapuló X-Forwarded-For szűréséhez használhatja a beépített útvonal-predikátumotXForwarded Remote Addr. Ez a predikátum lehetővé teszi a fordított proxy IP-címeinek vagy IP-tartományainak listáját, amelyek a jobb szélső értékként engedélyezettek.

Megjegyzés:

Az XForwarded Remote Addr útvonal-predikátumhoz a Spring Cloud Gateway 3.1.1-es vagy újabb verziója szükséges. A 3.1.1-es verzió a Spring Cloud 2021.0.1 kiadási vonaton érhető el. Ha nem tud néhány kódmódosítást végrehajtani a Spring Cloud Gateway-alkalmazásban az RemoteAddr útvonal-predikátum által az ügyfél IP-címének meghatározásához. Ugyanazt az eredményt érheti el, mint az XForwarded Remote Addr útvonal-predikátummal. Konfigurálja az RemoteAddr útvonal-predikátumot az utóbbi maxTrustedIndex használatára XForwardedRemoteAddressResolver és konfigurálására a következő 1értékkel: . Ez a módszer úgy konfigurálja a Spring Cloud Gateway-alkalmazást, hogy a X-Forwarded-For fejléc jobb szélső értékét használja logikai ügyfél IP-címeként.

Az alkalmazás konfigurálása a megfelelő állomásnév és a kérés URL-címének megtekintéséhez

A Spring Cloud Gateway használatakor fontos tényezőt kell figyelembe venni. A Spring Cloud Gateway a kimenő kérés HTTP-fejlécét Host az alkalmazáspéldány belső IP-címére állítja, például Host: 10.2.1.15:1025. A kérésnek az alkalmazáskód által látott állomásneve már nem a böngésző által küldött kérés eredeti állomásneve, például contoso.com. Bizonyos esetekben ez az eredmény olyan problémákhoz vezethet, mint a hibás cookie-k vagy az átirányítási URL-címek nem működnek megfelelően. Az ilyen típusú problémákról és a fordított proxyszolgáltatás, például az Application Gateway vagy az Azure Front Door konfigurálásáról további információt a gazdagépnév megőrzése című témakörben talál.

A Spring Cloud Gateway megadja az eredeti állomásnevet a Forwarded fejlécben. Más fejléceket is beállít, például X-Forwarded-Port, X-Forwarded-Protoígy X-Forwarded-Prefix az alkalmazás felhasználhatja őket az eredeti kérelem URL-címének rekonstruálásához. A Spring Framework-alkalmazásokban ezt a konfigurációt automatikusan elérheti, ha a beállítást FRAMEWORK az server.forward-headers-strategy alkalmazás tulajdonságai között állítja be. (Ne állítsa ezt az értéket a következőre NATIVE: . Ellenkező esetben a rendszer más fejléceket használ, amelyek nem veszik figyelembe a szükséges X-Forwarded-Prefix fejlécet.) További információ: Futtatás előtér-proxykiszolgáló mögött. Ezzel a konfigurációval a HttpServletRequest.getRequestURL metódus figyelembe veszi ezeket a fejléceket, és a böngésző által küldött pontos kérelem URL-címét adja vissza.

Megjegyzés:

Előfordulhat, hogy a Spring Cloud Gatewayben szeretné használni a PreserveHostHeader szűrőt , amely megőrzi az eredeti állomásnevet a kimenő kérésen. Ez a módszer azonban nem működik, mert ez a gazdagépnév már egyéni tartományként van leképezve a Spring Cloud Gateway-alkalmazásban. A végső háttéralkalmazásban nem lehet másodszor leképezni. Ez a konfiguráció hibát okoz HTTP 404 , mert a háttéralkalmazás elutasítja a bejövő kérést. Nem ismeri fel a gazdagép nevét.

3. forgatókönyv: Az Application Gateway használata a Spring Cloud Gateway használatával

A 3. forgatókönyv azt ismerteti, hogyan használhatja az Application Gatewayt fordított proxyként a nyilvánosan elérhető alkalmazásokhoz egy Spring Cloud Gateway-végponton keresztül.

Az alábbi ábra a 3. forgatókönyv architektúrájának ábrázolása:

Diagram that shows the use of Azure Application Gateway with Azure Spring Apps outside of a virtual network.

Töltse le az architektúra Visio-fájlját.

Amikor az Application Gateway az Azure Spring Apps-példány elé kerül, a Spring Cloud Gateway alkalmazás hozzárendelt végpontját használja háttérkészletként. Egy példavégpont: myspringcloudservice-mygateway.azuremicroservices.io. Mivel az Azure Spring Apps virtuális hálózaton kívül van üzembe helyezve, ez az URL-cím nyilvános IP-címre lesz feloldva. Ha a háttérkészlet nyilvános végpont, az Application Gateway az előtérbeli nyilvános IP-címével éri el a háttérszolgáltatást.

Ha csak az Application Gateway-példánytól érkező kérések érik el a Spring Cloud Gatewayt, konfigurálhatja az XForwarded Remote Addr útvonal-predikátumot. Konfigurálja úgy a predikátumot, hogy csak az Application Gateway dedikált nyilvános IP-címéről érkező kéréseket engedélyezze az alábbi példában látható módon:

(...)
predicates:
- XForwardedRemoteAddr="20.103.252.85"

4. forgatókönyv: Az Azure Front Door használata a Spring Cloud Gateway használatával

A 4. forgatókönyv azt ismerteti, hogyan használhatja az Azure Front Doort fordított proxyként a nyilvánosan elérhető alkalmazásokhoz egy Spring Cloud Gateway-végponton keresztül.

Az alábbi diagram a 4. forgatókönyv architektúráit mutatja be:

Diagram that shows the use of Azure Front Door with Azure Spring Apps outside of a virtual network.

Töltse le az architektúra Visio-fájlját.

A 3. forgatókönyvhöz hasonlóan ez a konfiguráció a Spring Cloud Gateway-alkalmazás nyilvános URL-címét használja háttérkészletként vagy forrásként az Azure Front Doorban. Egy példavégpont: https://myspringcloudservice-mygateway.azuremicroservices.io.

Mivel az Azure Front Door egy globális szolgáltatás, amely számos peremhálózati hellyel rendelkezik, számos IP-címet használ a háttérkészlettel való kommunikációhoz. Az Azure Front Door dokumentációja leírja , hogyan zárható le a háttérrendszerhez való hozzáférés, hogy csak az Azure Front Door forgalmát engedélyezze. Ebben a forgatókönyvben azonban nem szabályozhatja azt az Azure-hálózatot, amelyben az alkalmazások üzembe vannak helyezve. Sajnos nem használhatja a szolgáltatáscímkét a AzureFrontDoor.Backend kimenő Azure Front Door IP-címek teljes listájának lekéréséhez, amelyek garantáltan aktuálisak. Ehelyett le kell töltenie az Azure IP-tartományait és szolgáltatáscímkéit, meg kell keresnie a AzureFrontDoor.Backend szakaszt, és át kell másolnia a addressPrefixes tömb összes IP-tartományát az XForwarded Remote Addr útvonal-predikátum konfigurációjába.

Fontos

Az Azure Front Door által használt IP-tartományok változhatnak. A mérvadó Azure IP-tartományok és szolgáltatáscímkék hetente jelennek meg, és rögzítik az IP-tartományok változásait. Annak érdekében, hogy a konfiguráció naprakész maradjon, ellenőrizze hetente az IP-tartományokat, és szükség szerint frissítse a konfigurációt (ideális esetben automatizált módon). Ennek a megközelítésnek a karbantartási többletterhelésének elkerülése érdekében az Azure Spring Appst egy virtuális hálózatban helyezheti üzembe a többi leírt forgatókönyvkel együtt, ha egy NSG-t használ a AzureFrontDoor.Backend szolgáltatáscímkével.

Mivel az Azure Front Door IP-tartományai meg vannak osztva más szervezetekkel, azt is meg kell győződnie arról, hogy csak az adott Azure Front Door-példányhoz való hozzáférést zárolja az X-Azure-FDID egyedit Front Door IDtartalmazó HTTP-fejléc alapján. A hozzáférést az útvonal-predikátum használatával Header korlátozhatja, amely elutasítja a kérést, hacsak egy megadott HTTP-fejléc nem rendelkezik bizonyos értékkel.

Ebben a forgatókönyvben a Spring Cloud Gateway útvonal-predikátum-konfigurációja a következő példához hasonlóan nézhet ki:

(...)
predicates:
- XForwardedRemoteAddr="13.73.248.16/29","20.21.37.40/29","20.36.120.104/29","20.37.64.104/29", ...(and many more)...
- Header="X-Azure-FDID", "e483e3cc-e7f3-4e0a-9eca-5f2a62bde229"

Közreműködők

A Microsoft fenntartja ezt a tartalmat. A következő közreműködő fejlesztette ki az eredeti tartalmat.

Fő szerző:

A nem nyilvános LinkedIn-profilok megtekintéséhez jelentkezzen be a LinkedInbe.

Következő lépések