CART.log

[NULL] Cart is empty.
Select items to compile.

TOTAL: € 0.00
• 1 Gen 2026 • 15 min read

AWS Security: Guida Pratica per Developer

IAM policies, KMS encryption, Security Groups e checklist completa per infrastruttura sicura. Tutto quello che devi sapere prima di deployare in produzione.

#aws #security #iam #encryption #infrastructure
← Back to Blog

Introduzione: security by design, non come afterthought

Mettere in sicurezza un'infrastruttura AWS non significa solo "bloccare tutto": richiede bilanciare protezione, usabilità e costi. Molti breach documentati derivano da configurazioni sbagliate—bucket S3 pubblici, IAM roles over-permissive, security group troppo aperti—non da vulnerabilità nel codice. Questa guida fornisce pratiche concrete per sviluppatori che devono deployare in produzione senza dedicare mesi a diventare security expert.

IAM: Identity and Access Management

Principio di least privilege

IAM controlla chi (utente, servizio, ruolo) può fare cosa (azione) su quali risorse AWS. Il principio fondamentale è least privilege: concedere solo i permessi minimi necessari per svolgere un task specifico.

Errori comuni:

  • Usare policy predefinite troppo ampie come AdministratorAccess per utenti non-admin.
  • Creare un unico ruolo IAM condiviso da tutte le Lambda o EC2 del progetto.
  • Assegnare Resource: "*" quando si potrebbe limitare a bucket, tabella o funzione specifica.

Best practices:

Policy granulari per servizio
  • Ogni Lambda, ECS task o EC2 dovrebbe avere il proprio execution role dedicato.
  • Esempio per Lambda che legge da DynamoDB e scrive su S3:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["dynamodb:GetItem", "dynamodb:Query"], "Resource": "arn:aws:dynamodb:eu-west-1:123456789:table/MyTable" }, { "Effect": "Allow", "Action": ["s3:PutObject"], "Resource": "arn:aws:s3:::my-bucket/uploads/*" } ] }

Evita dynamodb:* o s3:*—specifica solo le azioni realmente usate.

IAM Access Analyzer
  • Tool AWS che scansiona policy e identifica permessi over-provisioned o risorse condivise esternamente.
  • Attivalo su ogni Region e revisiona regolarmente i finding.
MFA per utenti umani
  • Abilita Multi-Factor Authentication per tutti gli utenti IAM con accesso console o CLI.
  • Usa policy di tipo Condition: {"Bool": {"aws:MultiFactorAuthPresent": "true"}} per operazioni sensibili (es. eliminare risorse, modificare IAM).
Rotazione credenziali
  • Ruota access key ogni 90 giorni per utenti IAM programmatici.
  • Preferisci IAM roles con STS temporary credentials invece di long-lived access key dove possibile.
Service Control Policies (SCP) per Organizations
  • Se usi AWS Organizations, applica SCP per limitare azioni a livello di account (es. blocca creazione di utenti IAM root, impedisci deploy fuori da certe Region).

KMS: Key Management Service per crittografia

Crittografia at-rest e in-transit

AWS offre crittografia automatica per molti servizi (S3, EBS, RDS), ma gestire le chiavi in modo sicuro è cruciale.

Cosa cifrare:

  • S3: bucket con dati sensibili (PII, credenziali, backup).
  • EBS: volumi attached a EC2 con database o file confidenziali.
  • RDS/Aurora: snapshot e dati a riposo.
  • Secrets Manager / Parameter Store: credenziali applicative, API key, token OAuth.

Best practices KMS:

Customer Managed Keys (CMK) invece di AWS Managed
  • Le CMK ti danno controllo totale: audit via CloudTrail, rotazione automatica, policy di accesso granulari.
  • Esempio: crea una CMK dedicata per cifrare variabili d'ambiente Lambda o RDS encryption.
Key policies e grants
  • Ogni CMK ha una key policy che definisce chi può usarla per cifrare/decifrare.
  • Usa grants per concedere temporaneamente accesso a servizi (es. EBS può usare la chiave per cifrare volumi).
Rotazione automatica
  • Abilita automatic key rotation (ogni anno) per CMK simmetriche.
  • La rotazione è trasparente: dati cifrati con chiavi vecchie restano accessibili, nuovi dati usano la chiave ruotata.
Envelope encryption per grandi volumi
  • KMS cripta data key, che poi cripta i dati effettivi localmente—riduce chiamate API a KMS e accelera performance.
  • Usato automaticamente da servizi come S3 con SSE-KMS.
Monitoring via CloudTrail
  • Ogni chiamata a KMS (Encrypt, Decrypt, GenerateDataKey) è loggata su CloudTrail.
  • Configura allarmi CloudWatch per detect anomalie (es. spike improvviso di decrypt da un servizio non previsto).

Security Groups e Network Access Control

Security Groups: firewall stateful per istanze

Security Groups controllano traffico in ingresso (inbound) e uscita (outbound) da risorse EC2, RDS, Lambda in VPC.

Errori comuni:

  • Security group con 0.0.0.0/0 su porta SSH (22) o RDP (3389)—espone istanze a brute-force attack.
  • Nessuna regola outbound configurata (default permette tutto).
  • Security group condiviso tra ambienti dev/staging/prod, violando isolation.

Best practices:

Least privilege per inbound rules
  • Permetti solo IP sorgenti specifici per SSH/RDP (es. IP ufficio o VPN aziendale).
  • Per servizi pubblici (ALB, API Gateway), limita a porte necessarie (80, 443) e usa Web Application Firewall (WAF) come layer aggiuntivo.
Segmentazione per tier
  • Web tier: Security Group che accetta traffico da internet su 443, può chiamare app tier.
  • App tier: accetta solo traffico da web tier, può chiamare database tier.
  • Database tier: accetta solo traffico da app tier, nessun accesso diretto da internet.
Logging con VPC Flow Logs
  • Abilita Flow Logs per monitorare traffico accettato/rifiutato dai Security Group.
  • Invia log a CloudWatch Logs o S3, analizza con Athena per detect pattern anomali.
Audit con AWS Config
  • Crea Config Rules per verificare compliance (es. "nessun Security Group deve avere 0.0.0.0/0 su SSH").
  • Notifica automatica quando una regola viene violata.

Secrets management: non hardcodare mai credenziali

AWS Secrets Manager e Systems Manager Parameter Store

Hardcodare password, API key o token nel codice o variabili d'ambiente in chiaro è una pratica vulnerabile.

Soluzioni sicure:

Secrets Manager
  • Cifra automaticamente segreti con KMS.
  • Supporta rotazione automatica per database RDS, Redshift, DocumentDB.
  • Esempio: archivia credenziali RDS, Lambda le recupera via SDK all'avvio.
Parameter Store (SSM)
  • Alternativa più economica di Secrets Manager (gratis fino a 10k parametri).
  • Supporta encryption via KMS per parametri SecureString.
  • Ideale per configurazioni non-rotanti (chiavi OAuth, endpoint API).

Best practices:

  • Carica segreti fuori dall'handler Lambda (a livello globale), non a ogni invocazione—riduce chiamate API e latenza.
  • Cachea segreti in memoria per 5-10 minuti, riducendo costi e migliorando performance.
  • Non loggare mai segreti in CloudWatch Logs—sanitizza log output prima di scrivere.
  • Usa IAM per limitare quali servizi possono leggere quali segreti (principle of least privilege).

Logging, monitoring e incident response

CloudWatch Logs e CloudTrail

CloudWatch Logs:

  • Centralizza log di Lambda, EC2, RDS, API Gateway.
  • Configura log retention policy (es. 30 giorni) per evitare accumulo infinito di log costosi.
  • Usa Metric Filters per estrarre metriche custom (es. contare error log) e creare allarmi.

CloudTrail:

  • Registra ogni chiamata API verso AWS (chi ha fatto cosa, quando).
  • Essenziale per audit e forensics post-incident.
  • Attiva CloudTrail in tutte le Region, invia log a S3 bucket cifrato con KMS e protetto da Object Lock per prevenire manomissione.

AWS GuardDuty

  • Threat detection automatico basato su ML che analizza CloudTrail, VPC Flow Logs e DNS logs.
  • Identifica comportamenti anomali (es. accesso da IP sospetto, privilege escalation, cryptomining su EC2).
  • Costa pochi dollari/mese e può prevenire breach costosi—sempre attivarlo in produzione.

Checklist completa per infrastruttura sicura

IAM e Identity

Ogni servizio ha execution role dedicato con least privilege.
Nessun utente IAM con AdministratorAccess usato per operazioni quotidiane.
MFA abilitato per tutti gli utenti umani.
Access key ruotate ogni 90 giorni (o meglio: usa IAM roles dove possibile).
IAM Access Analyzer attivo e finding revisionati regolarmente.

Crittografia e Secrets

Tutti i bucket S3 con dati sensibili cifrati con SSE-KMS.
Volumi EBS e snapshot cifrati.
RDS/Aurora con encryption at-rest abilitata.
Secrets Manager o Parameter Store per credenziali (zero hardcoding).
CMK create per servizi critici, con automatic rotation abilitata.
CloudTrail monitora chiamate a KMS, allarmi su decrypt anomali.

Network Security

Security Groups configurati con least privilege: no 0.0.0.0/0 su SSH/RDP.
Segmentazione a tier (web / app / database) con Security Groups separati.
VPC Flow Logs attivi e analizzati per detect traffico anomalo.
NACL configurate dove serve un controllo stateless aggiuntivo.
WAF davanti a API Gateway o ALB per protezione layer 7.

Logging e Monitoring

CloudTrail attivo in tutte le Region, log inviati a S3 cifrato e protetto.
CloudWatch Logs con retention policy configurata.
GuardDuty attivo per threat detection automatico.
Allarmi CloudWatch su metriche critiche (error rate, latency, throttles).
X-Ray o equivalente per tracing distribuito e debug performance.

Compliance e Audit

AWS Config attivo con regole per compliance (es. "S3 buckets non pubblici").
Scan regolari con AWS Inspector per vulnerabilità in EC2/container.
Backup automatici di RDS/EBS con retention policy configurata.
Incident response plan documentato (chi chiamare, come rollback, come comunicare).
Revisioni security trimestrali con checklist OWASP o CIS AWS Foundations Benchmark.

Deployment e Code Security

Infrastructure as Code (CloudFormation/Terraform) versionata su Git.
Secrets non committati in repository (usa git-secrets o pre-commit hook).
Static Application Security Testing (SAST) in pipeline CI/CD.
Dependency scanning per librerie con vulnerabilità note (Snyk, Dependabot).
Blue-green deployment con rollback automatico se metriche si degradano.

Risorse per approfondire

  • AWS Well-Architected Framework - Security Pillar: guida ufficiale AWS con best practice approfondite.
  • CIS AWS Foundations Benchmark: checklist standard industry per configurazioni sicure.
  • OWASP Top 10 for Cloud: adattamento delle vulnerabilità web più comuni al contesto cloud.
  • AWS Security Blog: case study reali, nuove feature e best practice aggiornate.

Mettere in sicurezza un'infrastruttura AWS è un processo continuo, non un task "fatto una volta". Usa questa checklist come punto di partenza, implementa monitoring robusto e mantieni aggiornato il tuo threat model man mano che l'architettura evolve.

#aws #security #iam #encryption #infrastructure
← Back to Blog
Share this article

📬 Subscribe alla Newsletter

Ricevi gli articoli nuovi, eventi esclusivi e AWS tips direttamente nella tua inbox. Una volta a settimana, zero spam.

Unsubscribe in qualsiasi momento. Privacy-first.