Empfehlungen für den Schutz von Anwendungsgeheimnissen
Hierfür gilt die Empfehlung der Power Platform Well-Architected Security-Checkliste:
SE:07 | Schützen Sie Anwendungsgeheimnisse, indem Sie deren Speicherung härten, den Zugriff und die Manipulation einschränken und diese Aktionen überwachen. Führen Sie einen zuverlässigen und regelmäßigen Rotationsprozess durch, der Rotationen für Notfälle improvisieren kann. |
---|
In diesem Handbuch werden die Empfehlungen zum Schutz vertraulicher Informationen in Workloads beschrieben. Die ordnungsgemäße Verwaltung von Geheimnissen ist von entscheidender Bedeutung für die Aufrechterhaltung der Sicherheit und Integrität Ihrer Anwendung, Workload und zugehörigen Daten. Der unsachgemäße Umgang mit Geheimnissen kann zu Datenverlusten, Dienstunterbrechungen, Verstößen gegen Vorschriften und anderen Problemen führen.
Anmeldeinformationen wie API-Schlüssel, Open Authorization-Token (OAuth) und Secure Shell-Schlüssel (SSH) sind Geheimnisse. Compliance-Anforderungen können dazu führen, dass Konfigurationseinstellungen, die normalerweise nicht als geheim gelten, als Anwendungsgeheimnisse behandelt werden.
Definitionen
Begriff | Definition |
---|---|
Zertifikate | Digitale Dateien, die die öffentlichen Schlüssel zur Verschlüsselung oder Entschlüsselung enthalten. |
Credentials | Informationen, die zur Überprüfung der Identität des Herausgebenden oder Verbrauchenden in einem Kommunikationskanal verwendet werden. |
Scannen von Anmeldeinformationen | Der Prozess der Validierung des Quellcodes, um sicherzustellen, dass keine Geheimnisse enthalten sind. |
Verschlüsselung | Der Prozess, bei dem Daten unlesbar gemacht und mit einem Geheimcode gesperrt werden. |
Taste | Ein Geheimcode, der zum Sperren oder Entsperren verschlüsselter Daten verwendet wird. |
Mindestrechte für Zugriff | Ein Zero-Trust-Prinzip, das darauf abzielt, die Gruppe von Berechtigungen zur Ausführung einer Auftragsfunktion zu minimieren. |
Verwaltete Identität | Eine Identität, die Ressourcen zugewiesen und von Azure verwaltet wird. |
Nicht geheim | Informationen, die im Falle eines Lecks die Sicherheit des Workloads nicht gefährden. |
Drehung | Der Prozess der regelmäßigen Aktualisierung von Geheimnissen, sodass sie im Falle einer Kompromittierung nur für eine begrenzte Zeit verfügbar sind. |
Secret | Eine vertrauliche Komponente des Systems, die die Kommunikation zwischen Workload-Komponenten erleichtert. Wenn Geheimnisse an die Öffentlichkeit gelangen, kann es zu Sicherheitsverletzungen kommen. |
X.509 | Ein Standard, der das Format von Zertifikaten für öffentliche Schlüssel definiert. |
Wichtig
Behandeln Sie Nichtgeheimnisse nicht wie Geheimnisse. Geheimnisse erfordern eine operative Genauigkeit, die bei Nichtgeheimnissen nicht erforderlich ist und zu zusätzlichen Kosten führen kann.
Anwendungseinstellungen, die keine Geheimnisse sind, wie etwa die URLs der von der Anwendung benötigten APIs, sollten vom Anwendungscode oder den Anwendungsgeheimnissen getrennt gehalten werden. Erwägen Sie zum Speichern der Anwendungskonfiguration die Verwendung eines benutzerdefinierten Connectors oder von Umgebungsvariablen. Eine weitere Möglichkeit ist die Verwendung einer Dataverse-Tabelle zum Speichern von Metadaten zur Anwendungskonfiguration. Sie müssen jedoch eine Möglichkeit finden, diese Daten in einer neuen Umgebung einzufügen, beispielsweise durch Übertragen von Konfigurationsdaten von der Entwicklung in die Test- oder Produktionsumgebung. Dies können Sie mit Dataflows erreichen.
Wichtige Designstrategien
Berücksichtigen Sie vor dem Speichern und Verwalten von Geheimnissen die folgenden Problembereiche:
- Erstellte Geheimnisse sollten in einem sicheren Speicher mit strengen Zugriffssteuerungen aufbewahrt werden.
- Die geheime Rotation ist ein proaktiver Vorgang, wohingegen der Widerruf reaktiv ist.
- Nur vertrauenswürdige Identitäten sollten Zugriff auf Geheimnisse haben.
- Sie sollten einen Überwachungspfad pflegen, um den Zugriff auf Geheimnisse zu prüfen und zu validieren.
Entwickeln Sie eine Strategie rund um diese Punkte, um Identitätsdiebstahl zu verhindern, Verweigerungen zu vermeiden und die unnötige Offenlegung von Informationen zu minimieren.
Sichere Vorgehensweisen für die Geheimnisverwaltung
Wir empfehlen, dass Schlüssel drei unterschiedliche Rollen haben: Benutzender, Administrierender und Überwachungsfachkraft. Durch die Rollenunterscheidung wird sichergestellt, dass nur vertrauenswürdige Identitäten mit der entsprechenden Berechtigungsstufe Zugriff auf Geheimnisse haben. Informieren Sie Entwickelnde, Administrierende und anderes relevantes Personal über die Bedeutung der geheimen Verwaltung und bewährter Sicherheitsmethoden.
Vorab freigegebener Schlüssel
Sie können den Zugriff steuern, indem Sie für jeden Verbrauchenden unterschiedliche Schlüssel erstellen. Beispielsweise kommuniziert ein Client wie eine App oder ein Flow unter Verwendung eines vorab freigegebenen Schlüssels mit einer Drittanbieter-API. Wenn ein anderer Client auf dieselbe API zugreifen muss, muss er einen anderen Schlüssel verwenden. Geben Sie keine Schlüssel weiter, selbst wenn zwei Verbrauchende über dieselben Zugriffsmuster oder Rollen verfügen. Der Umfang der Verbraucherberechtigungen kann sich mit der Zeit ändern und Sie können nach der Freigabe eines Schlüssels weder Berechtigungen unabhängig aktualisieren noch Nutzungsmuster unterscheiden. Zudem erleichtert ein eindeutiger Zugriff den Widerruf. Wenn der Schlüssel eines Verbrauchenden kompromittiert wird, ist es einfacher, diesen Schlüssel zu widerrufen oder zu rotieren, ohne andere Verbrauchende zu beeinträchtigen.
Diese Anleitung gilt für unterschiedliche Umgebungen. Derselbe Schlüssel sollte nicht sowohl für Vorproduktions- als auch für Produktionsumgebungen verwendet werden. Wenn Sie für die Erstellung vorab freigegebener 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.
Geheimnisspeicher
Verwenden Sie ein Geheimnisverwaltungssystem wie Azure Key Vault, um Geheimnisse in einem gehärteten Umgebung zu speichern, im Ruhezustand und während der Übertragung zu verschlüsseln und den Zugriff auf und die Änderungen an Geheimnissen zu prüfen. Wenn Sie Anwendungsgeheimnisse speichern müssen, bewahren Sie diese außerhalb des Quellcodes auf, um eine einfache Rotation zu ermöglichen.
Ein dediziertes Geheimnisverwaltungssystem erleichtert das Speichern und Verteilen von Anwendungsgeheimnissen sowie die Zugriffskontrolle. 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 Mindestberechtigungen an.
Sie müssen den Zugriff auch auf Geheimnisebene steuern. Jedes Geheimnis sollte nur Zugriff auf einen einzigen Ressourcenbereich haben. Erstellen Sie Isolationsgrenzen, sodass eine Komponente nur die Geheimnisse verwenden kann, die sie benötigt. Wenn eine isolierte Komponente kompromittiert wird, kann sie keine Kontrolle über andere Geheimnisse und möglicherweise die gesamte Workload erlangen. Eine Möglichkeit zum Isolieren von Geheimnissen besteht in der Verwendung mehrerer Schlüsseltresore. Für die Erstellung zusätzlicher Schlüsseltresore entstehen keine zusätzlichen Kosten.
Implementieren Sie die Überwachung und das Monitoring für den Geheimniszugriff. Protokollieren Sie, wer wann auf Geheimnisse zugreift, um nicht autorisierte oder verdächtige Aktivitäten zu identifizieren. Informationen zur Protokollierung aus Sicherheitsperspektive finden Sie unter Empfehlungen zur Überwachung und Bedrohungserkennung.
Geheimnisrotation
Sorgen Sie für einen Prozess zur Gewährleistung der Geheimnispflege. Die Langlebigkeit eines Geheimnisses beeinflusst die Verwaltung dieses Geheimnisses. Um die Anzahl der Angriffsvektoren zu reduzieren, sollten Geheimnisse so oft wie möglich eingestellt und durch neue ersetzt werden.
Gehen Sie mit OAuth Zugriffstoken sorgfältig um und berücksichtigen Sie deren Gültigkeitsdauer. Überlegen Sie, ob das Expositionsfenster auf einen kürzeren Zeitraum angepasst werden muss. Aktualisierungstoken müssen sicher gespeichert werden und dürfen nur begrenzt der Anwendung ausgesetzt sein. Auch bei der Erneuerung von Zertifikaten sollte ein neuer Schlüssel verwendet werden. Informationen zu Aktualisierungstoken finden Sie unter Sichere OAuth 2.0 On-Behalf-Of-Aktualisierungstoken.
Ersetzen Sie Geheimnisse, wenn sie das Ende ihrer Lebensdauer erreicht haben, nicht mehr vom Workload verwendet werden oder kompromittiert wurden. Umgekehrt sollten Sie aktive Geheimnisse nicht zurückziehen, es sei denn, es handelt sich um einen Notfall. Sie können den Status eines Geheimnisses ermitteln, indem Sie die Zugriffsprotokolle anzeigen. Prozesse für die Geheimnisrotation sollten die Zuverlässigkeit oder Leistung des Workloads nicht beeinträchtigen. Verwenden Sie Strategien, die Redundanz bei Geheimnissen, Verbrauchenden und Zugriffsmethoden für eine reibungslose Rotation schaffen.
Sichere Vorgehensweisen bei der Verwendung von Geheimnissen
Als Geheimnisgenerator oder -betreiber sollten Sie in der Lage sein, Geheimnisse auf sichere Weise zu verbreiten. Viele Organisationen verwenden Tools, um Geheimnisse sowohl innerhalb der Organisation als auch extern an Partner sicher weiterzugeben. Falls kein entsprechendes Tool verfügbar ist, sorgen Sie für die ordnungsgemäße Weitergabe der Anmeldeinformationen an autorisierte Empfangende. Ihre Notfallwiederherstellungspläne sollten geheime Wiederherstellungsverfahren enthalten. Legen Sie einen Prozess für Situationen fest, in denen ein Schlüssel kompromittiert oder verloren gegangen ist und bei Bedarf neu generiert werden muss. Berücksichtigen Sie die folgenden Best Practices für die Sicherheit bei der Verwendung von Geheimnissen:
Hartcodierung verhindern
Codieren Sie Geheimnisse nicht als statischen Text in Codeartefakten wie Cloud-Flows und Canvas-Apps, Konfigurationsdateien und Build-Deployment-Pipelines fest. Dieses risikoreiche Vorgehen macht den Code angreifbar, da Geheimnisse für jeden mit Lesezugriff preisgegeben werden.
Verwenden Sie Tools, die in Ihrem Anwendungscode und in Build-Artefakten regelmäßig offengelegte Geheimnisse erkennen. Sie können diese Tools als Teil Ihrer Bereitstellungspipelines hinzufügen, um nach Anmeldeinformationen zu suchen, bevor Quellcode-Commits bereitgestellt werden. Überprüfen und bereinigen Sie die Anwendungsprotokolle regelmäßig, um sicherzustellen, dass keine Geheimnisse versehentlich aufgezeichnet werden. Sie können die Erkennung auch durch Peer-Überprüfungen verstärken.
Anmerkung
Wenn die Scan-Tools ein Geheimnis entdecken, muss dieses Geheimnis als kompromittiert betrachtet werden. Es sollte widerrufen werden.
Auf die Geheimnisrotation reagieren
Als Workload-Besitzender müssen Sie sich mit dem Rotationsplan und den Richtlinien für Geheimnisse vertraut machen, damit Sie neue Geheimnisse mit minimaler Störung der Benutzenden integrieren können. Beim Rotieren eines Geheimnisses kann es vorkommen, dass das alte Geheimnis nicht gültig ist, das neue Geheimnis jedoch noch nicht platziert wurde. Während dieses Zeitfensters bestätigt die Komponente, die die Workload zu erreichen versucht, keine Anforderungen. Sie können diese Probleme minimieren, indem Sie eine Wiederholungslogik in den Code einbauen. Sie können auch gleichzeitige Zugriffsmuster verwenden, die es Ihnen ermöglichen, über mehrere Anmeldeinformationen zu verfügen, die sicher geändert werden können, ohne dass sich dies gegenseitig beeinträchtigt.
Arbeiten Sie mit dem Betriebsteam zusammen und nehmen Sie am Änderungsmanagementprozess teil. Sie sollten die Besitzenden der Anmeldeinformationen informieren, wenn Sie einen Teil des Workload außer Betrieb nehmen, der nicht mehr benötigte Anmeldeinformationen verwendet.
Integrieren Sie das Abrufen und Konfigurieren von Geheimnissen in Ihre automatisierte Bereitstellungspipeline. Durch das Abrufen von Geheimnissen wird sichergestellt, dass Geheimnisse während der Bereitstellung automatisch abgerufen werden. Sie können auch Muster zur Geheimeinfügung verwenden, um Geheimnisse zur Laufzeit in den Anwendungscode oder die Konfiguration einzufügen. Dadurch wird verhindert, dass Geheimnisse versehentlich Protokollen oder der Versionskontrolle preisgegeben werden.
Power Platform: schnellere Durchführung
Die folgenden Abschnitte beschreiben Power Platform-Funktionen und -Fähigkeiten, die Sie zum Verwalten von Anwendungsgeheimnissen verwenden können.
Verwenden Sie Azure Key Vault-Geheimnisse
Umgebungsvariablen lassen den Verweis auf im Azure Key Vault gespeicherte Geheimnisse zu. Diese Geheimnisse werden dann für die Verwendung in Power Automate-Flows und benutzerdefinierten Konnektoren zur Verfügung gestellt. Beachten Sie, dass die Geheimnisse nicht für die Verwendung in anderen Anpassungen oder allgemein über die API verfügbar sind.
Die eigentlichen Geheimnisse werden nur in Azure Key Vault gespeichert und die Umgebungsvariable verweist auf den geheimen Speicherort des Schlüsseltresors. Die Verwendung von Azure Key Vault-Geheimnissen mit Umgebungsvariablen erfordert, dass Sie Azure Key Vault so konfigurieren, dass Power Platform die spezifischen Geheimnisse lesen kann, auf die Sie verweisen möchten. Weitere Informationen finden Sie unter Umgebungsvariablen in Lösungen verwenden und Umgebungsvariablen in benutzerdefinierten Lösungs-Connectors verwenden.
Lösungsüberprüfung verwenden
Mit der Lösungsprüferfunktion können Sie eine umfangreiche Prüfung der statischen Analyse auf Ihren Lösungen für einen Satz von Regeln der bewährten Methode ausführen und diese problematischen Muster schnell ermitteln. Nach der Überprüfung erhalten Sie einen Bericht, der Probleme aufzeigt, die bestimmt werden, welche Komponenten und Code betroffen sind und die Dokumentation verknüpft, die beschreibt, wie ein Problem zu beheben ist. Überprüfen Sie die verfügbaren Lösungsprüfregeln in der Kategorie „Sicherheit“. Weitere Informationen finden Sie unter Lösungsüberprüfung verwenden, um Ihre Lösungen zu validieren.
CyberArk-Aktionen verwenden
CyberArk bietet eine Identitätssicherheitsplattform, die menschliche und maschinelle Identitäten durchgängig schützt. Power Automate-Desktop Flows ermöglichen Ihnen den Abruf von Anmeldeinformationen von CyberArk. Weitere Informationen finden Sie unter CyberArk-Aktionen.
Verwandte Informationen
- Verwenden Sie Umgebung-Variablen in Lösungen
- Verwenden Sie Umgebung-Variablen in benutzerdefinierten Lösungs-Konnektoren
- Verwenden Sie den Lösungsprüfer, um Ihre Lösungen zu validieren
- CyberArk Aktionen
- Azure DevOps Anmeldeinformations-Scanner Aufgabe
- Konfigurieren Sie die Erweiterung Microsoft Security DevOps Azure DevOps
- Konfigurieren Sie GitHub Advanced Security für Azure DevOps
- Empfehlungen für die Überwachung und Bedrohungserkennung
- Empfehlungen für die Identitäts- und Zugriffsverwaltung
Sicherheitscheckliste
Lesen Sie die vollständigen Empfehlungen.