AWS Solutions Architect · Lektion

Scenarier för säker arkitektur

Arbeta igenom scenarier om minsta privilegium i IAM, kryptering, VPC-isolering och WAF/Shield för att befästa kunskaperna inom säkerhetsdomänen.

Lektion 1 av 413 steg

Scenarier för säker arkitektur är en gratis lektion i AWS Solutions Architect på CoddyKit. Detta är lektion 1 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för AWS Solutions Architect, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i AWS Solutions Architect innehåller totalt 4 lektioner.

Scenario 1: EC2-åtkomst till S3 med minsta möjliga behörighet

Scenario: En EC2-instans kör en webbapplikation som behöver läsa objekt från en specifik S3-bucket. Säkerhetsteamet kräver att inga långvariga autentiseringsuppgifter lagras på instansen och att åtkomsten följer principen om minsta möjliga behörighet. Lösning: Skapa en IAM-roll med en policy som endast tillåter s3:GetObject för ARN:en till den specifika bucketen. Koppla rollen till EC2-instansen som en instansprofil. Applikationen använder instansens metadatatjänst (IMDS) för att automatiskt hämta tillfälliga autentiseringsuppgifter — inga lagrade nycklar behövs.

# IAM policy for least-privilege EC2 -> S3 read
{
  'Version': '2012-10-17',
  'Statement': [{
    'Effect': 'Allow',
    'Action': ['s3:GetObject'],
    'Resource': 'arn:aws:s3:::my-app-bucket/*'
  }]
}

# Attach role to EC2 instance
aws ec2 associate-iam-instance-profile \
  --instance-id i-1234567890abcdef0 \
  --iam-instance-profile Name=EC2S3ReadRole

Scenario 2: Kryptera data i en RDS-databas

Scenario: Ett företag lagrar personligt identifierbar information om kunder i en RDS PostgreSQL-databas. Efterlevnadsteamet kräver kryptering i vila och möjlighet att granska nyckelanvändningen. Lösning: Aktivera RDS-kryptering med AWS KMS och en Customer Managed Key (CMK). CMK:n gör det möjligt för säkerhetsteamet att styra nyckelrotationen, visa nyckelanvändning i CloudTrail och återkalla åtkomst vid behov. Obs! Kryptering måste aktiveras när RDS-instansen skapas — du kan inte kryptera en befintlig okrypterad RDS-instans direkt på plats. Om du vill kryptera en befintlig databas tar du en snapshot, kopierar den med kryptering aktiverad och återställer från den krypterade snapshoten.

# Create an encrypted RDS instance
aws rds create-db-instance \
  --db-instance-identifier prod-postgres \
  --db-instance-class db.t3.medium \
  --engine postgres \
  --master-username admin \
  --master-user-password SecurePass123! \
  --storage-encrypted \
  --kms-key-id arn:aws:kms:us-east-1:123456789012:key/mrk-abc123 \
  --allocated-storage 100

Scenario 3: S3-bucket — blockera offentlig åtkomst

Scenario: En utvecklare gjorde av misstag en S3-bucket offentlig, vilket exponerade kunddata. Säkerhetsteamet vill säkerställa att ingen S3-bucket i kontot någonsin kan göras offentlig, även om en utvecklare försöker. Lösning: Aktivera S3 Block Public Access på kontonivå. Detta åsidosätter alla bucket-policyer eller ACL:er som ger offentlig åtkomst, oavsett vad enskilda team konfigurerar. Kombinera detta med en AWS Config-regel (s3-bucket-public-read-prohibited) för att kontinuerligt upptäcka och varna för buckets som inte följer kraven.

# Block all public access at account level
aws s3control put-public-access-block \
  --account-id 123456789012 \
  --public-access-block-configuration \
    'BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true'

# Deploy Config rule to detect violations
aws configservice put-config-rule \
  --config-rule '{"ConfigRuleName": "s3-bucket-public-read-prohibited", "Source": {"Owner": "AWS", "SourceIdentifier": "S3_BUCKET_PUBLIC_READ_PROHIBITED"}}'

Scenario 4: VPC-isolering för databasskiktet

Scenario: Ett företag vill säkerställa att deras RDS-databas endast är åtkomlig från applikationsservrarna och inte från internet. Lösning: Placera RDS i ett privat subnät utan rutt via en internetgateway. Skapa en säkerhetsgrupp för RDS som endast tillåter inkommande trafik på port 5432 (PostgreSQL) från applikationsservrarnas säkerhetsgrupp — inte från något IP-adressintervall. Detta säkerställer att en angripare inte kan nå databasen utifrån VPC:n även om en applikationsserver komprometteras, och begränsar lateral förflyttning genom reglerna för säkerhetsgrupper.

# Create RDS security group allowing only the app tier SG as source
aws ec2 create-security-group \
  --group-name rds-sg \
  --description 'RDS security group' \
  --vpc-id vpc-abc123

aws ec2 authorize-security-group-ingress \
  --group-id sg-rds \
  --protocol tcp \
  --port 5432 \
  --source-group sg-app  # app tier security group ID only

Scenario 5: Rotera autentiseringsuppgifter för databasen

Scenario: Applikationskoden innehåller för närvarande hårdkodade autentiseringsuppgifter till databasen i konfigurationsfiler. Säkerhetsgranskningen flaggar detta som en kritisk risk. Lösning: Lagra autentiseringsuppgifterna i AWS Secrets Manager och konfigurera automatisk rotation (Secrets Manager har inbyggda Lambda-rotationsfunktioner för RDS). Uppdatera applikationen så att den hämtar autentiseringsuppgifterna från Secrets Manager under körning med hjälp av SDK:t. Applikationen får automatiskt nya autentiseringsuppgifter utan att behöva distribueras vid varje rotation. Aktivera mallen för rotation av RDS-hemligheter för helt hanterad rotation av autentiseringsuppgifter utan driftstopp.

# Store RDS credentials in Secrets Manager
aws secretsmanager create-secret \
  --name prod/myapp/rds \
  --secret-string '{"username":"admin","password":"OldPass123!","host":"rds-endpoint.amazonaws.com","port":5432}'

# Enable automatic rotation every 30 days
aws secretsmanager rotate-secret \
  --secret-id prod/myapp/rds \
  --rotation-lambda-arn arn:aws:lambda:us-east-1:123:function:SecretsManagerRDSPostgreSQLRotationSingleUser \
  --rotation-rules AutomaticallyAfterDays=30

Scenario 6: Upptäck ovanlig API-aktivitet

Scenario: Ett företag vill upptäcka om autentiseringsuppgifter till AWS-kontot har komprometterats och används från oväntade platser. Lösning: Aktivera Amazon GuardDuty i alla regioner. GuardDuty analyserar CloudTrail-händelser, VPC Flow Logs och DNS-loggar med hjälp av maskininlärning för att upptäcka avvikelser: API-anrop från ovanliga geografiska platser, mönster som tyder på bitcoinbrytning på EC2, kommunikation med Tor-utgångsnoder eller mönster som tyder på exfiltrering av autentiseringsuppgifter. GuardDuty genererar fynd som kan utlösa EventBridge-regler för att automatiskt meddela säkerhetsteamet via SNS eller skapa ett supportärende.

# Enable GuardDuty in a Region
aws guardduty create-detector \
  --enable \
  --finding-publishing-frequency FIFTEEN_MINUTES

# EventBridge rule to react to GuardDuty HIGH severity findings
aws events put-rule \
  --name guardduty-high-severity \
  --event-pattern '{
    "source": ["aws.guardduty"],
    "detail-type": ["GuardDuty Finding"],
    "detail": {"severity": [{"numeric": [">=", 7]}]}
  }'

Scenario 7: WAF för att blockera skadliga förfrågningar

Scenario: En webbapplikation bakom en ALB utsätts för SQL-injektionsattacker. Applikationen kan inte ändras omedelbart. Lösning: Koppla AWS WAF till ALB:n. Distribuera regelgruppen AWS Managed Rules for Common Threats (Core Rule Set + SQL Database rule group), som innehåller färdiga funktioner för att upptäcka SQL-injektioner. WAF inspekterar HTTP-förfrågningar innan de når ALB:n och blockerar förfrågningar som matchar attackmönster — inga ändringar i applikationskoden krävs. Aktivera även WAF-loggning till Kinesis Firehose för säkerhetsanalys.

# Create WAF Web ACL with SQL injection protection
aws wafv2 create-web-acl \
  --name AppProtection \
  --scope REGIONAL \
  --default-action Allow={} \
  --rules '[{
    "Name": "AWSManagedRulesSQLiRuleSet",
    "Priority": 1,
    "Statement": {
      "ManagedRuleGroupStatement": {
        "VendorName": "AWS",
        "Name": "AWSManagedRulesSQLiRuleSet"
      }
    },
    "OverrideAction": {"None": {}},
    "VisibilityConfig": {"SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "SQLi"}
  }]' \
  --region us-east-1

Scenario 8: Anta en roll mellan konton

Scenario: Ett centralt säkerhetskonto behöver skrivskyddad åtkomst till alla arbetsbelastningskonton i en AWS Organisation för att genomföra säkerhetsgranskningar. Lösning: Skapa i varje arbetsbelastningskonto en IAM-roll med en trust policy som tillåter säkerhetskontot (genom konto-ID:t) att anta rollen. Koppla en skrivskyddad policy till rollen (till exempel SecurityAudit AWS managed policy). Säkerhetsteamet i det centrala kontot använder STS AssumeRole för att tillfälligt anta rollen i varje arbetsbelastningskonto. Detta följer principen om minsta möjliga behörighet — inga permanenta IAM-användare skapas i arbetsbelastningskontona.

# Trust policy in workload account (allows security account to assume role)
{
  'Version': '2012-10-17',
  'Statement': [{
    'Effect': 'Allow',
    'Principal': {
      'AWS': 'arn:aws:iam::SECURITY_ACCOUNT_ID:root'
    },
    'Action': 'sts:AssumeRole'
  }]
}

# From security account: assume role in workload account
aws sts assume-role \
  --role-arn arn:aws:iam::WORKLOAD_ACCOUNT_ID:role/SecurityAuditRole \
  --role-session-name audit-2024-01

Scenario 9: Begränsa åtgärder med SCP:er

Scenario: Ett företag använder AWS Organizations och vill förhindra att konton i en icke-produktions-OU startar dyra GPU-instanser. Lösning: Skapa en Service Control Policy (SCP) som nekar ec2:RunInstances för GPU-instansfamiljerna (p3, p4, g4, g5) och koppla den till icke-produktions-OU:n. SCP:er gäller även för rotanvändare och IAM-användare med administratörsbehörighet i medlemskontona — de fungerar som skyddsräcken som ingen identitet i kontot kan kringgå. Detta förhindrar oavsiktliga eller skadliga stora utgifter i utvecklings- och testkonton.

# SCP to deny GPU instance types in non-prod OU
{
  'Version': '2012-10-17',
  'Statement': [{
    'Sid': 'DenyGPUInstances',
    'Effect': 'Deny',
    'Action': 'ec2:RunInstances',
    'Resource': 'arn:aws:ec2:*:*:instance/*',
    'Condition': {
      'StringLike': {
        'ec2:InstanceType': ['p3.*', 'p4d.*', 'g4.*', 'g5.*']
      }
    }
  }]
}

Scenario 10: Granskningsspår för efterlevnad

Scenario: Ett företag inom finansiella tjänster måste kunna visa revisorer att alla AWS API-anrop loggas, är manipulationssäkra och sparas i 7 år. Lösning: Skapa ett multi-region AWS CloudTrail-spår som levererar loggar till en dedikerad S3-bucket i ett loggningskonto. Aktivera Log File Integrity Validation (kryptografiska digest-filer som upptäcker manipulation av loggar). Ange en S3-policy för Object Lock i Compliance-läge med en lagringsperiod på 7 år för loggningsbucketen. Detta säkerställer att loggarna inte kan tas bort eller ändras — inte ens av rotanvändaren — under den obligatoriska lagringsperioden.

# Create multi-region trail with integrity validation
aws cloudtrail create-trail \
  --name compliance-trail \
  --s3-bucket-name central-audit-logs-123 \
  --is-multi-region-trail \
  --enable-log-file-validation \
  --include-global-service-events

aws cloudtrail start-logging --name compliance-trail

Scenario 11: VPC-endpoint för privat S3-åtkomst

Scenario: EC2-instanser i en privat VPC behöver komma åt S3 utan att trafiken går via det offentliga internet. En NAT Gateway används för närvarande och kostnaderna är höga på grund av avgifterna för databehandling i NAT Gateway. Lösning: Skapa en S3 Gateway VPC Endpoint. Lägg till en rutt i det privata subnätets routningstabell som pekar S3-prefixlistan till endpointen. Trafiken till S3 stannar nu helt inom AWS-nätverkets stamnät — ingen NAT Gateway eller internetgateway behövs. S3 Gateway Endpoints är kostnadsfria (till skillnad från Interface Endpoints, som kostar per timme och tillgänglighetszon). Detta förbättrar även säkerheten genom att ta bort S3-åtkomst från vägen via det offentliga internet.

# Create S3 Gateway VPC Endpoint
aws ec2 create-vpc-endpoint \
  --vpc-id vpc-abc123 \
  --service-name com.amazonaws.us-east-1.s3 \
  --route-table-ids rtb-private-1a rtb-private-1b

# Result: route table automatically gets a route:
# Destination: pl-63a5400a (S3 prefix list)
# Target: vpce-xyz456 (the Gateway Endpoint)
# EC2 instances now reach S3 privately at no endpoint cost

Snabbtest

Testa er förståelse av begreppen i AWS Solutions Architect (SAA-C03) från den här lektionen.

Sammanfattning av lektionen

I den här lektionen gick ni igenom scenarier som omfattade: IAM-roller och instansprofiler för EC2-åtkomst utan autentiseringsuppgifter, Secrets Manager för automatisk rotation av databasautentiseringsuppgifter, AWS WAF för att blockera injektionsattacker utan kodändringar samt CloudTrail med S3 Object Lock för manipulationssäkra efterlevnadsloggar. Härnäst går vi igenom scenarier för motståndskraftiga arkitekturer med hög tillgänglighet.

Gratis att börja

Lär dig AWS Solutions Architect med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
30
Lektioner
120

Vanliga frågor

Är lektionen ”Scenarier för säker arkitektur” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen AWS Solutions Architect, inklusive ”Scenarier för säker arkitektur”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i AWS Solutions Architect innehåller totalt 4 lektioner.

Vad lär jag mig i ”Scenarier för säker arkitektur”?

Arbeta igenom scenarier om minsta privilegium i IAM, kryptering, VPC-isolering och WAF/Shield för att befästa kunskaperna inom säkerhetsdomänen. Ni övar på AWS Solutions Architect med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig AWS Solutions Architect?

Du behöver inga förkunskaper. Utbildningen i AWS Solutions Architect på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.

Hur lång tid tar lektionen ”Scenarier för säker arkitektur”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här AWS Solutions Architect-lektionen?

Ja. Varje AWS Solutions Architect-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Scenarier för säker arkitektur
  2. Scenarier för motståndskraftig arkitektur med hög tillgänglighet
  3. Scenarier för hög prestanda och kostnadsoptimering
  4. Mini-examen i full längd med blandade domäner
← Tillbaka till AWS Solutions Architect