Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk átfogó útmutatót nyújt egy robusztus és éles üzemre kész infrastruktúra üzembe helyezéséről egy webalkalmazás üzemeltetésének, védelmének, skálázásának és monitorozásának megkönnyítése érdekében az Azure-platformon.
Yelb-üzembe helyezés az AWS-en
Az AWS-en található Yelb-minta webalkalmazás a Bash, az AWS CLI, az eksctl, a kubectl és a Helm használatával van üzembe helyezve. A társminta Bash-szkripteket és YAML-jegyzékeket tartalmaz, amelyekkel automatizálható a Yelb-alkalmazás üzembe helyezése az AWS Elastic Kubernetes Service-ben (EKS). Ez a megoldás bemutatja, hogyan implementálhat egy webalkalmazási tűzfalat az AWS WAF használatával az Amazon Elastic Kubernetes Service -en (EKS) futó webalkalmazások védelmére. A Bash-szkriptekkel EKS-fürtöt hozhat létre, és üzembe helyezheti a Yelb-alkalmazást . A Yelb-webalkalmazás egy Amazon Application Load Balancer (ALB) használatával érhető el a nyilvános interneten, és AWS WAF webes hozzáférés-vezérlési listával (webes ACL) van védve. Részletes útmutatásért lásd: Webalkalmazás portolása az AWS Elastic Kubernetes Service-ből (EKS) az Azure Kubernetes Service-be (AKS).
Yelb-üzembe helyezés az Azure-ban
A következő szakaszokban megtudhatja, hogyan helyezheti üzembe a Yelb példa webalkalmazást egy Azure Kubernetes Service-fürtön (AKS), és hogyan teheti elérhetővé egy ingress vezérlőn, például az NGINX ingress vezérlőn keresztül. A bejövőforgalom-vezérlő szolgáltatás egy belső (vagy privát) terheléselosztón keresztül érhető el, amely az AKS-fürtöt befogadó virtuális hálózaton belüli forgalmat egyensúlyozza. Hibrid forgatókönyv esetén a terheléselosztó előtere egy helyszíni hálózatról érhető el. A belső terheléselosztással kapcsolatos további információkért lásd: Belső terheléselosztó használata az Azure Kubernetes Service-lel (AKS).
A társminta támogatja a felügyelt NGINX bejövőforgalom-vezérlő telepítését az alkalmazás útválasztási bővítményével vagy egy nem felügyelt NGINX bejövő vezérlővel a Helm-diagram használatával. Az NGINX bejövőforgalom-vezérlővel rendelkező alkalmazás-útválasztási bővítmény a következő funkciókat biztosítja:
- A kubernetes NGINX bejövőforgalom-vezérlőn alapuló felügyelt NGINX-bejövő vezérlők egyszerű konfigurálása.
- Integráció az Azure DNS-sel a nyilvános és privát zónakezeléshez.
- SSL-leállítás az Azure Key Vaultban tárolt tanúsítványokkal.
Egyéb konfigurációk esetén:
- DNS- és SSL-konfiguráció
- Alkalmazásútválasztási kiegészítő konfigurációja
- Konfigurálja a belső NGIX bejövőforgalom-vezérlőt az Azure privát DNS-zónához.
A biztonság növelése érdekében a Yelb-alkalmazást egy Azure Application Gateway-erőforrás védi. Ez az erőforrás egy dedikált alhálózaton kerül üzembe helyezésre az AKS fürttel azonos virtuális hálózaton belül, vagy egy társított virtuális hálózaton. Az Azure Web Application Firewall (WAF) biztosítja az Azure Kubernetes Service (AKS) szolgáltatásban üzemeltetett webalkalmazáshoz való hozzáférést, és az Azure Application Gatewayen keresztül teszi elérhetővé a gyakori biztonsági rések és biztonsági rések ellen.
Előfeltételek
- Aktív Azure-előfizetés. Ha nem rendelkezik ilyen fiókkal, a kezdés előtt hozzon létre egy ingyenes Azure-fiókot .
- A TulajdonosAzure beépített szerepkör, vagy a Felhasználói hozzáférés-rendszergazda és a Közreműködő beépített szerepkörök az Azure-fiókjában található előfizetés esetén.
- Az Azure CLI 2.61.0-s vagy újabb verziója. További információ: Az Azure CLI telepítése.
- Az Azure Kubernetes Service (AKS) előzetes verziója.
- jq 1.5-ös vagy újabb verzió.
- Python 3 vagy újabb.
- kubectl 1.21.0-s vagy újabb verzió
- Helm 3.0.0-s vagy újabb verziója
- A Visual Studio Code az egyik támogatott platformra van telepítve a Bicep-bővítménysel együtt.
- Meglévő Azure Key Vault-erőforrás érvényes TLS-tanúsítvánnyal a Yelb-webalkalmazáshoz.
- Meglévő Azure DNS-zóna vagy azzal egyenértékű DNS-kiszolgáló a Yelb-alkalmazás névfeloldáshoz.
Építészet
Ez a minta Bicep-sablonok , Bash-szkriptek és YAML-jegyzékek gyűjteményét tartalmazza egy AKS-fürt létrehozásához, a Yelb-alkalmazás üzembe helyezéséhez, a felhasználói felületI szolgáltatás NGINX bejövőforgalom-vezérlővel való felfedéséhez és az Azure Application Gateway és az Azure Web Application Firewall (WAF) védelméhez.
Ez a minta két különálló Bicep-paraméterfájlt és két Bash-szkriptet és YAML-jegyzékfájlt is tartalmaz, mindegyik két különböző megoldási lehetőség üzembe helyezésére irányul. További információ a Bicep-ről: Mi a Bicep?
TLS-megszakítás az Application Gatewayen és a Yelb-hívás http-n keresztül
Ebben a megoldásban az Azure Web Application Firewall (WAF) biztosítja a rendszer biztonságát a rosszindulatú támadások blokkolásával. Az Azure Application Gateway fogadja a bejövő hívásokat az ügyfélalkalmazásoktól, TLS-leállítást hajt végre, és továbbítja a kéréseket az AKS által üzemeltetett yelb-ui szolgáltatásnak. Ez a kommunikáció a belső terheléselosztóval és az NGINX bejövőforgalom-vezérlővel érhető el a HTTP átviteli protokoll használatával. Az alábbi ábra az architektúrát szemlélteti:
Az üzenetfolyam a következő:
- Az Azure Application Gateway kezeli a TLS leállítását, és http-en keresztül küld bejövő hívásokat az AKS által üzemeltetett
yelb-uiszolgáltatásnak. - Az Application Gateway-figyelő az Azure Key Vaultból beszerzett SSL-tanúsítványt használ a biztonságos kommunikáció biztosításához.
- A Figyelőhöz társított Azure WAF-szabályzat OWASP-szabályokat és egyéni szabályokat alkalmaz a bejövő kérelmekre, így hatékonyan megakadályozza a rosszindulatú támadások számos típusát.
- Az Application Gateway háttérbeli HTTP-beállításai http-en keresztül hívják meg a Yelb-alkalmazást a 80-os porton keresztül.
- Az Application Gateway háttérkészlete és állapotmintája az AKS belső terheléselosztóján keresztül az NGINX vezérlőt hívja meg a forgalomkezeléshez használt HTTP protokollt alkalmazva.
- Az NGINX bejövőforgalom-vezérlő az AKS belső terheléselosztójának használatával biztosítja a fürtön belüli biztonságos kommunikációt.
- Egy Kubernetes bejövő objektum az NGINX bejövőforgalom-vezérlővel teszi elérhetővé az alkalmazást HTTP-n keresztül a belső terheléselosztón keresztül.
- A
yelb-uitípussal rendelkezőClusterIPszolgáltatás a fürtön belül vagy az NGINX bejövőforgalom-vezérlőn keresztül korlátozza a hívását.
Végpontok közötti TLS implementálása az Azure Application Gateway használatával
TLS-visszafejtés
Az Azure Application Gateway támogatja a TLS-leállítást az átjáró szintjén, ami azt jelenti, hogy a rendszer visszafejti a forgalmat az átjárón, mielőtt a háttérkiszolgálókra küldené őket. A TLS-megszakítás konfigurálásához TLS-/SSL-tanúsítványt kell hozzáadnia a figyelőhöz. A tanúsítványnak személyes adatcsere (PFX) formátumban kell lennie, amely tartalmazza a titkos és a nyilvános kulcsokat is. Importálhatja a tanúsítványt az Azure Key Vaultból az Application Gatewaybe. További információért lásd a Key Vault tanúsítványokkal való TLS-megszakításról szóló részt.
Nulla megbízhatósági biztonsági modell
Ha nulla megbízhatóságú biztonsági modellt vezet be, meg kell akadályoznia a titkosítatlan kommunikációt egy szolgáltatásproxy, például az Azure Application Gateway és a háttérkiszolgálók között. A nulla megbízhatósági biztonsági modell esetében a rendszer nem biztosít automatikusan megbízhatóságot a hálózaton belüli erőforrásokhoz hozzáférni próbáló felhasználók vagy eszközök számára. Ehelyett az identitás és az engedélyezés folyamatos ellenőrzését igényli minden egyes kéréshez, függetlenül a felhasználó helyétől vagy hálózatától. A mi esetünkben a zéró megbízhatóságú biztonsági modell megvalósítása az Azure Application Gateway szolgáltatásproxyként való használatát jelenti, amely a bejövő kérések előtérként szolgálnak. Ezek a kérések ezután titkosított formátumban jutnak el az Azure Kubernetes Service (AKS) NGINX bejövőforgalom-vezérlője felé.
Végpontok közötti TLS az Application Gateway használatával
Nulla megbízhatósági megközelítés implementálható az Azure Application Gateway teljes körű TLS-titkosításhoz való konfigurálásával a háttérkiszolgálókkal. A végpontok közötti TLS-titkosítás lehetővé teszi a bizalmas adatok biztonságos továbbítását a háttérrendszerbe, miközben kihasználja az Application Gateway 7. rétegbeli terheléselosztási funkcióit, beleértve a cookie-alapú munkamenet-affinitást, az URL-alapú útválasztást, a webhelyeken alapuló útválasztást, valamint az X-Forwarded-* fejlécek újraírásának vagy beszúrásának lehetőségét.
Ha az Application Gateway teljes körű TLS-kommunikációs móddal van konfigurálva, leállítja a TLS-munkameneteket az átjárón, és visszafejti a felhasználói forgalmat. Ezután a konfigurált szabályokat alkalmazza a megfelelő háttérkészlet-példány kiválasztására a forgalom átirányításához. Ezután az Application Gateway új TLS-kapcsolatot kezdeményez a háttérkiszolgálóval, és újra visszafejti az adatokat a háttérkiszolgáló nyilvános kulcstanúsítványával, mielőtt továbbítanák a kérést a háttérrendszernek. A webkiszolgáló válasza ugyanezt a folyamatot követi a végfelhasználó elérése előtt. A teljes körű TLS engedélyezéséhez be kell állítania a protokollbeállítást a háttérbeli HTTP-beállításban HTTPS-re, és alkalmaznia kell azt egy háttérpoolra. Ez a megközelítés biztosítja, hogy a háttérkiszolgálókkal folytatott kommunikáció biztonságos legyen, és megfeleljen a követelményeknek.
További információkért tekintse meg az Application Gateway végpontok közötti TLS-titkosítását és az Application Gateway biztonságossá tételének ajánlott eljárásait.
Ebben a megoldásban az Azure Web Application Firewall (WAF) biztosítja a rendszer biztonságát a rosszindulatú támadások blokkolásával. Az Azure Application Gateway kezeli az ügyfélalkalmazásokból érkező bejövő hívásokat, TLS-lezárást hajt végre, és teljes körű TLS-t valósít meg a mögöttes AKS által üzemeltetett yelb-ui szolgáltatás meghívásával a HTTPS átviteli protokoll használatával a belső terheléselosztón és az NGINX bejövőforgalom-vezérlőn keresztül. Az alábbi ábra az architektúrát szemlélteti:
Az üzenetfolyam a következő:
- Az Azure Application Gateway kezeli a TLS leállítását, és HTTPS-en keresztül kommunikál a háttéralkalmazással.
- Az Application Gateway-figyelő az Azure Key Vaultból beszerzett SSL-tanúsítványt használja.
- A Figyelőhöz társított Azure WAF-szabályzat OWASP-szabályokat és egyéni szabályokat futtat a rosszindulatú támadások blokkolására irányuló bejövő kérések ellen.
- Az Application Gateway háttérbeli HTTP-beállításai úgy vannak konfigurálva, hogy a 443-as porton HTTPS-en keresztül hívja meg az AKS által üzemeltetett
yelb-uiszolgáltatást. - Az Application Gateway háttérpoolja és állapotellenőrzése az NGINX bejövőforgalom-vezérlőt az AKS belső terheléselosztón keresztül, HTTPS használatával hívja meg.
- Az NGINX bejövőforgalom-vezérlő az AKS belső terheléselosztójának használatára van üzembe helyezve.
- A SAKS klaszter az Azure Key Vault szolgáltatóval van konfigurálva a Secrets Store CSI-illesztőprogram bővítményhez, amely titkos adatokat, tanúsítványokat és kulcsokat kér le az Azure Key Vaultból egy CSI kötet segítségével.
- A SecretProviderClass használatával lekérheti az Application Gateway által használt tanúsítványt a Key Vaultból.
- Egy Kubernetes bejövő objektum az NGINX bejövőforgalom-vezérlővel teszi elérhetővé az alkalmazást HTTPS-en keresztül az AKS belső terheléselosztón keresztül.
- A
yelb-uiszolgáltatásnak van egyClusterIPtípusa, amely korlátozza, hogy a hívás a fürtön belül vagy az NGINX bejövőforgalom-vezérlőn keresztül történhessen.
A rendszer biztonságának és stabilitásának biztosítása érdekében vegye figyelembe a következő javaslatokat:
- Az optimális biztonság érdekében rendszeresen frissítse az Azure WAF-szabályzatot a legújabb szabályokkal.
- Monitorozási és naplózási mechanizmusok implementálása a bejövő kérések és a lehetséges támadások nyomon követésére és elemzésére.
- Rendszeresen végezze el az AKS-fürt, az NGINX bejövőforgalom-vezérlő és az Application Gateway karbantartását és frissítését a biztonsági rések kezelése és a biztonságos infrastruktúra fenntartása érdekében.
- Monitorozási és naplózási mechanizmusok implementálása a bejövő kérések és a lehetséges támadások nyomon követésére és elemzésére.
- Rendszeresen végezze el az AKS-fürt, az NGINX bejövőforgalom-vezérlő és az Application Gateway karbantartását és frissítését a biztonsági rések kezelése és a biztonságos infrastruktúra fenntartása érdekében.
Állomásnév
Az Application Gateway figyelője és a Kubernetes bejövőforgalom ugyanarra a gazdagépnévre van konfigurálva. Fontos, hogy ugyanazt a gazdagépnevet használjuk egy szolgáltatási proxy és egy háttérben futó webalkalmazás esetén a következő okok miatt:
- A munkamenet állapotának megőrzése: Ha a proxy és a háttéralkalmazás eltérő állomásnevét használja, a munkamenet állapota elveszhet. Ez azt jelenti, hogy a felhasználói munkamenetek nem biztos, hogy megfelelően fennmaradnak, ami rossz felhasználói élményt és lehetséges adatvesztést okozhat.
- Hitelesítési hiba: Ha a gazdagépnév eltér a proxy és a háttéralkalmazás között, a hitelesítési mechanizmusok sikertelenek lehetnek. Ez a megközelítés azt eredményezheti, hogy a felhasználók nem tudnak bejelentkezni vagy biztonságos erőforrásokhoz férnek hozzá az alkalmazásban.
- Az URL-címek véletlen expozíciója: Ha a gazdagépnév nem marad meg, fennáll annak a kockázata, hogy a háttérbeli URL-címek a végfelhasználók számára lesznek közzétéve. Ez biztonsági résekhez és bizalmas információkhoz való jogosulatlan hozzáféréshez vezethet.
- Cookie-problémák: A cookie-k kulcsfontosságú szerepet játszanak a felhasználói munkamenetek fenntartásában és az adatok átadásában az ügyfél és a kiszolgáló között. Ha a gazdagép neve eltér, előfordulhat, hogy a cookie-k nem a várt módon működnek, ami olyan problémákhoz vezet, mint a sikertelen hitelesítés, a helytelen munkamenet-kezelés és a helytelen átirányítás.
- Végpontok közötti TLS/SSL-követelmények: Ha a proxy és a háttérszolgáltatás közötti biztonságos kommunikációhoz végpontok közötti TLS/SSL szükséges, az eredeti gazdagépnévhez megfelelő TLS-tanúsítványra van szükség. Az azonos gazdagépnév használata leegyszerűsíti a tanúsítványkezelési folyamatot, és biztosítja a biztonságos kommunikáció zökkenőmentes létrehozását.
Ezeket a problémákat elkerülheti, ha ugyanazt a gazdagépnevet használja mind a szolgáltatás proxyhoz, mind a háttérbeli webalkalmazáshoz. A háttéralkalmazás ugyanazt a tartományt látja, mint a webböngésző, biztosítva, hogy a munkamenet állapota, a hitelesítés és az URL-kezelés megfelelően működjön.
Üzenetfolyam
Az alábbi ábra az üzenetfolyam üzembe helyezés és futtatókörnyezet során végzett lépéseit mutatja be.
Üzembehelyezési munkafolyamat
Az alábbi lépések az üzembehelyezési folyamatot írják le. Ez a munkafolyamat megfelel az előző diagram zöld számainak.
- A biztonsági mérnök létrehoz egy tanúsítványt a számítási feladat által használt egyéni tartományhoz, és egy Azure-kulcstartóban menti. Egy jól ismert hitelesítésszolgáltatótól (CA) szerezhet be érvényes tanúsítványt.
- A platformmérnök megadja a main.bicepparams Bicep paraméterfájlban szükséges információkat, és üzembe helyezi a Bicep-sablonokat az Azure-erőforrások létrehozásához. A szükséges információk a következők:
- Az Azure-erőforrások előtagja.
- Annak a meglévő Azure Key Vaultnak a neve és erőforráscsoportja, amely a számítási feladat állomásneve és az Application Gateway figyelő egyéni tartományához tartozó TLS-tanúsítványt tartalmazza.
- Az üzembehelyezési szkriptet úgy konfigurálhatja, hogy az alábbi csomagokat telepítse az AKS-fürtre. További információkért tekintse meg a Bicep-modul paraméterek szakaszát.
- Prometheus és Grafana a Prometheus-közösség Kubernetes Helm-diagramjaival: Alapértelmezés szerint ez a mintakonfiguráció nem telepíti a Prometheust és a Grafana-t az AKS-fürtre. Ehelyett telepíti az Azure Managed Prometheust és az Azure Managed Grafana-t.
- tanúsítványkezelő: Ebben a mintában nincs szükség tanúsítványkezelőre, mivel az Application Gateway és az NGINX bejövőforgalom-vezérlő is egy előre feltöltött TLS-tanúsítványt használ az Azure Key Vaultból.
- NGINX bejövőforgalom-vezérlő Helm-diagramon keresztül: Ha a felügyelt NGINX bejövőforgalom-vezérlőt az alkalmazás útválasztási bővítményével használja, nem kell telepítenie az NGINX bejövőforgalom-vezérlő egy másik példányát a Helmen keresztül.
- Az Application Gateway figyelője lekéri a TLS-tanúsítványt az Azure Key Vaultból.
- A Kubernetes bejövő objektum az Azure Key Vault-szolgáltatótól a Titkos kulcstár CSI-illesztőprogramjához beszerzett tanúsítványt használja a Yelb felhasználói felületi szolgáltatás HTTPS-en keresztüli megjelenítéséhez.
- Az Application Gateway figyelője lekéri a TLS-tanúsítványt az Azure Key Vaultból.
- A Kubernetes bejövő objektum az Azure Key Vault-szolgáltatótól a Titkos kulcstár CSI-illesztőprogramhoz beszerzett tanúsítványt használja a Yelb felhasználói felületi szolgáltatás HTTPS-en keresztüli megjelenítéséhez.
Futtatási munkafolyamat
- Az ügyfélalkalmazás meghívja a minta webalkalmazást a gazdagép nevét használva. Az Application Gateway-figyelő egyéni tartományához társított DNS-zóna egy
Arekord használatával oldja fel a DNS-lekérdezést az Application Gateway előtérbeli IP-konfigurációja által használt Azure nyilvános IP-cím címével. - A rendszer elküldi a kérelmet az Application Gateway előtérbeli IP-konfigurációja által használt Nyilvános Azure IP-címre.
- Az Application Gateway a következő műveleteket hajtja végre:
- Az Application Gateway kezeli a TLS leállítását, és HTTPS-en keresztül kommunikál a háttéralkalmazással.
- Az Application Gateway-figyelő az Azure Key Vaultból beszerzett SSL-tanúsítványt használja.
- A Figyelőhöz társított Azure WAF-szabályzat OWASP-szabályokat és egyéni szabályokat futtat a bejövő kérések ellen, és blokkolja a rosszindulatú támadásokat.
- Az Application Gateway háttérbeli HTTP-beállításai úgy vannak konfigurálva, hogy a minta webalkalmazást HTTPS-en keresztül hívja meg a 443-as porton.
- Az Application Gateway háttérkészlete meghívja az NGINX bejövőforgalom-vezérlőt az AKS belső terheléselosztón keresztül HTTPS használatával.
- A rendszer elküldi a kérést az egyik ügynökcsomópontnak, amely az NGINX bejövőforgalom-vezérlő podját üzemelteti.
- Az NGINX bejövőforgalom-vezérlő egyik replikája kezeli a kérést, és elküldi a kérést a
yelb-uiszolgáltatás egyik szolgáltatásvégpontjának. - A
yelb-uiayelb-appserverszolgáltatást hívja. - A
yelb-appserverayelb-dbésyelb-cacheszolgáltatásokat hívja. - A
yelb-uiayelb-appserverszolgáltatást hívja. - A
yelb-appserverayelb-dbésyelb-cacheszolgáltatásokat hívja.
Telepítés
A Bicep-sablonok alapértelmezés szerint az AKS-fürtöt az Azure CNI Overlay hálózati plugin és a Cilium adat sík telepítésével állítják be. Alternatív hálózati beépülő modult is használhat. Emellett a projekt bemutatja, hogyan helyezhet üzembe egy AKS-fürtöt az alábbi bővítményekkel és szolgáltatásokkal:
- Microsoft Entra Számítási feladat ID
- Istio-alapú szolgáltatásháló bővítmény
- API Server VNET-integráció
- Azure NAT Gateway
- Eseményvezérelt automatikus skálázási (KEDA) bővítmény
- Dapr-bővítmény
- Flux V2 bővítmény
- Függőleges pod automatikus skálázása
- Az Azure Key Vault szolgáltatója a Titkoskulcstár CSI-illesztőprogramhoz
- Képtisztító
- Az Azure Kubernetes Service (AKS) hálózat megfigyelhetősége
- Felügyelt NGINX-bejövő forgalom az alkalmazás-útválasztási bővítményrel
Éles környezetben erősen javasoljuk egy privát AKS-fürt üzembe helyezését az Uptime SLA-val. További információkért lásd: nyilvános DNS-címmel rendelkező privát AKS-fürt.
Másik lehetőségként üzembe helyezhet egy nyilvános AKS-fürtöt, és biztonságos hozzáférést biztosíthat az API-kiszolgálóhoz engedélyezett IP-címtartományok használatával. Az infrastruktúra Bicep-sablonok használatával történő azure-beli üzembe helyezésével kapcsolatos részletes információkért és utasításokért tekintse meg a társ Azure-kódmintát.
Éles környezetben erősen javasoljuk egy privát AKS-fürt üzembe helyezését az Uptime SLA-val. További információért lásd: nyilvános DNS-címmel rendelkező privát AKS-fürt. Másik lehetőségként üzembe helyezhet egy nyilvános AKS-fürtöt, és biztonságos hozzáférést biztosíthat az API-kiszolgálóhoz engedélyezett IP-címtartományok használatával. Az infrastruktúra Bicep-sablonok használatával történő azure-beli üzembe helyezésével kapcsolatos részletes információkért és utasításokért tekintse meg a társ Azure-kódmintát.
Következő lépés
Közreműködők
A Microsoft fenntartja ezt a cikket. A következő közreműködők eredetileg megírták:
Fő szerző:
- Paolo Salvatori | Vezető ügyfélmérnök
Egyéb közreműködők:
- Ken Kilty | Fő TPM
- Russell de Pina | Vezető TPM
- Erin Schaffer | Tartalomfejlesztő 2