RDS-sikkerhed: Kryptering og parametergrupper
Kryptér RDS i hvile med KMS, styr kryptering på forbindelsesniveau med parametergrupper, og opnå sikkerhed med IAM-godkendelse.
RDS-sikkerhed: Kryptering og parametergrupper er en gratis AWS Solutions Architect-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i AWS Solutions Architect, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. AWS Solutions Architect-kurset indeholder 4 lektioner i alt.
RDS-kryptering i hvile
RDS understøtter kryptering af data i hvile ved hjælp af AWS Key Management Service (KMS). Når du aktiverer kryptering ved oprettelsen af DB-instansen, krypteres alle data på de underliggende EBS-diskenheder, automatiske sikkerhedskopier, snapshots og Read Replicas med den angivne KMS-nøgle.
Kryptering skal aktiveres på oprettelsestidspunktet—du kan ikke kryptere en eksisterende ukrypteret instans på stedet. Løsningen er at tage et ukrypteret snapshot, kopiere det med kryptering aktiveret og gendanne fra det krypterede snapshot. KMS-nøglen kan være en AWS-administreret nøgle eller en Customer-Managed Key (CMK), hvis du har brug for yderligere kontrol og revision.
# Create an encrypted RDS instance
aws rds create-db-instance \
--db-instance-identifier mydb-encrypted \
--engine mysql \
--db-instance-class db.t3.micro \
--master-username admin \
--master-user-password MyPass123! \
--allocated-storage 20 \
--storage-encrypted \
--kms-key-id arn:aws:kms:us-east-1:123456789:key/my-key-idKryptering af en eksisterende ukrypteret RDS-instans
Da du ikke kan aktivere kryptering på en eksisterende instans, skal du følge denne migreringssti:
- Opret et manuelt snapshot af den ukrypterede instans
- Kopiér snapshottet, og aktivér kryptering under kopieringen ved at angive en KMS-nøgle
- Gendan en ny DB-instans fra det krypterede snapshot
- Opdatér din applikations endpoint, så det peger på den nye instans
- Slet den gamle ukrypterede instans
Denne fremgangsmåde medfører en vis nedetid, medmindre du bruger DMS til at holde den nye krypterede instans synkroniseret inden overgangen.
# Copy snapshot with encryption enabled
aws rds copy-db-snapshot \
--source-db-snapshot-identifier mydb-unencrypted-snap \
--target-db-snapshot-identifier mydb-encrypted-snap \
--kms-key-id alias/aws/rdsKryptering under overførsel med SSL/TLS
RDS krypterer data under overførsel ved hjælp af SSL/TLS. Hver motor leverer et CA-certifikat, der kan downloades, og som din klientdriver bruger til at bekræfte serverens identitet. Hvis du vil gennemtvinge SSL-forbindelser, skal du konfigurere databasemotoren til at afvise ukrypterede forbindelser.
I MySQL skal du angive parameteren require_secure_transport = ON i parametergruppen. I PostgreSQL skal du angive ssl = 1 og eventuelt rds.force_ssl = 1 for helt at afvise forbindelser uden SSL. Mange Java- og Python-databasedrivere accepterer også forbindelsesstrengparameteren sslmode=require.
# Connect to RDS MySQL over SSL
mysql -h mydb.abcd1234.us-east-1.rds.amazonaws.com \
-u admin -p \
--ssl-ca=rds-ca-2019-root.pem \
--ssl-verify-server-certHvad er parametergrupper?
Parametergrupper er navngivne samlinger af konfigurationsindstillinger for en motor, som du knytter til en RDS-instans. De svarer i RDS til at redigere my.cnf i MySQL eller postgresql.conf i PostgreSQL, men administreres af AWS og versionsstyres pr. motorfamilie.
AWS leverer en standardparametergruppe til hver motorversion, men indstillingerne i den kan ikke redigeres. Hvis du vil tilpasse parametre, skal du oprette en brugerdefineret parametergruppe, ændre de ønskede parametre og knytte den til din DB-instans. Ændringer af statiske parametre kræver en genstart, mens dynamiske parametre træder i kraft med det samme.
# Create a custom parameter group
aws rds create-db-parameter-group \
--db-parameter-group-name my-mysql8-params \
--db-parameter-group-family mysql8.0 \
--description 'Custom MySQL 8.0 parameters'Ændring af indstillinger for parametergrupper
Når du har oprettet en brugerdefineret parametergruppe, kan du ændre individuelle parametre ved hjælp af CLI-kommandoen modify-db-parameter-group eller konsollen. Parametre har en anvendelsesmetode: immediate (træder i kraft uden genstart) eller pending-reboot (træder først i kraft efter næste genstart af instansen).
Vigtige parametre, du bør kende til eksamen: max_connections (begrænser samtidige forbindelser), innodb_buffer_pool_size (størrelsen på MySQLs cache i hukommelsen), log_bin_trust_function_creators (tillader lagrede funktioner, der skriver til den binære log), og rds.force_ssl (tvinger SSL for PostgreSQL).
# Force SSL in a PostgreSQL parameter group
aws rds modify-db-parameter-group \
--db-parameter-group-name my-postgres-params \
--parameters 'ParameterName=rds.force_ssl,ParameterValue=1,ApplyMethod=immediate'Optiongrupper til yderligere funktioner
Optiongrupper minder om parametergrupper, men styrer tilføjelsesfunktioner til databasemotoren i stedet for at finjustere konfigurationen. De bruges primært sammen med Oracle og SQL Server til at aktivere funktioner som Oracle Application Express (APEX), SQL Server Transparent Data Encryption (TDE) eller SQL Server-godkendelse med Active Directory.
Hver option i en optiongruppe kan have sine egne indstillinger. Optiongrupper versionsstyres pr. motorfamilie og skal knyttes til DB-instansen. De fleste open source-motorer (MySQL, PostgreSQL, MariaDB) har sjældent brug for brugerdefinerede optiongrupper.
IAM-databasegodkendelse
RDS understøtter IAM-databasegodkendelse for MySQL- og PostgreSQL-motorer. I stedet for et statisk brugernavn og en statisk adgangskode antager din applikation en IAM-rolle og genererer et midlertidigt godkendelsestoken (gyldigt i 15 minutter) ved hjælp af AWS CLI-kommandoen generate-db-auth-token eller et SDK-kald.
Fordelene omfatter ingen langtidsgyldige databaseadgangskoder, automatisk rotation af legitimationsoplysninger via IAM-politikker og centraliseret adgangskontrol. Funktionen kræver, at du aktiverer --enable-iam-database-authentication på instansen og opretter en databasebruger, der er knyttet til en IAM-rolle.
# Generate an RDS IAM auth token
aws rds generate-db-auth-token \
--hostname mydb.abcd1234.us-east-1.rds.amazonaws.com \
--port 3306 \
--username mydbuser \
--region us-east-1Integration af Secrets Manager med RDS
AWS Secrets Manager kan gemme og automatisk rotere din RDS-masteradgangskode og applikationens legitimationsoplysninger. Når rotation er aktiveret, kalder Secrets Manager en Lambda-funktion, som opdaterer databaseadgangskoden og gemmer den nye værdi i hemmeligheden—din applikation henter den seneste hemmelighedsværdi via Secrets Manager API'et, så den altid har gyldige legitimationsoplysninger.
Når du opretter en RDS-instans i konsollen, kan du tilvælge, at Secrets Manager administrerer masterlegitimationsoplysningerne. Det fjerner hardcodede adgangskoder fra kode og miljøvariabler.
# Retrieve RDS credentials from Secrets Manager
aws secretsmanager get-secret-value \
--secret-id rds!db-1234abcd-5678-efgh-ijkl-mnopqrstuvwx \
--query SecretString \
--output text | python3 -m json.toolVPC- og sikkerhedsgruppekontroller
RDS-instanser kører i en VPC og bruger DB-undernetgrupper til at angive, hvilke undernet (på tværs af flere AZ'er) instansen kan placeres i. Det er best practice at placere RDS i private undernet uden direkte internetadgang.
Sikkerhedsgrupper styrer, hvilke IP-adresser og andre sikkerhedsgrupper der kan nå DB-porten (f.eks. TCP 3306 for MySQL). Applikationslagets sikkerhedsgruppe bør være den eneste tilladte kilde i RDS-sikkerhedsgruppen, så netværksbaserede mindste privilegier håndhæves. Konfigurér aldrig 0.0.0.0/0 (al trafik) som en indgående regel i en RDS-sikkerhedsgruppe.
Udvidet overvågning og revisionslogge
Enhanced Monitoring publicerer målinger på operativsystemniveau (CPU, hukommelse, filsystem, disk-I/O) til CloudWatch Logs hvert 1.–60. sekund, hvilket giver en finere granularitet end standardmålingerne i CloudWatch, der foretages hvert 60. sekund. Funktionen bruger en agent, der kører på DB-værten, og er tilgængelig for alle motorer undtagen SQL Server i spejlingstilstand.
Revisionslogge for databasen (generel forespørgselslog og log over langsomme forespørgsler for MySQL; pgaudit for PostgreSQL) kan publiceres til CloudWatch Logs til analyse af overholdelse af krav. Aktivér disse via parametergrupper, og konfigurér derefter logeksporten i RDS-konsollen under Logeksport.
# Enable PostgreSQL logs export to CloudWatch
aws rds modify-db-instance \
--db-instance-identifier mydb \
--cloudwatch-logs-export-configuration 'EnableLogTypes=[postgresql,upgrade]' \
--apply-immediatelyOpsummering af bedste sikkerhedspraksisser
Vigtige bedste sikkerhedspraksisser for RDS til SAA-C03-eksamen:
- Aktivér kryptering i hvile med en KMS CMK, når du opretter instansen
- Gennemtving SSL/TLS under overførsel via indstillinger i parametergruppen
- Placér instanser i private undernet med begrænsende sikkerhedsgrupper
- Brug IAM-databasegodkendelse eller Secrets Manager for at undgå statiske adgangskoder
- Aktivér CloudTrail for at logge RDS API-kald og CloudWatch Logs til revisionslogge for databasen
- Brug AWS Config-regler (f.eks.
rds-instance-public-access-check) til at opdage fejlkonfigurationer
Hurtigt tjek
Test din forståelse af begreberne fra denne lektion om AWS Solutions Architect (SAA-C03).
Opsummering af lektionen
I denne lektion har du lært, at RDS-kryptering i hvile bruger KMS og skal aktiveres ved oprettelsen, at parametergrupper styrer motorkonfigurationen, herunder håndhævelse af SSL/TLS under overførsel, og at IAM-databasegodkendelse og Secrets Manager eliminerer statiske databaseadgangskoder. Næste gang ser vi på DynamoDB-tabeller, elementer og design af primærnøgler.
Lær AWS Solutions Architect med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 30
- Lektioner
- 120
Ofte stillede spørgsmål
Er lektionen “RDS-sikkerhed: Kryptering og parametergrupper” gratis?
Ja — alle 3 lektioner i læringssporet AWS Solutions Architect, inklusive “RDS-sikkerhed: Kryptering og parametergrupper”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. AWS Solutions Architect-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “RDS-sikkerhed: Kryptering og parametergrupper”?
Kryptér RDS i hvile med KMS, styr kryptering på forbindelsesniveau med parametergrupper, og opnå sikkerhed med IAM-godkendelse. Du øver dig i AWS Solutions Architect med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på AWS Solutions Architect?
Der kræves ingen tidligere erfaring. AWS Solutions Architect på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.
Hvor lang tid tager lektionen “RDS-sikkerhed: Kryptering og parametergrupper”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne AWS Solutions Architect-lektion?
Ja. Alle AWS Solutions Architect-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- RDS-motorer og instansklasser
- Multi-AZ og automatiske sikkerhedskopier
- Read Replicas til skalering af læsninger
- RDS-sikkerhed: Kryptering og parametergrupper