För kunder i segment som är strikt styrda och begränsade av efterlevnad är det viktigt att ha en isolerad och dedikerad miljö, särskilt för verksamhetsspecifika program. Även om säkerheten är i centrum kräver dessa kritiska program också möjligheten att skala och utföra under scenarier med hög minnesanvändning eller höga begäranden per sekund. Den här lösningen är ett exempel på hur du kan vara värd för verksamhetsspecifika program. Du kan använda App Service-miljön för att säkerställa att både säkerhet och prestanda kan åtgärdas samtidigt. När du distribuerar den här lösningen har du flexibiliteten att använda befintliga resurser i din Azure-landningszon, vilket representerar dina resurser i det virtuella hubbnätverket. Eller så kan du distribuera den här lösningen som en fristående arbetsbelastning.
Kommentar
Den här artikeln innehåller en distributionsbar arkitektur som överensstämmer med vägledningen för Cloud Adoption Framework för App Service i Azure-landningszoner.
Arkitektur
Hela den här avbildningen finns i omfånget för en prenumeration och en privat DNS-zon. Det anges av en prenumerationsikon och en Azure Privat DNS zonikon i det övre vänstra hörnet. Under dessa ikoner är två block sida vid sida. De representerar två virtuella nätverk, med VNet-peering mellan dem. Blocket till vänster representerar det virtuella hubbnätverket och blocket till höger representerar det virtuella ekernätverket. I den vänstra rutan finns tre mindre rutor. Varje ruta anger ett annat undernät och dess associerade nätverkssäkerhetsgrupp. Från det övre vänstra hörnet finns en Azure Bastion-instans i Azure Bastion-undernätet, och längst upp till höger finns den virtuella jumpbox-datorn, som finns i jumpbox-undernätet. Längst ned till höger finns den tredje och sista rutan i det virtuella hubbnätverket, som innehåller CI/CD-agentservern som finns i CI/CD-undernätet. Rutan till höger, som representerar det virtuella ekernätverket, innehåller bara en mindre ruta, App Service-miljön undernät som har App Service-miljön v3-instans i den. En mindre ruta representerar App Service-miljön. App Service-ikonen finns i rutan. Längst ned i mitten av avbildningen finns delade resurser som också distribueras som en del av processen. Från vänster till höger omfattar de delade resurserna Azure Key Vault, Azure Log Analytics-arbetsytan och Azure Application Insights.
Ladda ned en Visio-fil med den här arkitekturen.
Arbetsflöde
Det finns tre flöden med pratbubbla i den här arkitekturen: Åtgärder (orange), Distribution (grön) och Användare (lila).
Operations
- Operatörer eller administratörer vill utföra administrationsuppgifter på CI/CD-servern (kontinuerlig integrering/kontinuerlig distribution) eller på Kudu-slutpunkten för App Service-miljön. Först måste de ansluta till Azure Bastion-värden.
- Med hjälp av Azure Bastion-värden kan operatören eller administratören sedan använda Remote Desk Protocol (RDP) för att komma åt jumpbox-servern.
- Från jumpbox-servern kan operatören eller administratören RDP till CI/CD-servern och utföra de uppgifter som krävs, till exempel agentuppgraderingar, OS-uppgraderingar och så vidare. Operatören eller administratören kan också ansluta från jumpbox-servern till Kudu-slutpunkten för App Service-miljön-instansen, utföra administrativa uppgifter eller utföra avancerad felsökning.
Distribution
- Distributionen av lösningen utförs via CI/CD-agentservern. DevOps-agenten på den här servern ansluter till Azure Pipelines när en ny distribution körs.
- Artefakterna distribueras sedan till apptjänsten genom att ansluta till App Service-miljön via VNet-peering.
User
- Användare kan ansluta till den distribuerade App Service via företagets nätverk. De kan använda Azure ExpressRoute eller ett VPN om det behövs, och/eller över eventuell tillämplig Azure VNet-peering.
Komponenter
Lösningen använder följande Azure-tjänster:
Azure App Service-miljön v3 (ASEv3) är en funktion i Azure App Service och är en tjänst för en enda klientorganisation för kunder som kräver hög skalning, nätverksisolering, säkerhet och/eller hög minnesanvändning. Appar finns i App Service-planer som skapas i App Service-miljön v3, med alternativ för att använda olika nivåer i en isolerad V2-tjänstplan. Jämfört med en tidigare version av App Service-miljön har många förbättringar gjorts, inklusive, men inte begränsat till, nätverksberoende, skalningstid och borttagning av stämpelavgiften. Den här lösningen använder en App Service-miljön v3 som har konfigurerats för intern åtkomst.
Med Azure Privat DNS kan du hantera och lösa domännamn i ett virtuellt nätverk utan att behöva implementera en anpassad DNS-lösning. En Azure-Privat DNS zon kan justeras till ett eller flera virtuella nätverk via virtuella nätverkslänkar. På grund av den interna typen av App Service-miljön v3 som används i den här referensarkitekturen krävs en privat DNS-zon för att matcha domännamnen för program som finns på App Service-miljön.
Azure Application Insights är en funktion i Azure Monitor som hjälper utvecklare att identifiera avvikelser, diagnostisera problem och förstå användningsmönster. Application Insights-funktioner utökningsbar programprestandahantering och övervakning för webbappar i realtid. Olika plattformar stöds, inklusive .NET, Node.js, Java och Python. Den stöder appar som finns i Azure, lokalt, i en hybridmiljö eller i andra offentliga moln. Application Insights ingår som en del av den här referensarkitekturen för att övervaka beteendet för det distribuerade programmet.
Azure Log Analytics är en funktion i Azure Monitor som gör att du kan redigera och köra loggfrågor med data i Azure Monitor-loggar, eventuellt inifrån Azure Portal. Utvecklare kan köra enkla frågor för en uppsättning poster eller använda Log Analytics för att utföra en avancerad analys. De kan sedan visualisera resultaten. Log Analytics är konfigurerat som en del av den här referensarkitekturen för att aggregera alla övervakningsloggar för analys och rapportering.
Azure Virtual Machines är en skalbar beräkningsresurs på begäran som kan användas som värd för flera olika arbetsbelastningar. I den här referensarkitekturen används virtuella datorer för att tillhandahålla en jumpbox-server för hantering och för att tillhandahålla en värd för DevOps-agenten eller GitHub-löparen.
Azure Key Vault är en molntjänst som på ett säkert sätt lagrar och kommer åt hemligheter, som sträcker sig från API-nycklar och lösenord till certifikat och kryptografiska nycklar. Ett Azure-nyckelvalv distribueras som en del av arkitekturens infrastruktur för att underlätta hemlig hantering för framtida koddistributioner.
Azure Bastion är en plattform som en tjänst som etableras i utvecklarens virtuella nätverk. Det ger säker RDP/SSH-anslutning till utvecklarens virtuella datorer via TLS, från Azure Portal. Med Azure Bastion kräver virtuella datorer inte längre en offentlig IP-adress för att ansluta via RDP/SSH. Den här referensarkitekturen använder Azure Bastion för att komma åt DevOps-agenten eller GitHub runner-servern eller jumpbox-servern för hantering.
Alternativ
Överväg att lägga till en Azure Application Gateway före App Service-instansen för att tillhandahålla WAF-funktioner (Web Application Firewall) för att skydda webbprogram från vanliga sårbarheter och sårbarheter.
En github-löpare med egen värd kan användas i stället för den lokala Azure DevOps-agenten.
Att tänka på
Dessa överväganden implementerar grundpelarna i Azure Well-Architected Framework, som är en uppsättning vägledande grundsatser som kan användas för att förbättra kvaliteten på en arbetsbelastning. Mer information finns i Microsoft Azure Well-Architected Framework.
Tillförlitlighet
Tillförlitlighet säkerställer att ditt program kan uppfylla de åtaganden du gör gentemot dina kunder. Mer information finns i Översikt över tillförlitlighetspelare.
- Överväg dina krav på zonredundans i den här referensimplementeringen, samt zonredundansfunktionerna i andra Azure-tjänster i din lösning. App Service-miljön v3 stöder zonredundans genom att sprida instanser till alla tre zonerna i målregionen. Den här konfigurationen kan bara anges när App Service-miljön skapas, och den kanske inte är tillgänglig i alla regioner. Mer information finns i Stöd för tillgänglighetszoner för App Service-miljön. Den här referensimplementeringen implementerar zonredundans, men du kan ändra den genom att klona den här lagringsplatsen och ställa in
zoneRedundant
egenskapen påfalse
.
Säkerhet
Säkerhet ger garantier mot avsiktliga attacker och missbruk av dina värdefulla data och system. Mer information finns i Översikt över säkerhetspelare.
- Använd lämplig användning av åtkomstbegränsningar så att apptjänsten endast kan nås från giltiga platser. Om apptjänsten till exempel är värd för API:er och den frontas av APIM kan du konfigurera en åtkomstbegränsning så att apptjänsten endast är tillgänglig från APIM.
- Eftersom den här referensimplementeringen distribuerar en App Service-miljön till ett virtuellt nätverk (kallas för en intern App Service-miljön) är alla program som distribueras till App Service-miljön i sig nätverksisolerade i det virtuella nätverkets omfång.
- Lagra programhemligheter (databasautentiseringsuppgifter, API-token och privata nycklar) i Azure Key Vault. Konfigurera din App Service-app så att den får åtkomst till dem på ett säkert sätt med en hanterad identitet. Ta reda på när du ska använda Azure Key Vault jämfört med Azure App Configuration.
Kostnadsoptimering
Kostnadsoptimering handlar om att titta på sätt att minska onödiga utgifter och förbättra drifteffektiviteten. Mer information finns i Översikt över kostnadsoptimeringspelare.
- Även om det inte finns någon stämpelavgift för en App Service-miljön v3-instans, debiteras en avgift när inga App Service-planer har konfigurerats i App Service-miljön v3-instansen. Den här avgiften tas ut med samma hastighet som en instans av en Windows I1v2-instans, för den region där App Service-miljön v3-instansen distribueras.
- När den konfigureras att vara zonredundant justeras laddningsmodellen för att ta hänsyn till den underliggande infrastruktur som distribueras i den här konfigurationen. Du kan vara ansvarig för ytterligare instanser enligt ASEv3-priser.
- För App Service-miljön v3 App Service-planer (kallas isolerade V2 App Service-planer) använder du Azure Reservations och Azure Savings Plan för beräkning med ett ettårsavtal eller ett treårskontrakt och får betydande besparingar av betala per användning-priser. Mer information finns i Så här tillämpas reservationsrabatter på isolerade v2-instanser.
Driftsäkerhet
Driftskvalitet omfattar de driftsprocesser som distribuerar ett program och håller det igång i produktion. Mer information finns i Översikt över grundpelare för driftskvalitet.
- Använd Application Insights eller en annan lösning för hantering av programprestanda för att övervaka och lära dig hur ditt program fungerar i olika miljöer.
- Det finns två sätt att aktivera Application Insights. För olika miljöer samlar du in telemetridata i olika Application Insights-instanser.
- Om programmet har flera komponenter indelade i olika tjänster kanske du vill undersöka deras beteende tillsammans. Samla in sina telemetridata i samma Application Insights-instans, men märk dem med olika molnrollnamn.
- Exportera Application Insights-data till en Azure Log Analytics-arbetsyta . Vi rekommenderar att du använder en enda arbetsyta för organisationen.
- Inkludera operativa instrumentpaneler i program- och funktionsdesign för att säkerställa att lösningen kan stödjas i produktion.
- Implementera hälsokontroller för dina slutpunkter och använd dem sedan för hälsoavsökningar, beroendekontroller och tillgänglighetstester.
- Överväg att använda prefix och suffix med väldefinierade konventioner för att unikt identifiera varje distribuerad resurs. Dessa namngivningskonventioner undviker konflikter när du distribuerar lösningar bredvid varandra och förbättrar teamets övergripande flexibilitet och dataflöde.
- Beroende på nätverkskonfigurationen kanske App Service inte kan nås från det offentliga Internet och användningen av offentliga värdbaserade agenter fungerar inte för distributioner. Använd lokalt installerade agenter i det scenariot.
Distribuera det här scenariot
Om du vill komma igång och bättre förstå detaljerna i den här implementeringen läser du referensimplementeringsresurserna i användarhandboken för distribution av referensimplementering.
- Vi rekommenderar att du klonar den här lagringsplatsen och ändrar referensimplementeringsresurserna så att de passar dina krav och organisationens specifika riktlinjer för landningszoner.
- Innan du distribuerar kontrollerar du att tjänstens huvudnamn som används för att distribuera lösningen har de behörigheter som krävs för att skapa de resurstyper som vi listade ovan.
- Överväg den CI/CD-tjänst som du ska använda för att distribuera referensimplementeringen. Eftersom den här referensimplementeringen är en intern App Service-miljön behöver du en lokalt installerad agent för att köra distributionspipelines. Du kan välja att använda antingen en DevOps-agent eller en GitHub-löpare. Se användarhandboken för de specifika konfigurationsvärden som krävs.
- Överväg de regioner som du tänker distribuera referensimplementeringen till. Se listan ASEv3-regioner för att se till att de valda regionerna är aktiverade för distribution.
Deltagare
Den här artikeln underhålls av Microsoft. Det har ursprungligen skrivits av följande medarbetare.
Huvudsakliga författare:
- Pete Messina | Senoir Cloud Solution Architect
- Nabeel Prior | Senior Cloud Solution Architect
Om du vill se icke-offentliga LinkedIn-profiler loggar du in på LinkedIn.
Nästa steg
- Säkerhet i Azure App Service
- Nätverk för App Service
- Vägledning för Cloud Adoption Framework för App Service i Azure-landningszoner
Läs mer om dessa viktiga tjänster:
- Azure App Service-miljön v3 (ASEv3)
- Azure Privat DNS-zoner
- Azure Application Insights
- Azure Log Analytics
- Översikt över Virtuella Azure-datorer
- Azure Key Vault-begrepp
- Azure Bastion