AWS Key Management Service (3)
Neben den eigentlichen Ver- und Entschlüsselungsoperationen ist es wichtig, die sichere Verwaltung von Schlüsseln zu gewährleisten. Dies umfasst deren Generierung und Speicherung, Berechtigungsfunktionalitäten samt Möglichkeiten der Schlüsselrotation sowie das Erstellen und Verwalten von Backups. In diesem Artikel beleuchten wir den AWS Key Management Service, mit dessen Unterstützung Unternehmen Daten in AWS-Diensten oder eigenen Applikationen verschlüsseln und digital signieren können. Im dritten Teil dreht sich alles um den AWS Secrets Manager.
AWS Secrets Manager
Nicht immer geht es darum, umfangreiche Datensätze zu verschlüsseln. In vielen Anwendungsfällen benötigen Unternehmen lediglich die Sicherheit, dass Passwörter und Secrets, die von den Applikationen genutzt werden, geschützt sind. Zu diesem Zweck bietet der AWS Secrets Manager die Möglichkeit, hartcodierte Anmeldeinformationen in Applikationen durch API-Aufrufe an den Secrets Manager zu ersetzen. Dadurch stellen Sie sicher, dass das Secret nicht kompromittiert werden kann, wenn unautorisierte Dritte Ihren Code durchsuchen, da es nicht mehr im Quellcode vorhanden ist.
Außerdem lässt sich der Secrets Manager so konfigurieren, dass das Secret automatisch nach einem festgelegten Zeitplan rotiert. Auf diese Weise können Sie Secrets mit langer Einsatzdauer durch solche mit kurzer ersetzen, wodurch sich das Risiko einer Kompromittierung erheblich verringert. Zum Schutz der Secrets kommt die Envelope-Verschlüsselung zum Einsatz, die einzelne Datenschlüssel erzeugt, die unter einem KMS-Key verschlüsselt werden. Bei der Rotation eines Secrets erstellt der Secrets Manager automatisch einen neuen Datenschlüssel, der in den Metadaten des Secrets als Cipher-Text abgespeichert wird.
Schauen wir uns im Folgenden einen klassischen Anwendungsfall an, um die Konzepte greifbarer darzustellen – eine Applikation benötigt Anmeldeinformationen, um auf eine Datenbank zugreifen zu können:
- Ein Datenbankadministrator erstellt einen Satz von Anmeldeinformationen in der Personaldatenbank, die eine Applikation namens "MyCustomApp" verwenden soll. Darüber hinaus konfiguriert der Admin die Berechtigungen, die für den Zugriff der Anwendung auf die Personaldatenbank erforderlich sind.
- Der Datenbankadministrator speichert die Anmeldeinformationen im AWS Secrets Manager als Secret mit dem Namen "MyCustomAppCreds". Anschließend verschlüsselt und speichert der Manager die Anmeldeinformationen innerhalb des Secrets als geschützten Text.
- Secrets Manager ruft die KMS-Operation GenerateDataKey mit der ID des KMS-Schlüssel für das Secret und der Anforderung eines symmetrischen 256-Bit-AES-Schlüssels auf. KMS gibt einen Klartext-Datenschlüssel sowie eine mit dem KMS-Schlüssel verschlüsselte Kopie des Datenschlüssels zurück.
- Secrets Manager verwendet den Klartext-Datenschlüssel und den AES-Algorithmus, um den Wert des Secrets zu verschlüsseln. Der Klartextschlüssel wird direkt nach der Verwendung aus dem Speicher gelöscht.
- Secrets Manager speichert den verschlüsselten Datenschlüssel in den Metadaten des Secrets, sodass er jederzeit zum Entschlüsseln verfügbar ist. Keine der Secrets-Manager-APIs gibt jedoch das verschlüsselte Secret oder den verschlüsselten Datenschlüssel zurück.
- Wenn MyCustomApp auf die Datenbank zugreift, ruft die Anwendung das Secret "MyCustomAppCreds" aus dem Secrets Manager ab.
- Secrets Manager ruft das Secret ab, entschlüsselt den geschützten Wert und gibt das Secret über einen HTTPS-Kanal an die Clientanwendung zurück.
- Die Anwendung extrahiert die Anmeldeinformationen und alle anderen erforderlichen Informationen aus der Antwort und verwendet die Informationen dann für den Zugriff auf den Datenbankserver.
Fazit
In diesem Artikel haben wir uns neben der Klärung einiger kryptografischer Grundkonzepte mit dem aufwendigsten Teil einer effektiven Verschlüsselungsstrategie beschäftigt – dem Schlüsselmanagement. Mit den vermittelten Informationen zum Einsatz des AWS Key Management Service lassen sich dessen Verschlüsselungsmöglichkeiten sowohl mit AWS-Diensten als auch mit eigenen Applikationen nutzen. Auf entsprechenden AWS-Seiten finden sich tiefergehende Informationen zur Implementierung von KMS und den Details der verwendeten kryptografischen Methoden.
ln/Simon Philipp und Armin Schneider
Im ersten Teil des Workshops haben wir erklärt, wie Sie mit Envelope Encryption und Schlüsselhierarchien für Sicherheit sorgen und wie Policies den Schlüsseleinsatz steuern. Im zweiten Teil ging es um Authentifizierung und Zugriffskontrolle und wie Sie Richtlinien korrekt nutzen. Außerdem haben wir uns das Zusammenspiel mit anderen AWS-Diensten angeschaut.