Tieni i segreti fuori da codice e log

Uso di AWS Security per sviluppatori

Rahul Singh

Technical Product Manager

Non tutto ciò che è sensibile è un segreto

Tre tipi di stringa

  • Segreto: un estraneo può agire come te
  • Dati sensibili: una persona è esposta
  • Config: niente da guadagnare

Tre righe impilate che confrontano un segreto, dati sensibili e config. Ogni riga mostra due valori di esempio e cosa potrebbe farne un estraneo: da agire come te fino a niente da guadagnare.

Uso di AWS Security per sviluppatori

Non tutto ciò che è sensibile è un segreto

Tre tipi di stringa

  • Segreto: un estraneo può agire come te
  • Dati sensibili: una persona è esposta
  • Config: niente da guadagnare

Due nomi per i dati personali

  • PII: personally identifiable information
  • PHI: protected health information

Tre righe impilate che confrontano un segreto, dati sensibili e config. Ogni riga mostra due valori di esempio e cosa potrebbe farne un estraneo: da agire come te fino a niente da guadagnare.

Uso di AWS Security per sviluppatori

Quattro modi in cui un segreto esce fuori

Un segreto in un sistema in esecuzione si dirama verso quattro uscite numerate: 1 al codice sorgente e alla sua cronologia, 2 alle variabili d'ambiente, 3 ai log dell'applicazione, 4 all'output di errore e alle tracce. Tutte convergono su una casella: leggibile da qualcuno.

  1. Codice sorgente e sua cronologia
  2. Variabili d'ambiente
Uso di AWS Security per sviluppatori

Quattro modi in cui un segreto esce fuori

Un segreto in un sistema in esecuzione si dirama verso quattro uscite numerate: 1 al codice sorgente e alla sua cronologia, 2 alle variabili d'ambiente, 3 ai log dell'applicazione, 4 all'output di errore e alle tracce. Tutte convergono su una casella: leggibile da qualcuno.

  1. Codice sorgente e sua cronologia
  2. Variabili d'ambiente
  3. Log dell'applicazione
  4. Output di errore e tracce
Uso di AWS Security per sviluppatori

Cifrato a riposo non vuol dire nascosto

La scelta che sembra sicura

  • Cifrato a riposo, sempre
  • Chiave AWS KMS, gestita da AWS per impostazione predefinita

Una funzione Lambda con una variabile d'ambiente si divide in due percorsi. Su disco è cifrata a riposo con una chiave AWS KMS (in verde). Sull'API, una chiamata a GetFunctionConfiguration restituisce il valore in chiaro (in rosso). Una nota indica che solo un percorso è protetto.

Uso di AWS Security per sviluppatori

Cifrato a riposo non vuol dire nascosto

La scelta che sembra sicura

  • Cifrato a riposo, sempre
  • Chiave AWS KMS, gestita da AWS per impostazione predefinita

Cosa restituisce GetFunctionConfiguration

  • Il valore, in chiaro

Risposta di storage a una domanda di accesso

Una funzione Lambda con una variabile d'ambiente si divide in due percorsi. Su disco è cifrata a riposo con una chiave AWS KMS (in verde). Sull'API, una chiamata a GetFunctionConfiguration restituisce il valore in chiaro (in rosso). Una nota indica che solo un percorso è protetto.

Uso di AWS Security per sviluppatori

Quale archivio e perché

Due servizi, un compito ciascuno

  • Secrets Manager: progettato per i segreti
  • Parameter Store: progettato per la config; un parametro SecureString è cifrato con una chiave KMS

Un diagramma a spettro. Secrets Manager a sinistra, Systems Manager Parameter Store a destra, con quattro binari orizzontali tra loro. Un indicatore numerato su ciascun binario: 1 all'estrema sinistra, 2 a sinistra del centro, 3 sulla linea centrale, 4 all'estrema destra; sul quarto binario compaiono i costi alle due estremità e una nota: la rotazione decide.

Uso di AWS Security per sviluppatori

Quale archivio e perché

Due servizi, un compito ciascuno

  • Secrets Manager: progettato per i segreti
  • Parameter Store: progettato per la config; un parametro SecureString è cifrato con una chiave KMS

Quattro fattori decisivi

  1. Rotazione gestita
  2. Condivisione tra account
  3. Versioning
  4. Costo

Un diagramma a spettro. Secrets Manager a sinistra, Systems Manager Parameter Store a destra, con quattro binari orizzontali tra loro. Un indicatore numerato su ciascun binario: 1 all'estrema sinistra, 2 a sinistra del centro, 3 sulla linea centrale, 4 all'estrema destra; sul quarto binario compaiono i costi alle due estremità e una nota: la rotazione decide.

Uso di AWS Security per sviluppatori

Leggilo fresco, mettilo in cache per poco

Il tuo processo in esecuzione chiama GetSecretValue su un archivio di segreti (punto 1), usando un ruolo con ambito limitato a un solo ARN del segreto più kms:Decrypt (punto 2), e mantiene il valore in una cache in memoria (punto 3) prima di chiamare un database o un'API partner.

  1. Chiama GetSecretValue all'avvio
  2. Ruolo limitato a un ARN del segreto più kms:Decrypt
Uso di AWS Security per sviluppatori

Leggilo fresco, mettilo in cache per poco

Il tuo processo in esecuzione chiama GetSecretValue su un archivio di segreti (punto 1), usando un ruolo con ambito limitato a un solo ARN del segreto più kms:Decrypt (punto 2), e mantiene il valore in una cache in memoria (punto 3) prima di chiamare un database o un'API partner.

  1. Chiama GetSecretValue all'avvio
  2. Ruolo limitato a un ARN del segreto più kms:Decrypt
  3. Metti il valore in cache in memoria

Se cache è eterna, la rotazione ti rompe

Uso di AWS Security per sviluppatori

La rotazione sposta il valore sotto i tuoi piedi

Perché quattro step, non uno swap

  • Il nuovo valore è verificato prima dell'uso
  • Uno swap romperebbe tutti i client insieme

Tre colonne verticali: i passaggi di rotazione, l'etichetta e la tua cache. Secrets Manager esegue createSecret, setSecret e testSecret, poi una linea tratteggiata segna il momento in cui finishSecret sposta l'etichetta. Sopra la linea l'etichetta è AWSCURRENT uguale al valore vecchio e la cache è corretta; sotto la linea AWSCURRENT uguale al valore nuovo e la stessa cache è tratteggiata in rosso. Due soluzioni: vita della cache breve e refresh su errore di autenticazione.

Uso di AWS Security per sviluppatori

La rotazione sposta il valore sotto i tuoi piedi

Perché quattro step, non uno swap

  • Il nuovo valore è verificato prima dell'uso
  • Uno swap romperebbe tutti i client insieme

Quattro step, un passaggio di consegne

  • AWSPENDING, AWSCURRENT, AWSPREVIOUS

Tre colonne verticali: i passaggi di rotazione, l'etichetta e la tua cache. Secrets Manager esegue createSecret, setSecret e testSecret, poi una linea tratteggiata segna il momento in cui finishSecret sposta l'etichetta. Sopra la linea l'etichetta è AWSCURRENT uguale al valore vecchio e la cache è corretta; sotto la linea AWSCURRENT uguale al valore nuovo e la stessa cache è tratteggiata in rosso. Due soluzioni: vita della cache breve e refresh su errore di autenticazione.

Uso di AWS Security per sviluppatori

La rotazione sposta il valore sotto i tuoi piedi

Perché quattro step, non uno swap

  • Il nuovo valore è verificato prima dell'uso
  • Uno swap romperebbe tutti i client insieme

Quattro step, un passaggio di consegne

  • AWSPENDING, AWSCURRENT, AWSPREVIOUS

La tua cache non viene avvisata

  • Durata di pochi minuti, poi rileggi
  • Fai refresh su errore di autenticazione

Tre colonne verticali: i passaggi di rotazione, l'etichetta e la tua cache. Secrets Manager esegue createSecret, setSecret e testSecret, poi una linea tratteggiata segna il momento in cui finishSecret sposta l'etichetta. Sopra la linea l'etichetta è AWSCURRENT uguale al valore vecchio e la cache è corretta; sotto la linea AWSCURRENT uguale al valore nuovo e la stessa cache è tratteggiata in rosso. Due soluzioni: vita della cache breve e refresh su errore di autenticazione.

Uso di AWS Security per sviluppatori

Maschera, oscura, resta debuggabile

Una riga di log grezza con un request ID, un numero di carta completo e un token, evidenziati in rosso. Sotto, gli stessi tre campi trattati: request ID invariato, carta mascherata alle ultime quattro cifre, token sostituito da un marcatore redacted, con una nota: abbastanza per fare debug.

Pulisci prima di scrivere

  • Mask: forma mantenuta, valore nascosto
Uso di AWS Security per sviluppatori

Maschera, oscura, resta debuggabile

Una riga di log grezza con un request ID, un numero di carta completo e un token, evidenziati in rosso. Sotto, gli stessi tre campi trattati: request ID invariato, carta mascherata alle ultime quattro cifre, token sostituito da un marcatore redacted, con una nota: abbastanza per fare debug.

Pulisci prima di scrivere

  • Mask: forma mantenuta, valore nascosto
  • Redact: valore rimosso, lasci un marcatore
Uso di AWS Security per sviluppatori

Maschera, oscura, resta debuggabile

Una riga di log grezza con un request ID, un numero di carta completo e un token, evidenziati in rosso. Sotto, gli stessi tre campi trattati: request ID invariato, carta mascherata alle ultime quattro cifre, token sostituito da un marcatore redacted, con una nota: abbastanza per fare debug.

Pulisci prima di scrivere

  • Mask: forma mantenuta, valore nascosto
  • Redact: valore rimosso, lasci un marcatore

Chi è in reperibilità ha bisogno della config; il resto, meglio toglierlo

Uso di AWS Security per sviluppatori

Esercitiamoci!

Uso di AWS Security per sviluppatori

Preparing Video For Download...