KMS, ACM och krypteringsmönster
Hantera krypteringsnycklar med AWS KMS, skapa och rotera TLS-certifikat med ACM och välj mellan klientkryptering, serverkryptering och kryptering under överföring.
KMS, ACM och krypteringsmönster är en gratis lektion i Cloud & IT Cert Prep på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Cloud & IT Cert Prep, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Cloud & IT Cert Prep innehåller totalt 4 lektioner.
Kryptering i AWS: översikt
Kryptering är en grundläggande säkerhetskontroll som skyddar datakonfidentialiteten även om lagringsmedier utsätts för intrång eller åtkomst erhålls på andra sätt. AWS erbjuder kryptering av data i vila (lagrad i databaser, S3 och EBS) och under överföring (som skickas över nätverk). Viktiga tjänster: AWS Key Management Service (KMS) hanterar krypteringsnycklar för kryptering av data i vila. AWS Certificate Manager (ACM) tillhandahåller och hanterar TLS-certifikat för kryptering under överföring. Det är viktigt att förstå när och hur varje tjänst ska användas för Security Architecture-domänen i SAA-C03.
# Encryption coverage on AWS:
# At rest (KMS):
# S3, EBS, RDS, DynamoDB, EFS, SQS,
# Lambda env vars, Secrets Manager, SSM Parameter Store
# In transit (ACM/TLS):
# ALB listeners (HTTPS), API Gateway, CloudFront,
# Direct Connect, VPN, inter-service communication
# Both:
# S3 Server-Side Encryption + HTTPS only policyAWS KMS: Key Management Service
AWS KMS är en fullständigt hanterad tjänst för att skapa och styra krypteringsnycklar. KMS använder Hardware Security Modules (HSMs) för att skydda nycklarna — nyckelmaterialet lämnar aldrig HSM:en i okrypterat skick. KMS integreras med de flesta AWS-tjänster för kryptering på serversidan. Nyckeltyper: AWS Managed Keys (kostnadsfria, roteras automatiskt varje år och kan inte styras direkt av Er), Customer Managed Keys (CMK) (1 USD/månad styck; Ni styr rotation, nyckelpolicy och borttagning). Custom Key Store använder Ert eget CloudHSM-kluster för efterlevnadskrav som föreskriver dedikerade HSM:er.
# Create a Customer Managed Key (CMK)
aws kms create-key \
--description 'Production database encryption key' \
--key-usage ENCRYPT_DECRYPT \
--origin AWS_KMS \
--tags TagKey=Purpose,TagValue=RDS-Encryption
# Create an alias for the key
aws kms create-alias \
--alias-name alias/prod-db-key \
--target-key-id arn:aws:kms:us-east-1:123:key/abc-def
# CMK costs: $1/month + $0.03 per 10,000 API callsKMS-nyckelpolicyer och beviljanden
Varje KMS-nyckel har en key policy — en resursbaserad policy som styr vem som får använda och hantera nyckeln. Till skillnad från IAM-policyer, som är identitetsbaserade, krävs nyckelpolicyer: nyckelpolicyn måste uttryckligen bevilja åtkomst för att IAM-policyer ska börja gälla. En god praxis är att separera nyckeladministration (vem som får hantera nyckeln) från användning av nyckeln (vilka tjänster och roller som får kryptera och dekryptera). Använd key grants för tillfälligt delegerad åtkomst — till exempel genom att ge ett EMR-kluster tillfällig användning av en KMS-nyckel för ett jobb utan att ändra nyckelpolicyn.
# KMS key policy: grant RDS and admin access
{
'Statement': [
{
'Sid': 'Enable root account full access',
'Principal': {'AWS': 'arn:aws:iam::123:root'},
'Action': 'kms:*',
'Effect': 'Allow'
},
{
'Sid': 'Allow RDS to use this key',
'Principal': {'Service': 'rds.amazonaws.com'},
'Action': ['kms:Encrypt','kms:Decrypt','kms:GenerateDataKey'],
'Effect': 'Allow'
}
]
}KMS-kuvertkryptering
KMS använder kuvertkryptering för att effektivt skydda stora mängder data. Ni kan inte kryptera mer än 4 KB direkt med en KMS-nyckel. I stället: KMS genererar en Data Encryption Key (DEK) — en slumpmässig nyckel som används för att kryptera Era faktiska data lokalt. DEK krypteras sedan med Er KMS-nyckel (den så kallade Key Encryption Key). Ni lagrar den krypterade DEK:en tillsammans med de krypterade data. Vid dekryptering anropar Ni först KMS för att dekryptera DEK:en och använder sedan den klartextbaserade DEK:en lokalt för att dekryptera data. Så här fungerar kryptering i S3, EBS och RDS under huven.
# Generate a Data Key (for envelope encryption)
aws kms generate-data-key \
--key-id alias/my-key \
--key-spec AES_256
# Response contains:
# Plaintext: base64-encoded DEK (use to encrypt data locally)
# CiphertextBlob: KMS-encrypted DEK (store alongside data)
# To decrypt:
# 1. Call kms:Decrypt(CiphertextBlob) -> plaintext DEK
# 2. Use plaintext DEK to decrypt data locally
# 3. Zeroize plaintext DEK from memory
aws kms decrypt --ciphertext-blob fileb://encrypted-dek.binRotation av KMS-nycklar
Nyckelrotation är en god säkerhetspraxis där kryptografiskt nyckelmaterial byts ut regelbundet, vilket begränsar exponeringsperioden om en nyckel komprometteras. För Customer Managed Keys kan Ni aktivera automatisk årlig rotation — KMS genererar nytt nyckelmaterial och använder det för nya krypteringsåtgärder, samtidigt som det gamla nyckelmaterialet behålls för att dekryptera befintliga data. AWS Managed Keys roteras automatiskt varje år. Imported key material stöder INTE automatisk rotation (Ni måste rotera det manuellt). Efter rotation använder nya KMS-åtgärder automatiskt det nya nyckelmaterialet utan ändringar i applikationen.
# Enable automatic annual key rotation
aws kms enable-key-rotation \
--key-id alias/prod-db-key
# Verify rotation is enabled
aws kms get-key-rotation-status \
--key-id alias/prod-db-key
# Manual rotation (for imported key material):
# 1. Create a new CMK
# 2. Update all services to use new key
# 3. Re-encrypt existing data with new key
# 4. Schedule old key for deletion (minimum 7-day waiting period)Alternativ för S3-kryptering på serversidan
S3 stöder tre alternativ för kryptering på serversidan: SSE-S3 — S3 hanterar nycklar med AES-256, kostnadsfritt och med minimal kontroll. SSE-KMS — använder en KMS-nyckel (AWS-hanterad eller CMK), tillhandahåller ett revisionsspår för nyckeln i CloudTrail, stöder nyckelpolicyer och kostar per KMS API-anrop. SSE-C — Ni tillhandahåller och hanterar nyckelmaterialet med varje anrop; S3 lagrar aldrig nyckeln. Använd SSE-KMS när Ni behöver kunna granska vem som använde nyckeln och när. Använd SSE-S3 för data med låg känslighet där enkelhet och kostnad är viktiga. Tvinga fram kryptering med en bucket-policy som nekar PutObject utan kryptering.
# Enforce SSE-KMS on all new S3 objects
aws s3api put-bucket-policy \
--bucket my-secure-bucket \
--policy '{
"Statement": [{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::my-secure-bucket/*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-server-side-encryption": "aws:kms"
}
}
}]
}'
# Set default encryption for bucket
aws s3api put-bucket-encryption \
--bucket my-secure-bucket \
--server-side-encryption-configuration '{"Rules":[{"ApplyServerSideEncryptionByDefault":{"SSEAlgorithm":"aws:kms","KMSMasterKeyID":"alias/my-key"}}]}'AWS Certificate Manager (ACM)
AWS Certificate Manager (ACM) tillhandahåller, hanterar och förnyar automatiskt SSL/TLS-certifikat för AWS-tjänster utan kostnad. ACM-certifikat kan användas med ALB, NLB, CloudFront, API Gateway och AppSync. ACM hanterar certifikatets hela livscykel automatiskt — certifikat förnyas 60 dagar före utgångsdatum och den förnyade versionen distribueras transparent. Ni kan begära certifikat för domäner som Ni äger (validerade via DNS eller e-post) eller importera certifikat från tredje part. ACM-certifikat kan INTE laddas ned — de är bundna till den AWS-tjänst som de är kopplade till.
# Request a public ACM certificate
aws acm request-certificate \
--domain-name app.example.com \
--subject-alternative-names '*.example.com' \
--validation-method DNS
# ACM returns a CNAME record to add to Route 53
# Add the CNAME -> ACM validates domain ownership
# Certificate is issued and auto-renews annually
# Attach to ALB listener (HTTPS:443)
aws elbv2 create-listener \
--load-balancer-arn <ALB-ARN> \
--protocol HTTPS --port 443 \
--certificates CertificateArn=arn:aws:acm:us-east-1:123:certificate/abc \
--default-actions Type=forward,TargetGroupArn=<TG-ARN>ACM Private Certificate Authority
ACM Private CA (Certificate Authority) låter dig skapa en fullständigt hanterad, privat CA-hierarki för att utfärda certifikat till interna resurser – EC2-instanser, containrar, interna API:er och IoT-enheter. Till skillnad från offentliga ACM-certifikat (som används med internetanslutna tjänster) kan privata CA-certifikat utfärdas för valfritt internt värdnamn eller valfri intern IP-adress. Använd Private CA för: ömsesidig TLS (mTLS) mellan mikrotjänster, certifikatbaserad autentisering för VPN och efterlevnadskrav för intern PKI. Private CA kostar 400 USD per månad för CA:n samt 0,75 USD per utfärdat certifikat.
# Create ACM Private Certificate Authority
aws acm-pca create-certificate-authority \
--certificate-authority-type ROOT \
--certificate-authority-configuration '{
"KeyAlgorithm": "RSA_2048",
"SigningAlgorithm": "SHA256WITHRSA",
"Subject": {
"Country": "US",
"Organization": "Example Corp",
"CommonName": "Example Corp Internal CA"
}
}'
# Issue certificate from private CA
aws acm request-certificate \
--domain-name internal-service.example.internal \
--certificate-authority-arn arn:aws:acm-pca:us-east-1:123:certificate-authority/xxxKryptering av EBS och RDS
För kryptering av EBS-volymer aktiverar du kryptering när volymen skapas (eller kopierar en befintlig volym med kryptering aktiverad). Alla data på volymen, inklusive ögonblicksbilder, krypteras med den KMS-nyckel du anger. EBS-kryptering är transparent för operativsystemet – inga ändringar i applikationen behövs. För RDS-kryptering aktiverar du kryptering när DB-instansen skapas; du kan inte kryptera en befintlig okrypterad RDS-instans direkt. Lösning: skapa en krypterad ögonblicksbild från en okrypterad instans och återställ den sedan till en ny krypterad instans. Krypterade ögonblicksbilder från både EBS och RDS förblir krypterade när de kopieras.
# Enable account-level EBS default encryption
aws ec2 enable-ebs-encryption-by-default
aws ec2 modify-ebs-default-kms-key-id \
--kms-key-id alias/prod-ebs-key
# Encrypt an existing unencrypted RDS instance:
# 1. Create unencrypted snapshot
aws rds create-db-snapshot \
--db-instance-identifier mydb \
--db-snapshot-identifier mydb-plain-snapshot
# 2. Copy snapshot with encryption
aws rds copy-db-snapshot \
--source-db-snapshot-identifier mydb-plain-snapshot \
--target-db-snapshot-identifier mydb-encrypted-snapshot \
--kms-key-id alias/prod-db-keyKlientbaserad kontra serverbaserad kryptering
Det är viktigt att förstå skillnaden mellan serverbaserad och klientbaserad kryptering inför SAA-C03-examen. Serverbaserad kryptering: AWS krypterar data efter att ha tagit emot den och dekrypterar den innan den levereras – data är i klartext mellan din applikation och AWS. Klientbaserad kryptering: du krypterar data innan den skickas till AWS – AWS lagrar endast chiffertext och ser aldrig klartexten. Använd klientbaserad kryptering för data med högsta känslighetsnivå, när du inte kan lita på att molnleverantören hanterar klartext, till exempel vårdjournaler eller finansiella data som omfattas av strikta regler.
# Client-side encryption with AWS Encryption SDK
# (conceptual Python example)
# 1. Application encrypts data locally using KMS DEK
# from aws_encryption_sdk import KmsKeyProvider, encrypt
# key_provider = KmsKeyProvider(key_ids=['alias/my-key'])
# ciphertext, _ = encrypt(
# source=b'Sensitive patient data',
# key_provider=key_provider
# )
# 2. Send ciphertext to S3
# s3.put_object(Bucket='hipaa-data', Key='record.enc', Body=ciphertext)
# AWS only stores ciphertext - cannot decrypt without your key policyKMS-åtkomst mellan AWS-konton
KMS-nycklar kan delas mellan AWS-konton för scenarier med kryptering mellan konton. Om applikationen i konto A till exempel skriver krypterade data till en S3-bucket som ägs av konto B, måste KMS-nyckeln i konto A tillåta att ett principal i konto B använder den. Konfigurera KMS-nyckelpolicyn i konto A så att den beviljar åtkomst mellan konton och skapa sedan en IAM-policy i konto B som tillåter rollen att använda nyckeln i konto A. Detta mönster är vanligt i arkitekturer för datadelning och miljöer med flera konton, där ett centralt konto hanterar krypteringsnycklarna.
# KMS key policy: allow cross-account access
# (in Account A's key policy)
{
'Sid': 'Allow Account B to use this key',
'Effect': 'Allow',
'Principal': {
'AWS': 'arn:aws:iam::999999999999:root'
},
'Action': [
'kms:Encrypt',
'kms:Decrypt',
'kms:ReEncrypt*',
'kms:GenerateDataKey*',
'kms:DescribeKey'
],
'Resource': '*'
}
# Account B IAM policy also needed to allow the role to use itSnabbtest
Testa dina kunskaper om AWS Solutions Architect-koncept (SAA-C03) från den här lektionen.
Sammanfattning av lektionen
I den här lektionen har du lärt dig att: KMS hanterar krypteringsnycklar med HSM-skydd och stöder CMK:er för detaljerad åtkomstkontroll och granskningsspår, ACM tillhandahåller och förnyar TLS-certifikat automatiskt för AWS-tjänster utan kostnad och kryptering kan tillämpas serverbaserat (KMS) eller klientbaserat, där serverbaserad kryptering är det vanligaste mönstret för AWS-nativa arbetsbelastningar. Framtvinga kryptering med bucket-policyer som nekar okrypterade åtgärder. Nästa gång utforskar vi GuardDuty, Inspector och Macie.
Lär dig Cloud & IT Cert Prep 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
- 150
- Lektioner
- 600
Vanliga frågor
Är lektionen ”KMS, ACM och krypteringsmönster” gratis?
Ja – hela texten till ”KMS, ACM och krypteringsmönster” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Cloud & IT Cert Prep, kan Ni uppgradera till CoddyKit PRO. Kursen i Cloud & IT Cert Prep innehåller totalt 4 lektioner.
Vad lär jag mig i ”KMS, ACM och krypteringsmönster”?
Hantera krypteringsnycklar med AWS KMS, skapa och rotera TLS-certifikat med ACM och välj mellan klientkryptering, serverkryptering och kryptering under överföring. Ni övar på Cloud & IT Cert Prep 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 Cloud & IT Cert Prep?
Du behöver inga förkunskaper. Utbildningen i Cloud & IT Cert Prep 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 ”KMS, ACM och krypteringsmönster”?
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 Cloud & IT Cert Prep-lektionen?
Ja. Varje Cloud & IT Cert Prep-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
- KMS, ACM och krypteringsmönster
- GuardDuty, Inspector och Macie
- Secrets Manager och Parameter Store
- WAF, Shield och Network Firewall