Wenn Ihr Sicherheitsmodell auf dem Konzept einer externen Prüfung Ihrer gesamten Codebasis zu einem bestimmten Zeitpunkt basiert, machen Sie die Sicherheit falsch.
... und Sie verwenden sie wahrscheinlich das Audit auch falsch. Aber wir werden dazu kommen.
Ohne Frage muss der gesamte Code auf Sicherheit geprüft werden. In vielen Fällen ist dies tatsächlich eine gesetzliche Anforderung: Kein Code wird ohne Audit geliefert. Die traditionelle Weisheit legt nahe, dass eine solche Prüfung zu einem bestimmten Zeitpunkt im Lebenszyklus ein Ereignis ist. Eine sinnvollere Methode besteht jedoch darin, den Code während der Prüfung zu prüfen. Das heißt, jeder Code erhält eine Sicherheitsüberprüfung bevor er in Ihre Codebasis eingecheckt werden kann.
Die Theorie ist einfach; Das Repository ist bereits geprüft, sodass wir seine Komponenten nicht als Standardverfahren erneut prüfen müssen. Wenn jedoch eine neue Funktion, ein neuer Patch oder ein neuer Bugfix vorgeschlagen wird, muss der Diff von den entsprechenden Betreuern abgemeldet werden. Sie können sich für alles abmelden, was Ihnen wichtig ist. Zum Beispiel hat der Linux-Kernel einen ziemlich komplizierten Genehmigungsprozess, der mehrere Vermerke auf dem Weg zu Qualität, Einfachheit, Konsistenz, Leistung usw. erfordert. Ihre Anforderungen können variieren, aber ein Sicherheitsaudit sollte Teil dieses Genehmigungsprozesses sein.
In diesem Fall prüfen Sie das Produkt nicht durchgehend, sondern nur den Unterschied. Aber Tausende winziger Audits im Verlauf des Produktentwicklungszyklus werden weitaus gründlicher und umfassender sein, als es sich ein End-to-End-Audit erhoffen könnte.
Ein End-to-End für das gesamte Produkt -end Audit ist sicherlich hilfreich und sollte nicht vermieden werden. Diese Prüfung sollte sich auf das Produkt als Ganzes konzentrieren, und zwar auf eine Weise, die während der von Ihnen durchgeführten Prüfungen auf Patch-Ebene nicht so einfach durchzuführen ist. Sie möchten von Zeit zu Zeit den gesamten Wald betrachten, nicht nur die einzelnen Bäume. Der Zeitpunkt dieser umfangreichen Audits sollte wahrscheinlich größeren Releases, größeren Änderungen oder Audits zur Konformitätszertifizierung entsprechen.
Indem Sie jedoch die Überwachung auf Patch-Ebene auf dem neuesten Stand halten, können Sie sicherstellen, dass der Code immer in einem überprüfbaren Zustand gehalten wird, sodass Sie weiterhin regelmäßig und sicher versenden können.
Informationen zu Genehmigungen zur Festschreibungszeit
Wenn Ihr Unternehmen dies nicht tut, machen Sie alles falsch. Es gibt Dutzende, vielleicht Hunderte von Problemen, die gelöst werden, indem jede Codeänderung von mindestens einer anderen Person genehmigt werden muss, einschließlich (und insbesondere) während der anfänglichen Entwicklung. Sie sollten immer mindestens zwei Personen haben, die verstehen, wie jede Codezeile funktioniert, und die zustimmen, dass der Code korrekt ist.
Dies ist mindestens so wichtig wie Unit-Tests. Wenn Sie dies nicht tun, stoppen Sie alles und besuchen Sie Ihre Richtlinien zu Qualität und Sicherheit erneut.
Ja, dieser Prozess wird skaliert. Wie oben erwähnt, wird es vom größten Softwareprojekt der Welt verwendet, ebenso wie von einigen der agilsten und erfolgreichsten Softwareunternehmen der Welt.