SEC02-BP03 Sicheres Speichern und Verwenden von Secrets - AWS Well-Architected Framework

SEC02-BP03 Sicheres Speichern und Verwenden von Secrets

Eine Workload muss ihre Identität automatisch gegenüber Datenbanken, Ressourcen und Services von Drittanbietern authentifizieren können. Dazu dienen geheime Zugriffsanmeldeinformationen wie etwa API-Zugriffsschlüssel, Passwörter und OAuth-Tokens. Die Verwendung eines dedizierten Services zur Speicherung, Verwaltung und Rotation der Anmeldeinformationen hilft dabei, die Gefahr der Kompromittierung dieser Anmeldeinformationen zu verringern.

Gewünschtes Ergebnis: Implementierung eines Mechanismus zur sicheren Verwaltung von Anmeldeinformationen für Anwendungen, mit dem die folgenden Ziele erreicht werden:

  • Identifikation der für die Workload erforderlichen Secrets

  • Reduzierung der Anzahl der erforderlichen langfristigen Anmeldeinformationen durch ihren Austausch gegen kurzfristige Anmeldeinformationen, wo dies möglich ist

  • Einrichtung der sicheren Speicherung und der automatischen Rotation der verbleibenden langfristigen Anmeldeinformationen

  • Überwachung des Zugriffs auf in der Workload vorhandene Secrets

  • Kontinuierliche Beobachtung, um sicherzustellen, dass im Rahmen des Entwicklungsprozesses keine Secrets in den Quellcode eingebettet werden

  • Reduzieren der Gefahr unbeabsichtigter Offenlegungen von Anmeldeinformationen

Typische Anti-Muster:

  • Keine Rotation der Anmeldeinformationen

  • Speichern langfristiger Anmeldeinformationen in Quellcode oder Konfigurationsdateien

  • Speichern von Anmeldeinformationen im Ruhezustand ohne Verschlüsselung

Vorteile der Nutzung dieser bewährten Methode:

  • Secrets werden im Ruhezustand und während der Übertragung verschlüsselt gespeichert.

  • Der Zugriff auf Anmeldeinformationen erfolgt über eine API (stellen Sie sich das als Automaten zum Verkauf von Anmeldeinformationen vor).

  • Der Zugriff (Lese- und Schreibzugriff) auf Anmeldeinformationen wird geprüft und protokolliert.

  • Trennung möglicher Problemquellen: Die Rotation der Anmeldeinformationen wird von einer separaten Komponente vorgenommen, die vom Rest der Architektur isoliert werden kann.

  • Secrets werden automatisch bei Bedarf an Softwarekomponenten verteilt und die Rotation erfolgt an einem zentralen Ort.

  • Der Zugriff auf Anmeldeinformationen kann detailliert kontrolliert werden.

Risikostufe, wenn diese bewährte Methode nicht eingeführt wird: Hoch

Implementierungsleitfaden

Früher wurden Anmeldeinformationen für die Authentifizierung bei Datenbanken, APIs von Dritten, Tokens und andere Secrets möglicherweise in eingebettetem Quellcode oder in Umgebungsdateien gespeichert. AWS bietet mehrere Mechanismen, um diese Anmeldeinformationen sicher zu speichern, sie automatisch zu rotieren und ihre Verwendung zu prüfen.

Das beste Verfahren für die Verwaltung von Secrets besteht darin, den Anweisungen zum Entfernen, Ersetzen und Rotieren zu folgen. Die sichersten Anmeldeinformationen sind diejenigen, die Sie nicht speichern, verwalten oder handhaben müssen. Möglicherweise gibt es Anmeldeinformationen, die für die Funktion der Workload nicht mehr benötigt werden und sicher entfernt werden können.

Bei Anmeldeinformationen, die für die korrekte Funktion der Workload weiterhin benötigt werden, besteht die Möglichkeit, langfristige Anmeldeinformationen durch temporäre oder kurzfristige zu ersetzen. So könnten Sie beispielsweise anstelle der Hartkodierung eines geheimen AWS-Zugriffsschlüssels diese langfristigen Anmeldeinformationen durch temporäre unter Verwendung von IAM-Rollen ersetzen.

Manche langfristigen Secrets können möglicherweise nicht entfernt oder ersetzt werden. Diese Secrets können in einem Service wie AWS Secrets Manager gespeichert werden, wo sie zentral gespeichert, verwaltet und regelmäßig rotiert werden können.

Eine Prüfung des Quellcodes und der Konfigurationsdateien der Workload kann verschiedene Arten von Anmeldeinformationen zutage fördern. Die folgende Tabelle fasst Strategien für den Umgang mit gängigen Arten von Anmeldeinformationen zusammen:

Anmeldeinformationstyp Beschreibung Empfohlene Strategie
IAM-Zugriffsschlüssel AWS-IAM-Zugriff und geheime Schlüssel, die zur Übernahme von IAM-Rollen innerhalb einer Workload verwendet werden Ersetzen: Verwenden Sie stattdessen IAM-Rollen, die den Datenverarbeitungs-Instances zugewiesen sind (z. B. Amazon EC2 oder AWS Lambda). Fragen Sie zwecks Interoperabilität mit Drittanbietern, die Zugriff auf Ressourcen in Ihrem AWS-Konto benötigen, ob diese den kontoübergreifenden AWS-Zugriff unterstützen. Erwägen Sie für mobile Apps die Verwendung temporärer Anmeldeinformationen über Amazon-Cognito-Identitätspools (Verbundidentitäten). Für Workloads, die außerhalb von AWS ausgeführt werden, sollten Sie IAM Roles Anywhere oder AWSSystems Manager Hybrid Activations in Betracht ziehen.
SSH-Schlüssel Private Secure-Shell-Schlüssel, mit denen Sie sich manuell oder im Rahmen eines automatisierten Prozesses bei Linux EC2-Instances anmelden können Ersetzen: Verwenden Sie AWS Systems Manager oder EC2 Instance Connect, um mithilfe von IAM-Rollen programmgesteuerten und menschlichen Zugriff auf EC2-Instances zu ermöglichen.
Anwendungs- und Datenbankanmeldeinformationen Passwörter – einfache Textzeichenfolge Rotation: Speichern Sie Anmeldeinformationen in AWS Secrets Manager und richten Sie nach Möglichkeit eine automatische Rotation ein.
Amazon-RDS- und Aurora-Administratordatenbank-Anmeldeinformationen Passwörter – einfache Textzeichenfolge Ersetzen: Verwenden Sie die Secrets Manager-Integration mit Amazon RDS oder Amazon Aurora. Darüber hinaus können einige RDS-Datenbanktypen in einigen Anwendungsfällen IAM-Rollen anstelle von Passwörtern verwenden. Weitere Informationen hierzu finden Sie unter IAM-Datenbankauthentifizierung.
OAuth-Token Geheime Token – einfache Textzeichenfolge Rotiation: Speichern Sie Token in AWS Secrets Manager und konfigurieren Sie die automatische Rotation.
API-Token und Schlüssel Geheime Token – einfache Textzeichenfolge Rotation: Speichern Sie diese Daten in AWS Secrets Manager und richten Sie nach Möglichkeit eine automatische Rotation ein.

Ein typisches Anti-Muster ist die Einbettung von IAM-Zugriffsschlüsseln in Quellcode, Konfigurationsdateien oder Mobil-Apps. Wenn für die Kommunikation mit einem AWS-Service ein IAM-Zugriffsschlüssel erforderlich ist, verwenden Sie temporäre (kurzfristige) Sicherheitsanmeldeinformationen. Diese kurzfristigen Anmeldeinformationen können über IAM-Rollen für EC2-Instances, Ausführungsrollen für Lambda-Funktionen, Cognito-IAM-Rollen für den mobilen Benutzerzugriff und IoT-Core-Richtlinien für IoT-Geräte bereitgestellt werden. Wenn Sie Schnittstellen zu Drittanbietern nutzen, sollten Sie eher den Zugriff auf eine IAM-Rolle mit dem erforderlichen Zugriff auf die Ressourcen Ihres Kontos delegieren, anstatt einen IAM-Benutzer zu konfigurieren und dem Drittanbieter den geheimen Zugriffsschlüssel für diesen Benutzer zu senden.

Es gibt viele Fälle, in denen die Workload die Speicherung von Secrets erfordert, die für die Zusammenarbeit mit anderen Services und Ressourcen erforderlich sind. AWS Secrets Manager wurde speziell für die sichere Verwaltung dieser Anmeldeinformationen sowie für die Speicherung, Verwendung und Rotation von API-Token, Passwörtern und anderen Anmeldeinformationen entwickelt.

AWS Secrets Manager bietet fünf wichtige Funktionen, um die sichere Speicherung und Verarbeitung vertraulicher Anmeldeinformationen zu gewährleisten: Verschlüsselung im Ruhezustand, Verschlüsselung während der Übertragung, umfassende Prüfungen, detaillierte Zugriffskontrolle und erweiterbare Rotation von Anmeldeinformationen. Andere Secret-Verwaltungsservices von AWS-Partnern oder lokal entwickelte Lösungen mit ähnlichen Funktionen und Sicherungen sind ebenfalls akzeptabel.

Implementierungsschritte

  1. Identifizieren Sie Codepfade, die hartkodierte Anmeldeinformationen enthalten, mithilfe von automatisierten Tools wie Amazon CodeGuru.

    1. Scannen Sie Ihre Code-Repositorys mit Amazon CodeGuru. Sobald die Überprüfung abgeschlossen ist, filtern Sie in CodeGuru nach Type=Secrets, um problematische Codezeilen zu finden.

  2. Identifizieren Sie Anmeldeinformationen, die entfernt oder ersetzt werden können.

    1. Identifizieren Sie Anmeldeinformationen, die nicht mehr benötigt werden, und markieren Sie sie zum Entfernen.

    2. Ersetzen Sie AWS-Geheimschlüssel, die in Quellcode eingebettet sind, durch IAM-Rollen, die mit den erforderlichen Ressourcen verbunden sind. Wenn ein Teil Ihrer Workload außerhalb von AWS ist, für den Zugriff auf AWS-Ressourcen jedoch IAM-Anmeldeinformationen erforderlich sind, sollten Sie IAM Roles Anywhere oder AWS Systems Manager Hybrid Activations in Betracht ziehen.

  3. Integrieren Sie für andere langfristige Secrets von Dritten, die die Rotationsstrategie erfordern, Secrets Manager in Ihren Code, um die externen Secrets zur Laufzeit abzurufen.

    1. Die CodeGuru-Konsole kann auf der Grundlage der erkannten Anmeldeinformationen automatisch ein Secret in Secrets Manager erstellen.

    2. Integrieren Sie den Secret-Abruf von Secrets Manager in Ihren Anwendungscode.

      1. Serverless-Lambda-Funktionen können eine sprachunabhängige Lambda-Erweiterung verwenden.

      2. Für EC2-Instances oder -Container stellt AWS clientseitigen Beispielcode zum Abrufen von Secrets aus Secrets Manager in verschiedenen gängigen Programmiersprachen bereit.

  4. Prüfen Sie Ihre Codebasis regelmäßig und wiederholen Sie dies, um sicherzustellen, dass dem Code keine neuen Secrets hinzugefügt wurden.

    1. Erwägen Sie die Verwendung eines Tools wie git-secrets, um zu verhindern, dass neue Secrets in Ihr Quellcode-Repository geladen werden.

  5. Überwachen Sie die Aktivitäten von Secrets Manager auf Anzeichen für eine unerwartete Nutzung, unangemessenen Secret-Zugriff oder Versuche, Secrets zu löschen.

  6. Reduzieren Sie menschliche Interaktionen mit Anmeldeinformationen. Schränken Sie den Zugriff zum Lesen, Schreiben und Ändern von Anmeldeinformationen auf eine für diesen Zweck dedizierte IAM-Rolle ein und erlauben Sie die Übernahme dieser Rolle nur einem kleinen Teil der betrieblichen Nutzer.

Ressourcen

Zugehörige bewährte Methoden:

Zugehörige Dokumente:

Zugehörige Videos:

Zugehörige Workshops: