API-Sicherheit beginnt nicht mit Penetrationstests. Das soll nicht heißen, dass Tests nicht wichtig sind - sie sind es! Und zwar in mehreren Phasen. Es ist nicht immer machbar, jedes einzelne Sicherheitsszenario abzudecken, aber die wichtigsten sollten berücksichtigt werden. Deshalb ist es für das Unternehmen wichtig zu verstehen, was schief gehen kann, wann und wie man diesen Problemen so früh wie möglich zuvorkommt. Die folgenden Ratschläge basieren auf meinen langjährigen Erfahrungen als Sicherheitsingenieur beim Testen und Überwachen von Problemen und als Entwickler bei der Implementierung von APIs. Nutzen Sie diese Ratschläge als Orientierung. Einige könnten auf Ihren Kontext zutreffen, andere nicht. Es gibt eine Vielzahl von Informationen, daher habe ich mich nicht auf Technologien und Lösungen konzentriert. Diese Liste ist nicht erschöpfend (dafür brauche ich noch ein paar Blogs...), aber sie sollte Ihnen helfen, das Problemfeld zu erkennen und die besten Abhilfemaßnahmen zu finden.
0. Informieren Sie
Die wichtigste und früheste Maßnahme für die Sicherheit ist die Schulung. Stellen Sie sicher, dass die verschiedenen Fachleute über eine entsprechende Ausbildung verfügen und ihre Rolle in Bezug auf die Sicherheit und letztlich die Qualität Ihrer Anwendung verstehen. Die Ausbildung ist fortlaufend und kann auf jeden der unten aufgeführten Punkte angewendet werden.
1. Frühzeitig in Anwendungssicherheit investieren
Wenn wir über die Risiken nachdenken, die wir bereit sind zu akzeptieren, kann eine späte Entscheidung in der Entwicklungsphase kostspielig sein. Penetrationstests decken Sicherheitsprobleme auf, an die beim Entwurf nicht gedacht wurde - es ist, als würde man ein brüchiges Fundament entdecken, nachdem man das Haus bereits gebaut hat. Im besten Fall flicken Sie das Problem, aber Sie werden weiterhin reaktiv sein. Der teuerste (und gründlichste) Fall ist, dass Sie das Fundament neu aufbauen und sicherstellen, dass es stabil ist, sich bei späteren Designänderungen leicht darauf aufbauen lässt und mit Ihnen wächst.
Entscheiden Sie, welche Daten wichtig sind
Daten sind unglaublich wertvoll, und genau das macht sie auch zu einer Belastung. Denken Sie an die Daten, die Sie sammeln und speichern. Benötigen Kunden von jedem Gerät aus Zugriff auf ihre Daten oder können die Informationen lokal gespeichert werden? Ist Ihr Unternehmen auf Analysen angewiesen und können Sie diese Daten für die Verwendung in KI-Trainingsmodellen vernünftig anonymisieren? Wenn Sie wissen, welche Daten wichtig sind, können Sie die richtigen Schutzmaßnahmen und Trennungen einführen.
Einbindung der Sicherheit in Architektur und Design
Wenn Sie wissen, wer Zugriff auf Ihre Daten benötigt, kann dies Einfluss darauf haben, wie ein System konzipiert und implementiert wird. Je früher die Sicherheitsbehörden potenzielle Risiken und Bedrohungen aufzeigen können, desto einfacher wird es sein, sie zu entschärfen. Eine Maßnahme könnte die Erstellung eines Bedrohungsmodells sein, aber stellen Sie sicher, dass Sie die richtigen Personen einbeziehen. Wenn Sie sich dafür entscheiden, einen Dritten mit der Analyse und Speicherung Ihrer Daten zu beauftragen, sollten Sie eine Due-Diligence-Prüfung durchführen, bevor Sie einen Vertrag mit diesem Unternehmen abschließen. Bitten Sie um eine Proof of Concept-Phase, führen Sie eine solide und wiederholbare Sicherheitsbewertung des Drittanbieters durch und stellen Sie sicher, dass er Ihre regulatorischen Anforderungen erfüllt.
API-Sicherheit auf der Anwendungsebene
Cloud-Dienste haben bequeme Möglichkeiten eingeführt, um den Zugriff auf bestimmte Daten zu sichern. Wenn Sie sich jedoch auf Kontrollen auf der Netzwerkebene verlassen, um zu authentifizieren und zu autorisieren, wer auf Ihre Daten zugreifen darf, kann es passieren, dass die Kontrollen umgangen werden. In manchen Szenarien kann dies die einzige Option sein. Wenn Sie sicherstellen, dass die Entwicklung diese Authentifizierungs- und Autorisierungsebene für jeden Endpunkt berücksichtigt und implementiert, erhalten Sie eine fein abgestufte Kontrolle und stellen sicher, dass die Geschäftslogik nahe an der Anwendung bleibt. Dies definiert klare Sicherheitstestszenarien und bedeutet auch, dass die Überprüfung des Codes eine bessere Chance hat, Implementierungsprobleme aufzuzeigen, während statische Analysen und Tests das von Ihnen erwartete Verhalten validieren können.
Geheimnisse Management
Die Art und Weise, wie Geheimnisse während der Entwicklung gespeichert und darauf zugegriffen wird, kann zu Datenlecks in der Produktion führen. Ich habe unzählige Passwörter im Code gefunden, die dann in den Anwendungs- und Netzwerkschichten aufgedeckt wurden - oder in öffentlichen Code-Repositories veröffentlicht wurden. Jeder, der sie findet, könnte dann versuchen, auf weitere Informationen aus der API, internen Datenbanken, Endpunkten und mehr zuzugreifen.
Authentifizierung & Autorisierung
Wie die Nutzer Ihrer API authentifiziert und autorisiert werden, ist eine der kritischsten Fragen, die ich bei Implementierungen finde. Es gibt verschiedene Vor- und Nachteile von API-Schlüsseln, Token-basierter Authentifizierung und der Verwendung eines zentralisierten Trusts mit Ansprüchen und kryptografischer Signierung. Jede Lösung wird die Komplexität erhöhen, aber auch die Sicherheit. Aus diesem Grund kann die frühzeitige Einbeziehung der Sicherheit in die Entwurfsphase die Zeit bis zur Marktreife und die Kosten, die für die Markteinführung anfallen, entscheidend beeinflussen.
2. Verstehen Sie, was Ihre Vermögenswerte sind (und wer Zugang zu ihnen hat)
Vermögenswerte können als alles definiert werden, was Sie für Ihr Unternehmen als wertvoll erachten. Im Allgemeinen fallen Kundendaten und Ihr geistiges Eigentum in diese Kategorie. Mit der Zeit sammeln sich Logik, Anwendungen und Dienste an. Fusionen und Übernahmen, eine rasche Erhöhung der Mitarbeiterzahl und Mehrfachvermietungen können die damit verbundenen Sicherheitsprobleme verstärken. Ich habe in Unternehmen beobachtet, dass Assets wie Datenbanken und API-Endpunkte, die als "Legacy" gelten (d.h. ein Unternehmen denkt, dass es einen alten Endpunkt abgeschaltet und auf die neuere Version umgestellt hat), immer noch verfügbar sind. Einige der Gründe, warum dies passieren kann:
- fehlende Standardisierung bei der Versionsverwaltung, der Arbeitsweise und der kontinuierlichen Bereitstellung kann das Problem verstärken
- Fusionen und Übernahmen nicht vollständig inventarisiert wurden oder werden können
- Wissen geht verloren, wenn Mitarbeiter das Unternehmen verlassen
- keine formalen oder geschäftlichen Anforderungen, die Aufschluss darüber geben, was und wo die Infrastruktur eingesetzt wird
Schritte zum Auditing Ihrer Assets und Endpunkte:
Definieren Sie, was wichtig ist
Verstehen Sie, welche digitalen Assets für Sie am wichtigsten sind und was ein "Game Over" oder ein Katastrophenszenario für Ihr Unternehmen bedeuten würde. Definieren Sie den Grad der Kontrolle, der für diese Assets erforderlich ist. Wenn Sie nicht wissen, welche das sind, sollten Sie mehrere Abteilungen einbeziehen. Stellen Sie sicher, dass Technik, Data Science, IT und weitere Abteilungen in diese Prüfung einbezogen werden - Sie werden vielleicht überrascht sein, wo einige Ihrer Daten leben.
Angriffsflächen-Management
Investieren Sie in ein Tool oder ein Unternehmen, das den Überblick darüber behält, wo sich Ihre digitalen Assets befinden. Einige dieser Unternehmen suchen auch nach Schwachstellen und alarmieren Sie, wenn sich etwas ändert. Einige gehen sogar noch einen Schritt weiter und finden Assets, von denen Sie nichts wissen. Das kann jedoch schwierig sein, wenn z.B. ein Domänenname und ein Zertifikat nicht als Teil Ihres Unternehmens oder innerhalb der Internetprotokoll-/CIDR-Bereiche registriert sind, die Sie für die Überprüfung angeben.
Verwenden Sie Kontrollen zur Überwachung von Änderungen
Überwachen Sie die Assets, die Ihnen wichtig sind, insbesondere wenn sich etwas ändert. Eine neue Bereitstellung oder eine Änderung der Steuerelemente könnte eine private Datenbank oder einen privaten Speicher in etwas Öffentliches verwandeln - Sie wollen es wissen, sobald dies geschieht. Unterschiedliche Anforderungen können darauf hindeuten, dass dies von vornherein verhindert werden sollte, aber Sie können sich nicht immer sicher sein. Cloud-Unternehmen bieten mehrere Dienste an, die auch in diesem Fall helfen können.
Portale für API-Entwickler
Das Sammeln von API-Dokumentation bietet in mehrfacher Hinsicht Vorteile. Das Wissen wird an einem Ort aufbewahrt, für den Fall, dass Teams wechseln oder Mitarbeiter ausscheiden. Sicherheitstests werden vereinfacht, da wertvolle Zeit eingespart wird, die normalerweise damit verbracht wird, sich durch Code, mehrere Code-Repositories oder undokumentierte Endpunkte zu wühlen. Veröffentlichen Sie nur das Nötigste.
3. Implementieren Sie einen "Secure by Design"- und "Secure by Default"-Ansatz
Mehr als Schlagworte (oder Phrasen) spielt das Unternehmen eine tiefere Rolle bei der Definition dessen, was "sicher" ist. Oben haben wir beschrieben, was wichtig ist. Jetzt müssen wir uns darüber im Klaren sein, was zu tun ist und warum. Wenn ein Entwicklungsteam eine Entscheidung über die nächste Funktion oder Arbeit treffen muss, die es in Angriff nimmt, wie und wovon wird diese Entscheidung beeinflusst? Ist es eine Frist, die Zufriedenheit des Kunden oder ist es, weil "das Sicherheitsteam" es so gesagt hat? Mandate und Richtlinien des Sicherheitsteams reichen nicht aus - geben Sie stattdessen klare Richtlinien und Leitplanken vor. Wenn Sie beispielsweise medizinische Daten von Millionen von Menschen verarbeiten, ist der Schutz dieser medizinischen Daten wichtig. Ohne ein klares Verständnis dessen, was für das Unternehmen von entscheidender Bedeutung ist und warum, und wer Zugriff auf diese Daten haben sollte, kann es für die Teams schwierig sein, die richtigen Prioritäten zu setzen. Warum dies möglicherweise nicht sicher geschieht:
- Service- und Produktivitätsteams sind nicht vorhanden, überlastet oder nicht in der Lage, mit Teams zusammenzuarbeiten
- Ein einzelner Entwickler kann zu viele Verantwortlichkeiten haben, vom Entwurf der Software bis hin zum Verständnis, wie man sie einsetzt und betreibt
- Das Unternehmen braucht Teams, die aufgrund von Marktanforderungen, Wettbewerb und willkürlichen Fristen "schneller" arbeiten.
Schritte zum Aufbau einer "Secure-First"-Entwicklung:
Gleichgewicht zwischen Geschwindigkeit, Sicherheit und Qualität
Sobald Sie wissen, was Sie schützen müssen und wie Sie es schützen können, sollten Sie die vorhandenen Kontrollen intelligenter gestalten. Automatisieren Sie, was Sie können, aber verstehen Sie, dass auch manuelle Eingriffe erforderlich sind. Nehmen Sie sich genügend Zeit, um im Vorfeld richtig nachzudenken, gut zu entwerfen, zu implementieren und die Robustheit einer Anwendung zu testen. Wenn Sie einfach nur neue Funktionen in eine brüchige Anwendung einbauen, bedeutet dies eine ständig wachsende technische Verschuldung, die lang bestehende Sicherheitsprobleme begraben könnte.
Gepflasterte Straßen und goldene Wege
Expertenteams in den Bereichen Entwicklererfahrung, Plattform und Betrieb könnten dabei helfen, Sicherheitskontrollen einzubauen, damit die Entwicklungsteams das tun können, was sie am besten können. Wenn Sie ein neues Projekt erstellen, müssen Sie dieselben Sicherheitskontrollen für diese Infrastruktur definieren - eine kognitive Belastung, die sich verringern lässt. Die Implementierung von Sicherheitsleitplanken könnte bedeuten, dass bei jeder Bereitstellung einer bestimmten Datenbank oder eines Datenspeichers standardmäßig die sichersten Kontrollen aktiviert sind, was die Überprüfung, das Testen und die Überwachung erleichtert. Je nach dem Kontext der eingesetzten Anwendung können immer noch Ausnahmen gemacht werden, wenn es um die Sicherheit geht.
Vermeiden Sie Standardoptionen bei Installationen
Wenn Sie bestimmte APIs oder Technologien implementieren, werden diese oft mit einer Standardinstallation geliefert. Die Passwörter sollten geändert werden. Denken Sie aber auch an die Standard-API und die Informationsseiten, die möglicherweise ebenfalls bereitgestellt werden. In der Regel handelt es sich dabei um Standardpfade, nach denen leicht gesucht werden kann. Sie geben mehr Informationen über Ihr System preis, als eigentlich erforderlich ist.
4. Protokollieren, überwachen, jagen, lernen
In diesem Beitrag haben wir uns auf proaktive Maßnahmen konzentriert, die Sie frühzeitig umsetzen können, aber es wird unweigerlich ein Zeitpunkt kommen, an dem Sie auf einen Sicherheitsvorfall reagieren müssen. Dabei kann es sich um einen kritischen Patch, eine Systemverletzung oder ein Versehen bei der Bereitstellung handeln. Es ist wichtig zu wissen, was in solchen Situationen zu tun ist und wie Sie sich wieder erholen können.
Überwachung Ihres Anwendungsverkehrs
Legen Sie eine Basis für die "normale" Nutzung Ihrer Anwendung fest und überwachen Sie diese Ausreißer. Je mehr Informationen Sie herausfinden können, z. B. über den Standort, die Endpunkte, auf die zugegriffen wird, und die Menge der gleichzeitig verbrauchten Daten, desto besser können Sie verschiedene Kontrollen durchführen. Möglicherweise werden Sie feststellen, dass Sie die Geschwindigkeit, mit der Kunden Daten abrufen, begrenzen müssen, was aus Kostengründen und zur Verlangsamung der Datenerfassung wichtig ist. Einfaches Überwachen reicht nicht aus. Gehen Sie einen Schritt weiter und finden Sie heraus, welche dieser Punkte automatisiert werden können - z.B. die dynamische Drosselung des Zugriffs auf der Grundlage von anomalem Verhalten.
Fallstricke bei der Protokollierung
Protokollierung und Speicherauszüge könnten sensible Informationen preisgeben, können kostspielig sein und erfordern möglicherweise weitere Anleitungen zur Implementierung. Diese Informationen werden oft für die Fehlersuche in einem System benötigt, in der Regel in der Entwicklung, aber auch in der Produktion. Geben Sie diese Informationen nicht an den Endbenutzer weiter, es sei denn, sie sind für seine eigene Fehlersuche unerlässlich. Es gibt unzählige Fälle, in denen APIs überaus hilfreich waren und ich Technologieversionen, Implementierungsprobleme und weitere Informationen über Daten, auf die ich zugreifen kann (auf die ich vielleicht keinen Zugriff haben sollte), sammeln konnte.
Überprüfungen nach Unfällen ohne Schuldzuweisung und Lernkultur
Wie schnell sind Sie in der Lage, nach einem Vorfall zu reagieren und sich zu erholen? Möglicherweise entdecken Sie Lücken in Ihren Prozessen, wie z.B. das Zusammentragen der richtigen Personen und Informationen und die schnellstmögliche Reaktion darauf oder das Fehlen eines Notfallplans. Stellen Sie sicher, dass Sie aus diesen Vorfällen lernen, indem Sie eine Nachbetrachtung durchführen, die sich darauf konzentriert, was schief gelaufen ist und wie dies in Zukunft verhindert werden kann. Wenn Sie die Frage nach dem "Wer" aus dem Weg räumen, entsteht ein offener, sicherer Raum, in dem Sie sich austauschen können, aber noch wichtiger ist, dass Sie verstehen, dass sich Probleme nicht in einem Silo abspielen. Wenn jemand die Ursache für einen Vorfall war, welcher Prozess (oder fehlende Kontrollen) hat dann dazu geführt?
Fazit
Dieser Beitrag nahm Sie mit auf die Reise, eine neue Anwendung zu entwerfen und zu untersuchen, wie diese mit der API-Sicherheit zusammenhängt, zu prüfen, was Sie bereits haben, und die verfügbaren Optionen zur Sicherung Ihrer API(s) in verschiedenen Phasen zu erwägen. Letztendlich wollen wir sicherstellen, wie die Nutzer Ihrer API auf Ihre Daten zugreifen, den Missbrauch Ihrer Daten reduzieren und Sicherheitsprobleme entschärfen, wo wir können. Das Handeln und Implementieren von Lösungen sollte der letzte Schritt sein - der erste Schritt besteht darin, den Kontext und das Problem zu verstehen, das Sie zu lösen versuchen. Viele der oben genannten Punkte, wie z.B. die Prüfung Ihrer APIs, die Überlegung, wer und wie sie genutzt werden, und die Einbeziehung verschiedener Disziplinen, werden Ihnen dabei helfen. Die Bedeutung von Bildung kann gar nicht hoch genug eingeschätzt werden, denn sie hilft bei der Auswahl der besten Lösungen. Bildung hilft auch bei der Verbesserung und Weiterentwicklung der Anwendung und bei der Reaktion auf Sicherheitsvorfälle. Geben Sie als Unternehmen klare Richtlinien vor, befähigen Sie die Ingenieure, Verantwortung zu übernehmen und geben Sie ihnen die Zeit, die bestmöglichen Entscheidungen zu treffen.
Dieser Blog ist Teil unserer Serie " Ganzheitliche Horizonte ". Sehen Sie sich den vorherigen Eintrag an - "Ich denke über die Produktivität von Entwicklern nach" von Jochum Börger
Verfasst von

Yianna Paris
Unsere Ideen
Weitere Blogs
Contact



