logo

Gustav Rubbestad

I

05/06/23

Enkel uppsättning av en säker applikation på AWS

Att sätta upp en applikation på Amazon Web Services (AWS) kan vara en utmaning, men med rätt förståelse och konfiguration kan du bygga en säker och skalbar infrastruktur för din applikation.

I denna artikel kommer vi att fokusera på hur man bygger en säker applikation på AWS. Vi kommer göra detta genom att, steg för steg, gå igenom hur man kan tänkas gå till väga när man bygger en applikation med hjälp av Virtual Private Cloud (VPC), privata och publika subnät, Access Control Lists (ACL), Security Groups och multi-Availability Zone (AZ) arkitektur för både EC2-instanser och RDS-databaser. Dessa komponenter kommer garantera att din applikation är pålitlig och säker.

Först och främst, låt oss gå igenom grunderna för varje komponent i diagramet ovan och fördjupa oss i deras syfte inom arkitekturen.

Virtual Private Cloud (VPC)

En VPC är en virtuell nätverksmiljö som du kan konfigurera i AWS. Den låter dig isolera dina resurser och skapa ditt eget privata nätverk i molnet. När du konfigurerar en VPC kan du välja IP-adressområdet, skapa alla subnät och definiera routningtabeller för att dirigera trafiken mellan dem. En VPC är den mest grundläggande byggstenen för att sätta upp en säker applikation i molnet.

Publika och privata subnät

Inom din VPC kan du skapa både publika och privata subnät. Skillnaden mellan dessa är att publika subnät har en associerad Internet Gateway (IGW) och kan därmed direkt kommunicera med internet. Privata subnät är istället isolerade från internet och har därmed ingen direkt anslutning till IGW. Anledningen bakom detta är att applikationen man bygger måste vara tillgänglig från internet så att användarna kan använda och interagera med den, medan exempelvis databasen i det här fallet behöver vara isolerad från internet så att ingen obehörig kan läsa eller skriva till den. 

Access Control Lists (ACL)

En Access Control List (ACL) är en brandvägg på nätverksnivå som kontrollerar in- och utgående trafik till och från dina subnät. Med hjälp av ACL kan du definiera tillåtna och blockerade IP-adresser, portar och protokoll för att stärka säkerheten och kontrollera trafikflödet mellan subnät och internet.

Security Groups

Security Groups fungerar som en virtuell brandvägg på instansnivå, i det här exemplet appliceras de direkt på EC2-instanserna och RDS-databaserna. De hanterar inkommande och utgående trafik baserat på IP-adresser, portar och protokoll. Security Groups blockerar all trafik som standard, så genom att konfigurera rätt Security Groups kan du begränsa åtkomsten till dina resurser och minimera sårbarheter.

Multi-Availability Zone (AZ) arkitektur

En AZ representerar en fysisk plats med oberoende infrastruktur inom en AWS-region, exempelvis Stockholm. Att distribuera sina resurser i flera AZ är en viktig del av att skapa en robust infrastruktur med hög tillgänglighet. Genom att placera dina resurser i flera olika AZ skyddar du din applikation från driftstörningar om en fysisk serverhall skulle få problem, vilket ger redundans och förbättrad tillgänglighet.

Med förståelse för dessa grundläggande koncept så kan vi titta närmare på hur de kan tillämpas för att sätta upp vår applikation.

Praktisk tillämpning

Först och främst så behöver vi skapa en Virtual Private Cloud (VPC) med ett IP-adressintervall som passar våra behov. Inom denna VPC delar vi sedan upp adressintervallet i två publika subnät och två privata subnät, som placeras i olika Availability Zones (AZ) likt diagrammet ovan. Detta ger oss redundans och högre tillgänglighet för applikationen. 

Därefter är det viktigt att konfigurera Access Control Lists (ACL) för varje subnät. Här vill vi konfigurera det så att de publika subnäten har access till internet, så att användare kan kommunicera med applikationen, men vi vill också att de publika subnäten ska kunna kommunicera med det privata subnätet där vår databas finns. Här bör vi också konfigurera ACLs för de privata subnäten där vi blockerar all trafik som inte kommer från våra egna publika subnät.

Efter att ha skapat subnäten och ACLs är det dags att starta EC2-instanser. Här har vi valt att placera en EC2-instans i varje publikt subnät. För att säkerställa hög tillgänglighet bör vi välja olika Availability Zones för instanserna. Här bör vi även konfigurera lämpliga Security Groups för att styra in- och utgående trafik till instanserna baserat på applikationskraven. Och för att fortsätta på spåret hög tillgänglighet så vill vi också skapa en Application Load Balancer (ALB) och placera den framför våra EC2-instanser. En ALB dirigerar trafiken jämnt mellan våra EC2-instanser så att ingen av instanserna blir överbelastade.

Slutligen vill vi konfigurera en databas för att lagra, hämta och operera på data i vår applikation, i detta fallet en Relational Database Service (RDS). Vi placerar databasen i ett av våra privata subnät och konfigurerar en Security Group för den, i det här fallet vill vi att databasen endast ska kunna kommunicera med våra två EC2-instanser. För att säkerställa hög tillgänglighet konfigurerar vi multi-Availability Zone (AZ) replikering för RDS-databasen. Detta innebär att en replika av databasen kommer att finnas i en annan AZ, vilket ger redundans och skydd mot driftstörningar i vår primära AZ.

Genom att följa denna metodik och använda Virtual Private Cloud, privata och publika subnät, ACL, Security Groups och multi-AZ-arkitektur kan du skapa en robust och säker infrastruktur för din applikation i molnet.

Kontakta oss

Nyhetsbrev