Freigeben über


Empfehlungen zum Schutz geheimer Anwendungsschlüssel

Gilt für diese Empfehlung für die Sicherheit von Azure Well-Architected Framework:

SE:09 Schützen Sie geheime Anwendungsschlüssel, indem Sie deren Speicher härten und den Zugriff und die Manipulation einschränken und diese Aktionen überwachen. Führen Sie einen zuverlässigen und regelmäßigen Drehvorgang aus, der Drehungen für Notfälle improvisieren kann.

In diesem Leitfaden werden die Empfehlungen zum Sichern vertraulicher Informationen in Anwendungen beschrieben. Die ordnungsgemäße Verwaltung von Geheimschlüsseln ist entscheidend für die Aufrechterhaltung der Sicherheit und Integrität Ihrer Anwendung, Ihrer Arbeitsauslastung und der zugehörigen Daten. Eine unsachgemäße Behandlung von Geheimschlüsseln kann zu Datenschutzverletzungen, Dienstunterbrechungen, behördlichen Verstößen und anderen Problemen führen.

Anmeldeinformationen, z. B. API-Schlüssel, OAuth-Token (Open Authorization) und Secure Shell (SSH)-Schlüssel sind geheime Schlüssel. Einige Anmeldeinformationen, z. B. clientseitige OAuth-Token, können zur Laufzeit dynamisch erstellt werden. Dynamische Geheimnisse müssen trotz ihrer vorübergehenden Natur immer noch geschützt werden. Nichtanmeldeinformationen, z. B. Zertifikate und digitale Signaturschlüssel, können ebenfalls vertraulich sein. Complianceanforderungen können dazu führen, dass Konfigurationseinstellungen, die in der Regel nicht als geheim eingestuft werden, als geheime Anwendungsschlüssel behandelt werden.

Definitionen 

Ausdruck Definition
Zertifikate Digitale Dateien, die die öffentlichen Schlüssel zur Verschlüsselung oder Entschlüsselung enthalten.
Anmeldeinformationen Informationen, die verwendet werden, um die Identität des Herausgebers oder Verbrauchers in einem Kommunikationskanal zu überprüfen.
Überprüfung von Anmeldeinformationen Der Prozess der Überprüfung des Quellcodes, um sicherzustellen, dass geheime Schlüssel nicht enthalten sind.
Verschlüsselung Der Prozess, mit dem Daten unlesbar gemacht und mit einem geheimen Code gesperrt werden.
Schlüssel Ein geheimer Code, der zum Sperren oder Entsperren verschlüsselter Daten verwendet wird.
Zugriff mit geringsten Rechten Ein Zero Trust-Prinzip, das darauf abzielt, eine Reihe von Berechtigungen zum Abschließen einer Auftragsfunktion zu minimieren.
Verwaltete Identität Eine Identität, die Ressourcen zugewiesen und von Azure verwaltet wird.
Nichtsecret Informationen, die den Sicherheitsstatus der Arbeitsauslastung nicht gefährden, wenn sie geleert werden.
Drehung Der Prozess der regelmäßigen Aktualisierung geheimer Schlüssel, damit sie, wenn sie kompromittiert werden, nur für einen begrenzten Zeitraum verfügbar sind.
Geheimnis Eine vertrauliche Komponente des Systems, die die Kommunikation zwischen Arbeitsauslastungskomponenten erleichtert. Wenn geheime Daten geleert werden, können geheime Schlüssel zu einer Verletzung führen.
X.509 Ein Standard, der das Format von Zertifikaten für öffentliche Schlüssel definiert.

Wichtig

Behandeln Sie keine Nichtsecrets wie Geheime. Geheime Schlüssel erfordern eine betriebsbereite Strenge, die für Nichtsecrets unnötig ist und dies zu zusätzlichen Kosten führen kann.

Anwendungskonfigurationseinstellungen, z. B. URLs für APIs, die von der Anwendung verwendet werden, sind ein Beispiel für Nichtsecrets. Diese Informationen sollten nicht mit dem Anwendungscode oder geheimen Anwendungsschlüsseln gespeichert werden. Erwägen Sie die Verwendung eines dedizierten Konfigurationsverwaltungssystems wie Azure-App Konfiguration zum Verwalten dieser Einstellungen. Weitere Informationen finden Sie unter Was ist Azure-App Konfiguration?.

Wichtige Entwurfsstrategien

Ihre Strategie für die geheime Verwaltung sollte geheime Schlüssel so weit wie möglich minimieren und in die Umgebung integrieren, indem Sie plattformfeatures nutzen. Wenn Sie beispielsweise eine verwaltete Identität für Ihre Anwendung verwenden, sind Zugriffsinformationen nicht in Verbindungszeichenfolge eingebettet, und es ist sicher, die Informationen in einer Konfigurationsdatei zu speichern. Berücksichtigen Sie die folgenden Themenbereiche vor dem Speichern und Verwalten von geheimen Schlüsseln:

  • Erstellte geheime Schlüssel sollten im sicheren Speicher mit strengen Zugriffskontrollen aufbewahrt werden.

  • Geheime Drehung ist ein proaktiver Vorgang, während die Sperrung reaktiv ist.

  • Nur vertrauenswürdige Identitäten sollten Zugriff auf geheime Schlüssel haben.

  • Sie sollten einen Überwachungspfad verwalten, um den Zugriff auf geheime Schlüssel zu überprüfen und zu überprüfen.

Erstellen Sie eine Strategie um diese Punkte, um Identitätsdiebstahl zu verhindern, Ablehnung zu vermeiden und unnötige Informationen zu minimieren.

Verwalten von Arbeitsauslastungsgeheimnissen

Vermeiden Sie nach Möglichkeit geheime Schlüssel. Finden Sie Möglichkeiten, die Verantwortung an die Plattform zu delegieren. Verwenden Sie beispielsweise die integrierten verwalteten Identitäten der Plattform, um Anmeldeinformationen zu verarbeiten. Weniger geheime Schlüssel führen zu einer reduzierten Fläche und weniger Zeit, die für die geheime Verwaltung aufgewendet wurde.

Es wird empfohlen, dass Schlüssel drei unterschiedliche Rollen haben: Benutzer, Administrator und Auditor. Die Rollenunterschiede tragen dazu bei, sicherzustellen, dass nur vertrauenswürdige Identitäten Zugriff auf geheime Schlüssel mit der entsprechenden Berechtigungsstufe haben. Informieren Sie Entwickler, Administratoren und andere relevante Mitarbeiter über die Bedeutung der bewährten Methoden für geheime Verwaltung und Sicherheit.

Vorabfreigabeschlüssel

Sie können den Zugriff steuern, indem Sie für jeden Verbraucher unterschiedliche Schlüssel erstellen. Beispielsweise kommuniziert ein Client mit einer Drittanbieter-API mithilfe eines vorab gemeinsam genutzten Schlüssels. Wenn ein anderer Client auf dieselbe API zugreifen muss, muss er einen anderen Schlüssel verwenden. Teilen Sie Schlüssel nicht, auch wenn zwei Verbraucher über dieselben Zugriffsmuster oder -rollen verfügen. Verbraucherbereiche können sich im Laufe der Zeit ändern, und Sie können berechtigungen nicht unabhängig aktualisieren oder Verwendungsmuster unterscheiden, nachdem ein Schlüssel freigegeben wurde. Der unterschiedliche Zugriff erleichtert auch die Sperrung. Wenn der Schlüssel eines Verbrauchers kompromittiert wird, ist es einfacher, diesen Schlüssel ohne Auswirkungen auf andere Verbraucher zu widerrufen oder zu drehen.

Dieser Leitfaden gilt für verschiedene Umgebungen. Derselbe Schlüssel sollte nicht sowohl für Vorproduktions- als auch für Produktionsumgebungen verwendet werden. Wenn Sie für das Erstellen vordefinierter Schlüssel verantwortlich sind, stellen Sie sicher, dass Sie mehrere Schlüssel erstellen, um mehrere Clients zu unterstützen.

Weitere Informationen finden Sie unter Empfehlungen für die Identitäts- und Zugriffsverwaltung.

Geheimer Speicher

Verwenden Sie ein geheimes Verwaltungssystem, z. B. Azure Key Vault, um geheime Schlüssel in einer härteren Umgebung zu speichern, Ruhezustand und Übertragungen zu verschlüsseln und den Zugriff und Änderungen an geheimen Schlüsseln zu überwachen. Wenn Sie Anwendungsgeheimnisse speichern müssen, behalten Sie sie außerhalb des Quellcodes, um eine einfache Drehung zu ermöglichen.

Zertifikate sollten nur im Key Vault oder im Zertifikatspeicher des Betriebssystems gespeichert werden. Das Speichern eines X.509-Zertifikats in einer PFX-Datei oder auf einem Datenträger wird beispielsweise nicht empfohlen. Wenn Sie eine höhere Sicherheitsstufe benötigen, wählen Sie Systeme mit HSM-Funktionen (Hardware Security Module) anstelle von softwarebasierten Geheimspeichern aus.

Kompromiss: HSM-Lösungen werden zu höheren Kosten angeboten. Möglicherweise wird auch ein Effekt auf die Anwendungsleistung aufgrund von zusätzlichen Sicherheitsebenen angezeigt.

Ein dediziertes Geheimverwaltungssystem erleichtert das Speichern, Verteilen und Steuern des Zugriffs auf geheime Anwendungsschlüssel. Nur autorisierte Identitäten und Dienste sollten Zugriff auf geheime Speicher haben. Der Zugriff auf das System kann über Berechtigungen eingeschränkt werden. Wenden Sie beim Zuweisen von Berechtigungen immer den Ansatz mit den geringsten Berechtigungen an.

Sie müssen auch den Zugriff auf geheimer Ebene steuern. Jeder geheime Schlüssel sollte nur Zugriff auf einen einzelnen Ressourcenbereich haben. Erstellen Sie Isolationsgrenzen, damit eine Komponente nur geheime Schlüssel verwenden kann, die sie benötigt. Wenn eine isolierte Komponente kompromittiert wird, kann sie keine Kontrolle über andere geheime Schlüssel und potenziell die gesamte Workload erlangen. Eine Möglichkeit zum Isolieren geheimer Schlüssel besteht darin, mehrere Schlüsseltresor zu verwenden. Es gibt keine zusätzlichen Kosten für die Erstellung zusätzlicher Schlüsseltresor.

Implementieren Sie Überwachung und Überwachung für geheimen Zugriff. Protokollieren Sie, wer auf geheime Schlüssel zugreift und wann nicht autorisierte oder verdächtige Aktivitäten identifiziert werden sollen. Informationen zur Protokollierung aus Sicherheitsperspektive finden Sie unter Empfehlungen zur Sicherheitsüberwachung und Bedrohungserkennung.

Rotation von Geheimnissen

Haben Sie einen Prozess, der geheime Hygiene aufrecht erhält. Die Langlebigkeit eines geheimen Schlüssels beeinflusst die Verwaltung dieses Geheimen. Um Angriffsvektoren zu reduzieren, sollten geheime Schlüssel eingestellt und so häufig wie möglich durch neue Geheimschlüssel ersetzt werden.

Behandeln Sie OAuth-Zugriffstoken sorgfältig unter Berücksichtigung ihrer Zeit zum Leben. Überlegen Sie, ob das Belichtungsfenster auf einen kürzeren Zeitraum angepasst werden muss. Aktualisierungstoken müssen sicher gespeichert werden, wobei die Anwendung eingeschränkt ausgesetzt ist. Bei erneuerten Zertifikaten sollte auch ein neuer Schlüssel verwendet werden. Informationen zu Aktualisierungstoken finden Sie unter Secure OAuth 2.0 On-Behalf-Of-Aktualisierungstoken.

Ersetzen Sie Geheimnisse, nachdem sie ihr Lebensende erreicht haben, nicht mehr von der Workload verwendet werden oder wenn sie kompromittiert wurden. Im Gegensatz dazu sollten Sie aktive Geheime nicht außer Ruhe setzen, es sei denn, es handelt sich um einen Notfall. Sie können den Status eines geheimen Schlüssels ermitteln, indem Sie Zugriffsprotokolle anzeigen. Geheime Drehungsprozesse sollten sich nicht auf die Zuverlässigkeit oder Leistung der Workload auswirken. Verwenden Sie Strategien, die Redundanz in geheimen Schlüsseln, Verbrauchern und Zugriffsmethoden für eine reibungslose Drehung aufbauen.

Weitere Informationen zur Behandlung der Drehung in Azure Storage finden Sie unter Verwalten von Kontozugriffsschlüsseln.

Drehungsprozesse sollten ohne menschliche Interaktion automatisiert und bereitgestellt werden. Das Speichern von geheimen Schlüsseln in einem geheimen Verwaltungsspeicher, der rotationskonzepte nativ unterstützt, kann diese operative Aufgabe vereinfachen.

Sicheres Verwenden von Arbeitsauslastungsgeheimnissen

Als geheimer Generator oder Operator sollten Sie geheime Schlüssel auf sichere Weise verteilen können. Viele Organisationen verwenden Tools, um geheime Schlüssel sowohl innerhalb der Organisation als auch extern für Partner sicher zu teilen. Wenn kein Tool vorhanden ist, müssen Sie die Anmeldeinformationen ordnungsgemäß an autorisierte Empfänger übergeben. Ihre Notfallwiederherstellungspläne sollten geheime Wiederherstellungsprozeduren enthalten. Haben Sie einen Prozess für Situationen, in denen ein Schlüssel kompromittiert oder geleert wird und bei Bedarf neu generiert werden muss. Berücksichtigen Sie bei der Verwendung von Geheimschlüsseln die folgenden bewährten Methoden für die Sicherheit:

Verhindern der Hardcodierung

Stellen Sie keine geheimen Codeschlüssel als statischen Text in Codeartefakten wie Anwendungscode, Konfigurationsdateien und Buildbereitstellungspipelines bereit. Diese methode mit hohem Risiko macht den Code anfällig, da geheime Schlüssel allen Mit lesezugriff offengelegt werden.

Sie können diese Situation vermeiden, indem Sie verwaltete Identitäten verwenden, um die Notwendigkeit zum Speichern von Anmeldeinformationen zu vermeiden. Ihre Anwendung verwendet die zugewiesene Identität, um sich über den Identitätsanbieter (IdP) gegen andere Ressourcen zu authentifizieren. Testen Sie in Nichtproduktionsumgebungen mit gefälschten Geheimschlüsseln während der Entwicklung, um versehentliche Exposition von echten Geheimnissen zu verhindern.

Verwenden Sie Tools, die in regelmäßigen Abständen offengelegte Geheimschlüssel in Ihrem Anwendungscode erkennen und Artefakte erstellen. Sie können diese Tools als Git-Vorkommit-Hooks hinzufügen, die nach Anmeldeinformationen suchen, bevor der Quellcode bereitgestellt wird. Überprüfen und bereinigen Sie anwendungsprotokolle regelmäßig, um sicherzustellen, dass keine geheimen Schlüssel versehentlich aufgezeichnet werden. Sie können die Erkennung auch über Peer-Rezensionen verstärken.

Hinweis

Wenn die Scantools einen geheimen Schlüssel entdecken, muss dieser geheime Schlüssel als kompromittiert betrachtet werden. Es sollte widerrufen werden.

Reagieren auf geheime Drehung

Als Workloadbesitzer müssen Sie den geheimen Rotationsplan und die Richtlinien verstehen, damit Sie neue Geheimschlüssel mit minimalen Unterbrechungen für Benutzer integrieren können. Wenn ein Geheimschlüssel gedreht wird, gibt es möglicherweise ein Fenster, wenn der alte geheime Schlüssel nicht gültig ist, aber der neue geheime Schlüssel wurde nicht platziert. Während dieses Fensters erkennt die Komponente, die die Anwendung erreichen möchte, keine Anforderungen an. Sie können diese Probleme minimieren, indem Sie eine Wiederholungslogik im Code erstellen. Sie können auch gleichzeitige Zugriffsmuster verwenden, mit denen Sie über mehrere Anmeldeinformationen verfügen können, die sicher geändert werden können, ohne sich gegenseitig zu beeinträchtigen.

Arbeiten Sie mit dem Betriebsteam zusammen und sind Teil des Änderungsmanagementprozesses. Sie sollten anmeldeinformationenbesitzern mitteilen, wenn Sie einen Teil der Anwendung außer Betrieb setzen, der anmeldeinformationen verwendet, die nicht mehr benötigt werden.

Integrieren Sie geheimen Abruf und konfiguration in Ihre automatisierte Bereitstellungspipeline. Der geheime Abruf hilft, sicherzustellen, dass geheime Schlüssel während der Bereitstellung automatisch abgerufen werden. Sie können auch geheime Einfügemuster verwenden, um geheime Einfügungsmuster zur Laufzeit in Anwendungscode oder Konfiguration einzufügen, wodurch geheime Schlüssel nicht versehentlich für Protokolle oder Versionssteuerungen verfügbar gemacht werden.

Azure-Erleichterung

Speichern Sie geheime Schlüssel mithilfe von Key Vault. Speichern Sie geheime Schlüssel im Azure Secret Management System, Key Vault, Azure Managed HSM und anderen Standorten. Weitere Informationen finden Sie unter Auswählen der richtigen Schlüsselverwaltungslösung.

Integrieren sie identitätsbasierte Zugriffssteuerung. Microsoft Entra-ID und verwaltete Identitäten tragen dazu bei, die Notwendigkeit von geheimen Schlüsseln zu minimieren. Microsoft Entra ID bietet eine äußerst sichere und verwendbare Oberfläche für die Zugriffssteuerung mit integrierten Mechanismen für die Behandlung von Schlüsseldrehungen, für Anomalien und vieles mehr.

Verwenden Sie die rollenbasierte Zugriffssteuerung (Azure Role Based Access Control, RBAC), um Benutzern, Gruppen und Anwendungen Berechtigungen zu einem bestimmten Bereich zuzuweisen.

Verwenden Sie ein Zugriffsmodell, um Schlüsseltresor, Berechtigungen und geheime Schlüssel zu steuern. Weitere Informationen finden Sie in der Übersicht über Zugriffsmodelle.

Implementieren Sie geheime Expositionserkennung. Integrieren Sie Prozesse in Ihre Workload, die verdächtige Aktivitäten erkennen und regelmäßig nach verfügbar gemachten Schlüsseln in Ihrem Anwendungscode suchen. Beispiele für Optionen sind:

Speichern Sie schlüssel und geheime Schlüssel für keinen Umgebungstyp in Anwendungskonfigurationsdateien oder kontinuierlichen Integrations- und Kontinuierlichen Übermittlungspipelinen (CI/CD). Entwickler sollten Visual Studio Connected Services oder lokale Dateien verwenden, um auf Anmeldeinformationen zuzugreifen.

Checkliste für die Sicherheit

Lesen Sie den vollständigen Satz von Empfehlungen.