Sicurezza RDS: crittografia e parameter group
Crittograferete RDS a riposo con KMS, controllerete la crittografia a livello di connessione con i parameter group e proteggerete l'accesso con l'autenticazione IAM.
Sicurezza RDS: crittografia e parameter group è una lezione AWS Solutions Architect gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento AWS Solutions Architect, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AWS Solutions Architect include 4 lezioni in totale.
Crittografia RDS a riposo
RDS supporta la crittografia a riposo tramite AWS Key Management Service (KMS). Quando abilita la crittografia durante la creazione dell'istanza DB, tutti i dati nei volumi EBS sottostanti, nei backup automatici, nelle snapshot e nelle Read Replica vengono crittografati utilizzando la chiave KMS specificata.
La crittografia deve essere abilitata al momento della creazione: non è possibile crittografare direttamente un'istanza esistente non crittografata. La soluzione consiste nell'acquisire una snapshot non crittografata, copiarla abilitando la crittografia e ripristinare l'istanza dalla snapshot crittografata. La chiave KMS può essere una chiave gestita da AWS oppure una Customer-Managed Key (CMK), che offre maggiore controllo e possibilità di audit.
# 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-idCrittografia di un'istanza RDS esistente non crittografata
Poiché non è possibile abilitare la crittografia su un'istanza esistente, seguite questo percorso di migrazione:
- Create uno snapshot manuale dell'istanza non crittografata
- Copiate lo snapshot e abilitate la crittografia durante la copia, specificando una chiave KMS
- Ripristinate una nuova istanza DB dallo snapshot crittografato
- Aggiornate l'endpoint dell'applicazione in modo che punti alla nuova istanza
- Eliminate la vecchia istanza non crittografata
Questo approccio comporta un certo downtime, a meno che non utilizziate DMS per mantenere sincronizzata la nuova istanza crittografata prima del cutover.
# 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/rdsCrittografia dei dati in transito con SSL/TLS
RDS crittografa i dati in transito utilizzando SSL/TLS. Ogni motore fornisce un certificato CA scaricabile che il driver client utilizza per verificare l'identità del server. Per imporre l'uso delle connessioni SSL, configurate il motore del database in modo che rifiuti le connessioni non crittografate.
Per MySQL, impostate il parametro require_secure_transport = ON nel gruppo di parametri. Per PostgreSQL, impostate ssl = 1 e, facoltativamente, rds.force_ssl = 1 per rifiutare completamente le connessioni non SSL. Molti driver di database Java e Python accettano inoltre il parametro sslmode=require nella stringa di connessione.
# 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-certGruppi di parametri: cosa sono
I gruppi di parametri sono raccolte denominate di impostazioni di configurazione del motore che vengono associate a un'istanza RDS. Sono l'equivalente RDS della modifica di my.cnf in MySQL o di postgresql.conf in PostgreSQL, ma sono gestiti da AWS e sottoposti a versionamento per famiglia di motori.
AWS fornisce un gruppo di parametri predefinito per ogni versione del motore, ma le relative impostazioni non possono essere modificate. Per personalizzare i parametri, create un gruppo di parametri personalizzato, modificate i parametri desiderati e associatelo all'istanza DB. Le modifiche ai parametri statici richiedono un riavvio; i parametri dinamici diventano effettivi immediatamente.
# 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'Modifica delle impostazioni dei gruppi di parametri
Dopo aver creato un gruppo di parametri personalizzato, modificate i singoli parametri utilizzando il comando CLI modify-db-parameter-group o la console. I parametri hanno un metodo di applicazione: immediate (diventa effettivo senza riavvio) oppure pending-reboot (diventa effettivo solo dopo il riavvio successivo dell'istanza).
Parametri importanti da conoscere per l'esame: max_connections (limite delle connessioni simultanee), innodb_buffer_pool_size (dimensione della cache in memoria di MySQL), log_bin_trust_function_creators (consente le stored function che scrivono nel binary log) e rds.force_ssl (impone SSL per 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'Gruppi di opzioni per funzionalità aggiuntive
I gruppi di opzioni sono simili ai gruppi di parametri, ma controllano funzionalità aggiuntive del motore del database invece della configurazione delle prestazioni. Vengono utilizzati principalmente con Oracle e SQL Server per abilitare funzionalità come Oracle Application Express (APEX), SQL Server Transparent Data Encryption (TDE) o l'autenticazione SQL Server Active Directory.
Ogni opzione di un gruppo di opzioni può avere impostazioni proprie. I gruppi di opzioni sono sottoposti a versionamento per famiglia di motori e devono essere associati all'istanza DB. La maggior parte dei motori open source (MySQL, PostgreSQL, MariaDB) raramente richiede gruppi di opzioni personalizzati.
Autenticazione IAM del database
RDS supporta l'autenticazione IAM del database per i motori MySQL e PostgreSQL. Invece di utilizzare una combinazione statica di nome utente e password, l'applicazione assume un ruolo IAM e genera un token di autenticazione temporaneo (valido per 15 minuti) utilizzando il comando AWS CLI o la chiamata SDK generate-db-auth-token.
Tra i vantaggi figurano l'assenza di password del database a lunga durata, la rotazione automatica delle credenziali tramite le policy IAM e il controllo centralizzato degli accessi. Per utilizzare questa funzionalità è necessario abilitare --enable-iam-database-authentication sull'istanza e creare un utente del database associato a un ruolo IAM.
# 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-1Integrazione di Secrets Manager con RDS
AWS Secrets Manager può archiviare e ruotare automaticamente la password principale di RDS e le credenziali dell'applicazione. Quando la rotazione è abilitata, Secrets Manager richiama una funzione Lambda che aggiorna la password del database e memorizza il nuovo valore nel secret; l'applicazione recupera il valore più recente del secret tramite l'API di Secrets Manager, disponendo così sempre di credenziali valide.
Quando create un'istanza RDS nella console, potete scegliere di affidare a Secrets Manager la gestione delle credenziali principali. In questo modo si eliminano le password codificate nel codice o nelle variabili d'ambiente.
# 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.toolControlli VPC e dei gruppi di sicurezza
Le istanze RDS vengono eseguite all'interno di una VPC e utilizzano i gruppi di sottoreti DB per definire in quali sottoreti (distribuite su più AZ) è possibile collocare l'istanza. La best practice consiste nel collocare RDS in sottoreti private senza accesso diretto a Internet.
I gruppi di sicurezza controllano quali indirizzi IP e quali altri gruppi di sicurezza possono raggiungere la porta DB (ad esempio, TCP 3306 per MySQL). Il gruppo di sicurezza del livello applicativo dovrebbe essere l'unica origine consentita nel gruppo di sicurezza RDS, applicando il principio del privilegio minimo a livello di rete. Non configurate mai 0.0.0.0/0 (tutto il traffico) come regola in ingresso in un gruppo di sicurezza RDS.
Monitoraggio avanzato e log di audit
Enhanced Monitoring pubblica le metriche a livello di sistema operativo (CPU, memoria, file system, I/O del disco) in CloudWatch Logs ogni 1–60 secondi, offrendo una granularità maggiore rispetto alle metriche CloudWatch predefinite a intervalli di 60 secondi. Utilizza un agent in esecuzione sull'host DB ed è disponibile per tutti i motori, ad eccezione della modalità di mirroring di SQL Server.
I log di audit del database (general query log e slow query log per MySQL; pgaudit per PostgreSQL) possono essere pubblicati in CloudWatch Logs per l'analisi di conformità. Abilitateli tramite i gruppi di parametri, quindi configurate le esportazioni dei log nella console RDS, alla voce Esportazioni dei log.
# Enable PostgreSQL logs export to CloudWatch
aws rds modify-db-instance \
--db-instance-identifier mydb \
--cloudwatch-logs-export-configuration 'EnableLogTypes=[postgresql,upgrade]' \
--apply-immediatelyRiepilogo delle best practice di sicurezza
Principali best practice di sicurezza RDS per l'esame SAA-C03:
- Abilitate la crittografia a riposo con una CMK KMS durante la creazione dell'istanza
- Imponete l'uso di SSL/TLS in transito tramite le impostazioni dei gruppi di parametri
- Collocate le istanze in sottoreti private con gruppi di sicurezza restrittivi
- Utilizzate l'autenticazione IAM del database o Secrets Manager per evitare password statiche
- Abilitate CloudTrail per registrare le chiamate API RDS e CloudWatch Logs per i log di audit del database
- Utilizzate le regole AWS Config (ad esempio,
rds-instance-public-access-check) per rilevare configurazioni errate
Verifica rapida
Verificate la vostra comprensione dei concetti di AWS Solutions Architect (SAA-C03) trattati in questa lezione.
Riepilogo della lezione
In questa lezione avete imparato che la crittografia RDS a riposo utilizza KMS e deve essere abilitata durante la creazione, che i gruppi di parametri controllano la configurazione del motore, incluso l'uso di SSL/TLS per i dati in transito, e che l'autenticazione IAM del database e Secrets Manager eliminano le password statiche del database. Ora esamineremo le tabelle e gli elementi di DynamoDB, oltre alla progettazione delle chiavi primarie.
Domande Frequenti
La lezione «Sicurezza RDS: crittografia e parameter group» è gratuita?
Sì — il testo completo di «Sicurezza RDS: crittografia e parameter group» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso AWS Solutions Architect, passa a CoddyKit PRO. Il corso AWS Solutions Architect include 4 lezioni in totale.
Cosa imparerò in «Sicurezza RDS: crittografia e parameter group»?
Crittograferete RDS a riposo con KMS, controllerete la crittografia a livello di connessione con i parameter group e proteggerete l'accesso con l'autenticazione IAM. Eserciti AWS Solutions Architect con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare AWS Solutions Architect?
Non è richiesta alcuna esperienza precedente. AWS Solutions Architect su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Sicurezza RDS: crittografia e parameter group»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione AWS Solutions Architect?
Sì. Ogni lezione AWS Solutions Architect include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Motori RDS e classi di istanza
- Multi-AZ e backup automatici
- Read Replica per scalare le letture
- Sicurezza RDS: crittografia e parameter group