Cloud & IT Cert Prep · Oppitunti

KMS, ACM ja salausmallit

Hallitse salausavaimia AWS KMS:llä, hanki ja kierrätä TLS-varmenteita ACM:llä ja valitse asiakaspuolen, palvelinpuolen ja siirtonaikaisen salauksen välillä.

Oppitunti 1/413 vaihetta

KMS, ACM ja salausmallit on ilmainen Cloud & IT Cert Prep-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Cloud & IT Cert Prep-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Cloud & IT Cert Prep-kurssilla on yhteensä 4 oppituntia.

AWS:n salaus: yleiskatsaus

Salaus on keskeinen tietoturvakontrolli, joka suojaa tietojen luottamuksellisuutta, vaikka tallennusväline vaarantuisi tai joku saisi pääsyn tietoihin muulla tavoin. AWS tarjoaa salausta levossa olevalle datalle (tietokantoihin, S3:een ja EBS:ään tallennettu data) ja siirrettävälle datalle (verkoissa liikkuva data). Keskeiset palvelut ovat seuraavat: AWS Key Management Service (KMS) hallinnoi levossa olevan datan salauksessa käytettäviä avaimia. AWS Certificate Manager (ACM) myöntää ja hallinnoi siirrettävän datan salaukseen käytettäviä TLS-varmenteita. On tärkeää ymmärtää, milloin ja miten kutakin käytetään SAA-C03-tutkinnon Security Architecture -alueella.

# 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 policy

AWS KMS: Key Management Service

AWS KMS on täysin hallinnoitu palvelu salausavainten luomiseen ja hallintaan. KMS käyttää Hardware Security Modules (HSMs) -moduuleja avainten suojaamiseen — avainmateriaali ei koskaan poistu HSM:stä salaamattomana. KMS integroituu useimpiin AWS-palveluihin palvelinpuolen salausta varten. Avaintyypit ovat seuraavat: AWS Managed Keys (maksuttomia ja automaattisesti vuosittain kierrätettäviä; ette voi hallita niitä suoraan), Customer Managed Keys (CMK) (1 $ kuukaudessa avainta kohden; hallitsette kierrätystä, avainkäytäntöä ja poistamista). Custom Key Store käyttää omaa CloudHSM-klusterianne vaatimusten täyttämiseen silloin, kun tarvitaan erillisiä HSM-moduuleja.

# 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 calls

KMS-avainkäytännöt ja Grant-oikeudet

Jokaisella KMS-avaimella on key policy eli resurssipohjainen käytäntö, joka määrittää, kuka voi käyttää ja hallita avainta. IAM-käytännöistä poiketen key policy -käytännöt ovat resurssipohjaisia ja pakollisia: key policy -käytännön on myönnettävä käyttöoikeus nimenomaisesti, jotta IAM-käytännöt tulevat voimaan. Hyvä käytäntö on erottaa avainten hallinta (kuka voi hallita avainta) avainten käytöstä (mitkä palvelut ja roolit voivat salata ja purkaa salauksen). Käyttäkää key grants -oikeuksia tilapäiseen delegoituun käyttöön — voitte esimerkiksi myöntää EMR-klusterille tilapäisen käyttöoikeuden KMS-avaimeen työtehtävää varten muuttamatta key policy -käytäntöä.

# 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:n envelope encryption -salaus

KMS käyttää envelope encryption -salausta suurten datamäärien tehokkaaseen suojaamiseen. KMS-avaimella ei voi salata suoraan yli 4 kilotavun kokoista dataa. Sen sijaan KMS luo Data Encryption Key (DEK) -avaimen, joka on satunnainen avain varsinaisen datan paikalliseen salaukseen. Tämän jälkeen KMS-avain (Key Encryption Key) salaa DEK-avaimen. Tallennatte salatun DEK-avaimen salatun datan yhteyteen. Salauksen purkamiseksi kutsutte ensin KMS:ää DEK-avaimen salauksen purkamista varten ja käytätte sitten selväkielistä DEK-avainta paikallisesti datan salauksen purkamiseen. Näin S3:n, EBS:n ja RDS:n salaus toimii konepellin alla.

# 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.bin

KMS-avainten kierrätys

Avainten kierrätys on tietoturvan hyvä käytäntö, jossa salausavainten kryptografinen materiaali vaihdetaan säännöllisesti. Näin rajoitetaan altistumisaikaa, jos avain vaarantuu. Customer Managed Keys -avaimille voi ottaa käyttöön automaattisen vuosittaisen kierrätyksen — KMS luo uuden avainmateriaalin ja käyttää sitä uusissa salaustoiminnoissa, mutta säilyttää vanhan avainmateriaalin olemassa olevan datan salauksen purkamista varten. AWS Managed Keys -avaimet kierrätetään automaattisesti vuosittain. Imported key material -avainmateriaali EI tue automaattista kierrätystä, vaan se on kierrätettävä manuaalisesti. Kierrätyksen jälkeen uudet KMS-toiminnot käyttävät uutta avainmateriaalia automaattisesti ilman sovellukseen tehtäviä muutoksia.

# 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)

S3:n palvelinpuolen salausvaihtoehdot

S3 tukee kolmea palvelinpuolen salausvaihtoehtoa: SSE-S3 — S3 hallinnoi avaimia AES-256-salauksella; maksuton ja tarjoaa vähiten hallintamahdollisuuksia. SSE-KMS — käyttää KMS-avainta (AWS:n hallinnoimaa avainta tai CMK-avainta), tarjoaa avainten valvontajäljen CloudTrailissa, tukee avainkäytäntöjä ja aiheuttaa kustannuksia KMS API -kutsuista. SSE-C — annatte ja hallinnoitte avainmateriaalia jokaisen pyynnön yhteydessä; S3 ei koskaan tallenna avainta. Käyttäkää SSE-KMS-salausta, kun tarvitsette valvonnan siitä, kuka avainta käytti ja milloin. Käyttäkää SSE-S3-salausta vähäherkälle datalle, kun yksinkertaisuus ja kustannukset ovat tärkeitä. Pakottakaa salaus bucket policy -käytännöllä, joka estää PutObject-toiminnon ilman salausta.

# 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) myöntää, hallinnoi ja uusii automaattisesti SSL/TLS-varmenteet AWS-palveluille maksutta. ACM-varmenteita voi käyttää palvelujen ALB, NLB, CloudFront, API Gateway ja AppSync kanssa. ACM hallinnoi varmenteiden elinkaarta automaattisesti — se uusii varmenteet 60 päivää ennen niiden vanhenemista ja ottaa uusitut varmenteet käyttöön läpinäkyvästi. Voitte pyytää varmenteita omistamillenne verkkotunnuksille (vahvistus DNS:n tai sähköpostin avulla) tai tuoda kolmannen osapuolen varmenteita. ACM-varmenteita EI voi ladata — ne on sidottu AWS-palveluun, johon ne on liitetty.

# 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) mahdollistaa täysin hallinnoidun yksityisen varmentajahierarkian luomisen sisäisille resursseille myönnettäviä varmenteita varten – esimerkiksi EC2-instansseille, konteille, sisäisille rajapinnoille ja IoT-laitteille. Toisin kuin julkiset ACM-varmenteet (joita käytetään internetiin näkyvissä palveluissa), yksityisiä CA-varmenteita voidaan myöntää mille tahansa sisäiselle isäntänimelle tai IP-osoitteelle. Käyttäkää Private CA:ta mikropalveluiden väliseen keskinäiseen TLS-todennukseen (mTLS), varmenteisiin perustuvaan VPN-todennukseen ja sisäisen PKI:n vaatimaan vaatimustenmukaisuuteen. Private CA maksaa 400 dollaria kuukaudessa CA:ta kohti sekä 0,75 dollaria kutakin myönnettyä varmennetta kohti.

# 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/xxx

EBS:n ja RDS:n salaus

EBS-taltion salaus otetaan käyttöön taltiota luotaessa (tai kopioimalla olemassa oleva taltio salaus käytössä). Kaikki taltion tiedot, tilannevedokset mukaan lukien, salataan määrittämällänne KMS-avaimella. EBS-salaus on käyttöjärjestelmälle läpinäkyvää, joten sovelluksiin ei tarvita muutoksia. RDS-salaus otetaan käyttöön tietokanta-instanssia luotaessa; olemassa olevaa salaamatonta RDS-instanssia ei voi salata suoraan. Kiertotapana voitte luoda salaamattomasta instanssista salatun tilannevedoksen ja palauttaa sen uudeksi salatuksi instanssiksi. Sekä EBS:n että RDS:n salatut tilannevedokset pysyvät salattuina, kun niitä kopioidaan.

# 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-key

Asiakaspuolen ja palvelinpuolen salaus

Palvelinpuolen ja asiakaspuolen salauksen eron ymmärtäminen on tärkeää SAA-C03-kokeessa. Palvelinpuolen salaus: AWS salaa tiedot niiden vastaanottamisen jälkeen ja purkaa salauksen ennen niiden toimittamista – tiedot ovat selväkielisiä sovelluksen ja AWS:n välissä. Asiakaspuolen salaus: salaatte tiedot ennen niiden lähettämistä AWS:lle – AWS tallentaa ainoastaan salatekstin eikä koskaan näe selväkielisiä tietoja. Käyttäkää asiakaspuolen salausta, kun tietojen arkaluonteisuus on erittäin suuri ettekä voi luottaa pilvipalveluntarjoajan käsittelevän selväkielisiä tietoja, kuten terveydenhuollon potilastietojen tai tiukasti säänneltyjen taloustietojen tapauksessa.

# 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 policy

KMS:n tilien välinen käyttöoikeus

KMS-avaimia voidaan jakaa AWS-tilien välillä tilien välisiä salaustilanteita varten. Jos esimerkiksi Account A:n sovellus kirjoittaa salattuja tietoja Account B:n omistamaan S3-säilöön, Account A:n KMS-avaimen on sallittava Account B:n päämiehen käyttää sitä. Määrittäkää KMS-avaimen käytäntö Account A:ssa myöntämään tilien välinen käyttöoikeus ja luokaa sitten IAM-käytäntö Account B:ssä sallimaan roolille Account A:n avaimen käyttö. Tämä malli on yleinen tietojen jakamiseen ja usean tilin arkkitehtuureissa, joissa keskitetty tili hallinnoi salausavaimia.

# 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 it

Pikatarkistus

Testatkaa ymmärrystänne tämän oppitunnin AWS Solutions Architect (SAA-C03) -käsitteistä.

Oppitunnin yhteenveto

Tässä oppitunnissa opitte, että KMS hallinnoi salausavaimia HSM-suojauksella ja tukee CMK-avaimia yksityiskohtaiseen käyttöoikeuksien hallintaan ja auditointilokeihin, ACM myöntää ja uusii TLS-varmenteet automaattisesti AWS-palveluille ilman lisämaksua ja salausta voidaan käyttää palvelinpuolella (KMS) tai asiakaspuolella, joista palvelinpuolen salaus on AWS-pohjaisten työkuormien yleisin malli. Pakottakaa salaus käyttöön säilökäytännöillä, jotka estävät salaamattomat toiminnot. Seuraavaksi tutustumme GuardDutyyn, Inspectoriin ja Macieen.

Aloita maksutta

Opi Cloud & IT Cert Prep tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
150
Oppitunnit
600

Usein kysytyt kysymykset

Onko oppitunti ”KMS, ACM ja salausmallit” ilmainen?

Kyllä – oppitunnin ”KMS, ACM ja salausmallit” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Cloud & IT Cert Prep-kurssin, päivitä CoddyKit PROhon. Cloud & IT Cert Prep-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”KMS, ACM ja salausmallit”?

Hallitse salausavaimia AWS KMS:llä, hanki ja kierrätä TLS-varmenteita ACM:llä ja valitse asiakaspuolen, palvelinpuolen ja siirtonaikaisen salauksen välillä. Harjoittelet Cloud & IT Cert Prep-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Cloud & IT Cert Prep-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Cloud & IT Cert Prep-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”KMS, ACM ja salausmallit”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Cloud & IT Cert Prep-oppitunnilla?

Kyllä. Jokainen Cloud & IT Cert Prep-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. KMS, ACM ja salausmallit
  2. GuardDuty, Inspector ja Macie
  3. Secrets Manager ja Parameter Store
  4. WAF, Shield ja Network Firewall
← Takaisin: Cloud & IT Cert Prep