Halte Geheimnisse aus Code und Logs fern

AWS-Sicherheit für Entwickler:innen nutzen

Rahul Singh

Technical Product Manager

Nicht alles Sensible ist ein Secret

Drei Arten von Strings

  • Secret: eine fremde Person kann als du handeln
  • Sensible Daten: eine Person wird offengelegt
  • Konfig: nichts zu holen

Drei gestapelte Zeilen vergleichen ein Secret, sensible Daten und Konfig. Jede Zeile zeigt zwei Beispielwerte und was eine fremde Person damit tun könnte – von als du handeln bis nichts zu holen.

AWS-Sicherheit für Entwickler:innen nutzen

Nicht alles Sensible ist ein Secret

Drei Arten von Strings

  • Secret: eine fremde Person kann als du handeln
  • Sensible Daten: eine Person wird offengelegt
  • Konfig: nichts zu holen

Zwei Namen für Personendaten

  • PII: persönlich identifizierbare Informationen
  • PHI: geschützte Gesundheitsdaten

Drei gestapelte Zeilen vergleichen ein Secret, sensible Daten und Konfig. Jede Zeile zeigt zwei Beispielwerte und was eine fremde Person damit tun könnte – von als du handeln bis nichts zu holen.

AWS-Sicherheit für Entwickler:innen nutzen

Vier Wege, wie ein Secret entweicht

Ein Secret in einem laufenden System verzweigt zu vier nummerierten Ausgängen: 1 zu Quellcode und dessen Historie, 2 zu Umgebungsvariablen, 3 zu Anwendungs-Logs, 4 zu Fehlerausgaben und Traces. Alle vier führen zu einer Box „für jemanden lesbar".

  1. Quellcode und seine Historie
  2. Umgebungsvariablen
AWS-Sicherheit für Entwickler:innen nutzen

Vier Wege, wie ein Secret entweicht

Ein Secret in einem laufenden System verzweigt zu vier nummerierten Ausgängen: 1 zu Quellcode und dessen Historie, 2 zu Umgebungsvariablen, 3 zu Anwendungs-Logs, 4 zu Fehlerausgaben und Traces. Alle vier führen zu einer Box „für jemanden lesbar".

  1. Quellcode und seine Historie
  2. Umgebungsvariablen
  3. Anwendungs-Logs
  4. Fehlerausgaben und Traces
AWS-Sicherheit für Entwickler:innen nutzen

Verschlüsselt im Ruhezustand ist nicht verborgen

Die scheinbar sichere Wahl

  • Verschlüsselt im Ruhezustand, immer
  • AWS-KMS-Schlüssel, standardmäßig von AWS verwaltet

Eine Lambda-Funktion mit einer Umgebungsvariablen teilt sich in zwei Pfade: Auf der Platte verschlüsselt im Ruhezustand mit einem AWS-KMS-Schlüssel (grün). Über die API liefert GetFunctionConfiguration den Klartext (rot). Hinweis: Nur ein Pfad ist geschützt.

AWS-Sicherheit für Entwickler:innen nutzen

Verschlüsselt im Ruhezustand ist nicht verborgen

Die scheinbar sichere Wahl

  • Verschlüsselt im Ruhezustand, immer
  • AWS-KMS-Schlüssel, standardmäßig von AWS verwaltet

Was GetFunctionConfiguration zurückgibt

  • Den Wert im Klartext

Eine Speicher-Antwort auf eine Zugriffsfrage

Eine Lambda-Funktion mit einer Umgebungsvariablen teilt sich in zwei Pfade: Auf der Platte verschlüsselt im Ruhezustand mit einem AWS-KMS-Schlüssel (grün). Über die API liefert GetFunctionConfiguration den Klartext (rot). Hinweis: Nur ein Pfad ist geschützt.

AWS-Sicherheit für Entwickler:innen nutzen

Welcher Store – und warum

Zwei Services, je ein Job

  • Secrets Manager: gebaut für Secrets
  • Parameter Store: gebaut für Konfig; ein SecureString-Parameter ist mit einem KMS-Schlüssel verschlüsselt

Ein Spektrumdiagramm: Links Secrets Manager, rechts Systems Manager Parameter Store, dazwischen vier horizontale Schienen mit Markern 1–4. Am Ende der vierten Schiene stehen die Kosten; Hinweis: Rotation entscheidet.

AWS-Sicherheit für Entwickler:innen nutzen

Welcher Store – und warum

Zwei Services, je ein Job

  • Secrets Manager: gebaut für Secrets
  • Parameter Store: gebaut für Konfig; ein SecureString-Parameter ist mit einem KMS-Schlüssel verschlüsselt

Vier Dinge entscheiden

  1. Verwaltete Rotation
  2. Kontenübergreifendes Sharing
  3. Versionierung
  4. Kosten

Ein Spektrumdiagramm: Links Secrets Manager, rechts Systems Manager Parameter Store, dazwischen vier horizontale Schienen mit Markern 1–4. Am Ende der vierten Schiene stehen die Kosten; Hinweis: Rotation entscheidet.

AWS-Sicherheit für Entwickler:innen nutzen

Frisch lesen, kurz cachen

Dein laufender Prozess ruft am Marker 1 GetSecretValue auf einem Secret-Store auf, nutzt am Marker 2 eine eng zugeschnittene Rolle auf eine Secret-ARN plus kms:Decrypt und hält den zurückgegebenen Wert am Marker 3 im In-Memory-Cache, bevor eine Datenbank oder Partner-API aufgerufen wird.

  1. GetSecretValue beim Start aufrufen
  2. Rolle auf eine Secret-ARN plus kms:Decrypt beschränken
AWS-Sicherheit für Entwickler:innen nutzen

Frisch lesen, kurz cachen

Dein laufender Prozess ruft am Marker 1 GetSecretValue auf einem Secret-Store auf, nutzt am Marker 2 eine eng zugeschnittene Rolle auf eine Secret-ARN plus kms:Decrypt und hält den zurückgegebenen Wert am Marker 3 im In-Memory-Cache, bevor eine Datenbank oder Partner-API aufgerufen wird.

  1. GetSecretValue beim Start aufrufen
  2. Rolle auf eine Secret-ARN plus kms:Decrypt beschränken
  3. Wert im Speicher cachen

Ewig cachen – und Rotation legt dich lahm

AWS-Sicherheit für Entwickler:innen nutzen

Rotation verschiebt den Wert unter dir

Warum vier Schritte, kein einfacher Tausch

  • Der neue Wert ist bewiesen, bevor ihn jemand nutzt
  • Ein Tausch würde alle Clients zugleich brechen

Drei Spalten: Rotationsschritte, Label und dein Cache. Secrets Manager führt createSecret, setSecret und testSecret aus; eine gestrichelte Linie markiert, wenn finishSecret das Label verschiebt. Oben: AWSCURRENT = alter Wert und Cache korrekt; unten: AWSCURRENT = neuer Wert und derselbe Cache schraffiert rot. Zwei Fixes: kurze Cache-Lebensdauer und Refresh bei Auth-Fehler.

AWS-Sicherheit für Entwickler:innen nutzen

Rotation verschiebt den Wert unter dir

Warum vier Schritte, kein einfacher Tausch

  • Der neue Wert ist bewiesen, bevor ihn jemand nutzt
  • Ein Tausch würde alle Clients zugleich brechen

Vier Schritte, eine Übergabe

  • AWSPENDING, AWSCURRENT, AWSPREVIOUS

Drei Spalten: Rotationsschritte, Label und dein Cache. Secrets Manager führt createSecret, setSecret und testSecret aus; eine gestrichelte Linie markiert, wenn finishSecret das Label verschiebt. Oben: AWSCURRENT = alter Wert und Cache korrekt; unten: AWSCURRENT = neuer Wert und derselbe Cache schraffiert rot. Zwei Fixes: kurze Cache-Lebensdauer und Refresh bei Auth-Fehler.

AWS-Sicherheit für Entwickler:innen nutzen

Rotation verschiebt den Wert unter dir

Warum vier Schritte, kein einfacher Tausch

  • Der neue Wert ist bewiesen, bevor ihn jemand nutzt
  • Ein Tausch würde alle Clients zugleich brechen

Vier Schritte, eine Übergabe

  • AWSPENDING, AWSCURRENT, AWSPREVIOUS

Nichts informiert deinen Cache

  • Lebensdauer: wenige Minuten, dann neu lesen
  • Refresh bei einem Authentifizierungsfehler

Drei Spalten: Rotationsschritte, Label und dein Cache. Secrets Manager führt createSecret, setSecret und testSecret aus; eine gestrichelte Linie markiert, wenn finishSecret das Label verschiebt. Oben: AWSCURRENT = alter Wert und Cache korrekt; unten: AWSCURRENT = neuer Wert und derselbe Cache schraffiert rot. Zwei Fixes: kurze Cache-Lebensdauer und Refresh bei Auth-Fehler.

AWS-Sicherheit für Entwickler:innen nutzen

Maskieren, redigieren, debugbar bleiben

Eine rohe Logzeile mit Request-ID, vollständiger Kartennummer und Token, rot markiert. Darunter dieselben drei Felder nach Behandlung: Request-ID unverändert, Karte auf die letzten vier Ziffern maskiert, Token durch „redacted" ersetzt. Hinweis: genug übrig zum Debuggen.

Bereinige vor dem Schreiben

  • Maskieren: Form bleibt, Wert verborgen
AWS-Sicherheit für Entwickler:innen nutzen

Maskieren, redigieren, debugbar bleiben

Eine rohe Logzeile mit Request-ID, vollständiger Kartennummer und Token, rot markiert. Darunter dieselben drei Felder nach Behandlung: Request-ID unverändert, Karte auf die letzten vier Ziffern maskiert, Token durch „redacted" ersetzt. Hinweis: genug übrig zum Debuggen.

Bereinige vor dem Schreiben

  • Maskieren: Form bleibt, Wert verborgen
  • Redigieren: Wert entfernt, Marker bleibt
AWS-Sicherheit für Entwickler:innen nutzen

Maskieren, redigieren, debugbar bleiben

Eine rohe Logzeile mit Request-ID, vollständiger Kartennummer und Token, rot markiert. Darunter dieselben drei Felder nach Behandlung: Request-ID unverändert, Karte auf die letzten vier Ziffern maskiert, Token durch „redacted" ersetzt. Hinweis: genug übrig zum Debuggen.

Bereinige vor dem Schreiben

  • Maskieren: Form bleibt, Wert verborgen
  • Redigieren: Wert entfernt, Marker bleibt

On-Call braucht Konfig, Fremde brauchen den Rest nicht

AWS-Sicherheit für Entwickler:innen nutzen

Lass uns üben!

AWS-Sicherheit für Entwickler:innen nutzen

Preparing Video For Download...