RDS-säkerhet: Kryptering och parametergrupper
Kryptera RDS i vila med KMS, kontrollera kryptering på anslutningsnivå med parametergrupper och säkra åtkomsten med IAM-autentisering.
RDS-säkerhet: Kryptering och parametergrupper är en gratis lektion i AWS Solutions Architect på CoddyKit. Detta är lektion 4 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.
RDS-kryptering i vila
RDS stöder kryptering i vila med AWS Key Management Service (KMS). När du aktiverar kryptering när DB-instansen skapas krypteras alla data på de underliggande EBS-volymerna, automatiska säkerhetskopieringar, snapshots och Read Replicas med den angivna KMS-nyckeln.
Kryptering måste aktiveras när instansen skapas – du kan inte kryptera en befintlig okrypterad instans på plats. Lösningen är att ta en okrypterad snapshot, kopiera den med kryptering aktiverad och återställa från den krypterade snapshoten. KMS-nyckeln kan vara en AWS-hanterad nyckel eller en Customer-Managed Key (CMK) för ytterligare kontroll och granskning.
# 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-idKryptera en befintlig okrypterad RDS-instans
Eftersom du inte kan aktivera kryptering på en befintlig instans följer du denna migreringsväg:
- Skapa en manuell snapshot av den okrypterade instansen
- Kopiera snapshoten och aktivera kryptering under kopieringen genom att ange en KMS-nyckel
- Återställ en ny DB-instans från den krypterade snapshoten
- Uppdatera applikationens endpoint så att den pekar på den nya instansen
- Ta bort den gamla okrypterade instansen
Den här metoden medför viss driftstoppstid, såvida du inte använder DMS för att hålla den nya krypterade instansen synkroniserad före övergången.
# 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 överföring med SSL/TLS
RDS krypterar data under överföring med SSL/TLS. Varje engine tillhandahåller ett CA-certifikat som kan laddas ned och som klientens drivrutin använder för att verifiera serverns identitet. Om du vill tvinga fram SSL-anslutningar konfigurerar du databasmotorn så att den avvisar okrypterade anslutningar.
För MySQL anger du parametern require_secure_transport = ON i parametergruppen. För PostgreSQL anger du ssl = 1 och eventuellt rds.force_ssl = 1 för att helt avvisa anslutningar utan SSL. Många databasdrivrutiner för Java och Python stöder också anslutningssträngsparametern 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-certParametergrupper: Vad är de?
Parametergrupper är namngivna samlingar med konfigurationsinställningar för en engine som du kopplar till en RDS-instans. De motsvarar att redigera my.cnf i MySQL eller postgresql.conf i PostgreSQL, men hanteras av AWS och versionshanteras per engine-familj.
AWS tillhandahåller en standardparametergrupp för varje engine-version, men inställningarna i den kan inte redigeras. Om du vill anpassa parametrar skapar du en anpassad parametergrupp, ändrar de önskade parametrarna och kopplar den till din DB-instans. Ändringar av statiska parametrar kräver en omstart, medan dynamiska parametrar börjar gälla omedelbart.
# 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'Ändra inställningar i parametergrupper
När du har skapat en anpassad parametergrupp ändrar du enskilda parametrar med CLI-kommandot modify-db-parameter-group eller i konsolen. Parametrar har en tillämpningsmetod: immediate (börjar gälla utan omstart) eller pending-reboot (börjar endast gälla efter nästa omstart av instansen).
Viktiga parametrar att känna till inför provet: max_connections (begränsar samtidiga anslutningar), innodb_buffer_pool_size (storleken på MySQL:s cache i minnet), log_bin_trust_function_creators (tillåter lagrade funktioner som skriver till binärloggen) och rds.force_ssl (tvingar fram SSL för 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'Option-grupper för ytterligare funktioner
Option-grupper liknar parametergrupper, men styr tilläggsfunktioner för databasmotorn i stället för konfigurationsoptimering. De används främst med Oracle och SQL Server för att aktivera funktioner som Oracle Application Express (APEX), SQL Server Transparent Data Encryption (TDE) eller SQL Server Active Directory-autentisering.
Varje option i en option-grupp kan ha egna inställningar. Option-grupper versionshanteras per engine-familj och måste kopplas till DB-instansen. De flesta motorer med öppen källkod (MySQL, PostgreSQL, MariaDB) behöver sällan anpassade option-grupper.
IAM-databasutentisering
RDS stöder IAM-databasutentisering för MySQL- och PostgreSQL-motorer. I stället för ett statiskt användarnamn och lösenord antar applikationen en IAM-roll och genererar en tillfällig autentiseringstoken (giltig i 15 minuter) med AWS CLI-kommandot eller SDK-anropet generate-db-auth-token.
Fördelarna omfattar att inga långlivade databaslösenord behövs, automatisk rotation av autentiseringsuppgifter via IAM-principer och centraliserad åtkomstkontroll. Funktionen kräver att du aktiverar --enable-iam-database-authentication på instansen och skapar en databasanvändare som är kopplad till en IAM-roll.
# 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-1Secrets Manager-integrering med RDS
AWS Secrets Manager kan lagra och automatiskt rotera RDS-huvudlösenordet och applikationens autentiseringsuppgifter. När rotation är aktiverad anropar Secrets Manager en Lambda-funktion som uppdaterar databaslösenordet och lagrar det nya värdet i hemligheten – applikationen hämtar det senaste hemlighetsvärdet via Secrets Manager API, så att den alltid har giltiga autentiseringsuppgifter.
När du skapar en RDS-instans i konsolen kan du välja att låta Secrets Manager hantera huvudautentiseringsuppgifterna. Detta eliminerar hårdkodade lösenord i kod eller 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- och säkerhetsgruppskontroller
RDS-instanser körs i en VPC och använder DB-subnätsgrupper för att ange vilka subnät (över flera AZ:er) som instansen kan placeras i. Bästa praxis är att placera RDS i privata subnät utan direktåtkomst till internet.
Säkerhetsgrupper styr vilka IP-adresser och andra säkerhetsgrupper som får nå DB-porten (t.ex. TCP 3306 för MySQL). Applikationslagrets säkerhetsgrupp bör vara den enda tillåtna källan i RDS-säkerhetsgruppen, vilket upprätthåller minsta möjliga behörighet på nätverksnivå. Konfigurera aldrig 0.0.0.0/0 (all trafik) som en inkommande regel i en RDS-säkerhetsgrupp.
Utökad övervakning och granskningsloggar
Enhanced Monitoring publicerar mätvärden på operativsystemnivå (CPU, minne, filsystem och disk-I/O) till CloudWatch Logs var 1–60:e sekund, vilket ger högre upplösning än standardmätvärdena i CloudWatch, som samlas in var 60:e sekund. Funktionen använder en agent som körs på DB-värden och är tillgänglig för alla motorer utom SQL Server i speglingsläge.
Databasens granskningsloggar (allmän frågelogg och logg över långsamma frågor för MySQL; pgaudit för PostgreSQL) kan publiceras till CloudWatch Logs för efterlevnadsanalys. Aktivera dessa via parametergrupper och konfigurera sedan loggexporterna i RDS-konsolen under Log exports.
# Enable PostgreSQL logs export to CloudWatch
aws rds modify-db-instance \
--db-instance-identifier mydb \
--cloudwatch-logs-export-configuration 'EnableLogTypes=[postgresql,upgrade]' \
--apply-immediatelySammanfattning av bästa säkerhetspraxis
Viktiga säkerhetsåtgärder för RDS inför SAA-C03-provet:
- Aktivera kryptering i vila med en KMS CMK när du skapar instansen
- Tvinga fram SSL/TLS under överföring via inställningar i parametergruppen
- Placera instanser i privata subnät med restriktiva säkerhetsgrupper
- Använd IAM-databasutentisering eller Secrets Manager för att undvika statiska lösenord
- Aktivera CloudTrail för att logga RDS API-anrop och CloudWatch Logs för databasens granskningsloggar
- Använd AWS Config-regler (t.ex.
rds-instance-public-access-check) för att upptäcka felkonfigurationer
Snabbtest
Testa dina kunskaper om AWS Solutions Architect-koncepten (SAA-C03) från den här lektionen.
Repetition av lektionen
I den här lektionen har du lärt dig att RDS-kryptering i vila använder KMS och måste aktiveras när instansen skapas, att parametergrupper styr motorkonfigurationen, inklusive tillämpning av SSL/TLS under överföring, och att IAM-databasutentisering och Secrets Manager eliminerar statiska databaslösenord. Nästa avsnitt handlar om DynamoDB-tabeller, objekt och utformning av primärnycklar.
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 ”RDS-säkerhet: Kryptering och parametergrupper” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen AWS Solutions Architect, inklusive ”RDS-säkerhet: Kryptering och parametergrupper”, 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 ”RDS-säkerhet: Kryptering och parametergrupper”?
Kryptera RDS i vila med KMS, kontrollera kryptering på anslutningsnivå med parametergrupper och säkra åtkomsten med IAM-autentisering. 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 4 av 4.
Hur lång tid tar lektionen ”RDS-säkerhet: Kryptering och parametergrupper”?
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
- RDS-motorer och instansklasser
- Multi-AZ och automatiska säkerhetskopior
- Read Replicas för lässkalning
- RDS-säkerhet: Kryptering och parametergrupper