Zusammenfassung
In diesem Modul haben Sie untersucht, wie die moderne Softwareentwicklung von Open-Source-Komponenten und gelernten Strategien für die Implementierung von Open-Source-Software abhängt, während Sie die damit verbundenen Sicherheits-, Rechts- und Betriebsrisiken verwalten. Wenn Sie diese Konzepte verstehen, können Sie Open-Source-Vorteile nutzen, während Sie Ihre Organisation vor potenziellen Verbindlichkeiten schützen.
Wie moderne Software erstellt wird
Sie haben gelernt, dass zeitgenössische Anwendungen aus Komponenten zusammengesetzt werden , anstatt komplett von Grund auf neu zu bauen:
- Komponentenkomposition: Moderne Anwendungen bestehen aus ca. 80% vorhandenen Komponenten, die außerhalb des Projekts verwaltet werden, wobei nur 20% ursprünglicher Geschäftslogikcode sind.
- Open-Source im Vergleich zu geschlossener Quelle: Open-Source-Komponenten bieten öffentlich verfügbaren Quellcode, den jeder überprüfen, ändern und verteilen kann, während Komponenten mit geschlossener Quelle nur Binärdateien ohne Quellzugriff verteilen können.
- Paketökosysteme: Komponenten werden über Paketmanager wie npm, PyPI, NuGet und Maven Central verteilt, die die Abhängigkeitsverwaltung automatisieren.
- Vorteile der komponentenbasierten Entwicklung: Durch die Wiederverwendung bewährter Komponenten wird die Entwicklung beschleunigt, die Qualität durch die Überprüfung der Community verbessert, die Kosten durch Vermeidung von Lizenzgebühren reduziert und Zugang zu modernsten Innovationen ermöglicht.
- Entwicklungsgeschwindigkeit: Durch die Verwendung von Open-Source-Komponenten wird die Marktzeit erheblich reduziert, indem Teams sich auf einen eindeutigen Geschäftswert konzentrieren können, anstatt die gemeinsame Infrastruktur neu zu erstellen.
Unternehmensbedenken bezüglich Open-Source-Software
Sie haben die erheblichen Risiken untersucht, die Organisationen beim Einführen von Open-Source-Komponenten haben:
Sicherheitsbedenken:
- Bekannte Sicherheitsrisiken: Tausende von Sicherheitsrisiken werden jährlich in Open-Source-Komponenten entdeckt, die eine kontinuierliche Überwachung und schnelles Patchen erfordern.
- Lieferkettenangriffe: Angreifer kompromittieren Paketverwaltungskonten, verwenden Tippfehler oder Exploits von Abhängigkeitsverwechslungen, um schädlichen Code einzugeben.
- Nicht verwaltete Projekte: Bei vielen Open-Source-Projekten fehlen aktive Wartungen, sodass Sicherheitsrisiken nicht gepatcht werden, wenn Betreuer Projekte aufgeben.
Qualitäts- und Zuverlässigkeitsbedenken:
- Variable Qualität: Open-Source-Komponenten reichen von professionell gepflegten Projekten bis hin zu schlecht getesteten Hobbycode.
- Breaking Changes: Komponenten priorisieren nicht immer die Rückwärtskompatibilität, weshalb beim Aktualisieren Codeänderungen erforderlich sind.
- Dokumentationslücken: Unzureichende Dokumentation erhöht Integrationsfehler und Missbrauch.
Rechtliche und Lizenzierungsbedenken:
- Lizenzkonformitätsverpflichtungen: Jede Open-Source-Lizenz erzwingt Anforderungen von einfachen Namensnennungen bis hin zu obligatorischem Open-Sourcing von abgeleiteten Werken.
- Copyleft-Verbreitung: Starke Copyleft-Lizenzen wie GPL können das Open-Sourcing Ihrer gesamten Anwendung erfordern, falls die Verwaltung nicht sorgfältig erfolgt.
- Lizenzverbreitung: Anwendungen hängen möglicherweise von Hunderten von Paketen mit Dutzenden verschiedener Lizenzen ab, wodurch komplexe Compliance-Belastungen entstehen.
Betriebliche Bedenken:
- Abhängigkeit der externen Infrastruktur: Anwendungen basieren auf öffentlichen Paketregistrierungen, die Ausfälle oder Das Entfernen von Paketen erleben können.
- Updateverwaltungsaufwand: Die Einhaltung von Abhängigkeiten erfordert kontinuierlichen Aufwand, Tests und Bereitstellungen.
Welche Open-Source-Software ist
Sie haben die grundlegenden Eigenschaften von Open-Source-Software kennengelernt:
- Definition: Software, deren Quellcode öffentlich zur Überprüfung, Änderung und Verteilung verfügbar ist, vorbehaltlich einer Open-Source-Lizenz.
- Gemeinsame Entwicklung: Open-Source-Projekte umfassen verteilte Mitwirkende weltweit, die freiwillig teilnehmen, wobei die Entwicklung transparent in öffentlichen Repositorys stattfindet.
- Weit verbreitete Einführung: Über 90% von Unternehmen nutzen Open-Source-Software in der Produktion und Open-Source-Technologien nutzen Internetinfrastruktur, Cloudplattformen und mobile Geräte.
- Microsofts Transformation: Microsoft hat sich von der Betrachtung von Open Source als Bedrohung zur umfassenden Akzeptanz verschoben, mit der Öffnung von .NET, Beiträgen zu Linux und Kubernetes und der Erstellung beliebter Open-Source-Tools wie Visual Studio Code und TypeScript.
- Strategische Begründung: Organisationen wählen Open Source für Kosteneinsparungen, Flexibilität und Kontrolle, Transparenz und Sicherheit durch Codeüberprüfung, Vermeiden von Lieferantensperrungen, Community-Support und frühzeitigen Zugriff auf Innovationen.
Grundlagen der Open-Source-Lizenz
Sie haben untersucht , wie Open-Source-Lizenzen die Softwarenutzung steuern:
Lizenzzweck:
- Berechtigungen definieren: Lizenzen gewähren Rechte zur Nutzung, Änderung und Verteilung von Software, die das Urheberrecht anderweitig verbieten würde.
- Verpflichtungen auferlegen: Lizenzen erfordern Zuordnung, Offenlegung von Quellcode, Lizenzerhaltung und manchmal Copyleft-Compliance.
- Haftungsbeschränkung: Autoren sind nicht für Schäden haftbar, und Software wird ohne Garantien bereitgestellt.
Open Source-Definitionskriterien:
- Freie Umverteilung: Keine Einschränkungen beim Verkauf oder Verschenken von Software.
- Verfügbarkeit des Quellcodes: Die Quelle muss in bevorzugtem Format für Änderungen enthalten sein.
- Abgeleitete Arbeiten sind zulässig: Muss Änderungen und abgeleitete Arbeiten zulassen.
- Keine Diskriminierung: Es darf keine Diskriminierung von Personen, Gruppen oder Tätigkeitsfeldern erfolgen.
- Technologieneutral: Bestimmte Technologien oder Schnittstellen können nicht benötigt werden.
Lizenzkategorien:
- Zulässige Lizenzen: Erlauben Sie das Integrieren von Code in proprietäre Software mit minimalen Einschränkungen (MIT, Apache 2.0, BSD).
- Copyleft-Lizenzen: Fordern Sie abgeleitete Werke an, um dieselbe Lizenz zu verwenden, um sicherzustellen, dass Software open-source (GPL, AGPL) bleibt.
- Schwache Copyleft-Lizenzen: Erfordert Open-Sourcing-Änderungen an der Komponente, ermöglicht jedoch die proprietäre Verwendung (LGPL, MPL).
Allgemeine Open Source-Lizenzen
Sie haben beliebte Lizenzen und ihre wichtigsten Merkmale untersucht:
Zulässige Lizenzen:
- MIT-Lizenz: Einfachste lizenzpflichtige Lizenz, die nur Zuschreibung erfordert, die Akzeptanz und kommerzielle Nutzung maximiert.
- Apache License 2.0: Zulässige Lizenz mit expliziten Patenterteilungen und defensiver Beendigung, was die Patentklarierung ermöglicht.
- BSD-Lizenzen: Ähnlich wie MIT, wobei die 3-Klausel-BSD-Lizenz Namensnutzungseinschränkungen zur Markenschutz hinzufügt.
Starke Copyleft-Lizenzen:
- GPL v2 und v3: Erfordert, dass abgeleitete Werke GPL-lizenziert sind und Quellcode mit Binärdateien verteilen; GPL v3 fügt Patentschutz und internationale Kompatibilitätsverbesserungen hinzu.
- AGPL: Erweitert GPL v3 mit Netzwerkverwendungsbereitstellung, die die Offenlegung von Quellen für SaaS-Angebote erfordert.
Schwache Copyleft-Lizenzen:
- LGPL: Ermöglicht das Verknüpfen von Bibliotheken aus proprietären Anwendungen, während Änderungen an der Bibliothek selbst veröffentlicht werden müssen.
- MPL 2.0: Stellt Kopierleft auf Dateiebene bereit, die die Offenlegung der Quelle nur für MPL-lizenzierte Dateien erfordert, nicht proprietären Code in derselben Anwendung.
Lizenzkompatibilität:
- Kompatible Kombinationen: MIT + Apache 2.0, MIT + GPL v3, Apache 2.0 + GPL v3, LGPL + GPL.
- Inkompatible Kombinationen: GPL v2 + Apache 2.0, GPL + Proprietäre, verschiedene Copyleft-Lizenzen kombiniert.
Lizenzauswirkungen und Risikobewertungen
Sie haben gelernt, wie Sie Lizenzrisiken bewerten und Compliance implementieren:
Lizenzrisikorahmenwerk:
- Niedriges Risiko (Grün): Zulässige Lizenzen wie MIT, BSD, Apache 2.0 sind für jede kommerzielle Nutzung sicher.
- Mittleres Risiko (Gelb): Schwache Copyleft-Lizenzen wie LGPL, MPL erlauben die proprietäre Verwendung mit Einschränkungen bei Änderungen.
- Hohes Risiko (Rot): Starke Copyleft-Lizenzen wie GPL, AGPL sind nicht mit proprietärer Softwareverteilung kompatibel.
- Unbekanntes Risiko (Orange): Benutzerdefinierte oder unklare Lizenzen erfordern eine rechtliche Überprüfung vor der Verwendung.
Auswirkungen auf kommerzielle Software:
- Zulässige Lizenzen: Aktivieren Sie die proprietäre Verteilung nur mit Attributionsanforderungen.
- Schwache Copyleft-Lizenz: Erlaubt die Verwendung von Bibliotheken in proprietären Anwendungen, erfordert aber das Veröffentlichen der Änderungen am Quellcode der Bibliotheken.
- Starkes Copyleft: Verlangt, dass abgeleitete Werke als Open Source verfügbar gemacht werden, wodurch sie mit proprietärer Software inkompatibel werden.
Überlegungen zum geistigen Eigentum:
- Proprietärer IP-Schutz: Zulässige Lizenzen behalten proprietären Code bei; Copyleft-Lizenzen erfordern eine Offenlegung.
- Patentbestimmungen: Apache 2.0 und GPL v3 umfassen explizite Patenterteilungen; MIT/BSD mangelt es an Patentklarheit.
- Geschäftsgeheimnissverlust: Die Offenlegung des Quellcodes beseitigt den Schutz von Geschäftsgeheimnissen.
Complianceimplementierung:
- Abhängigkeitsinventar: Führen Sie eine umfassende Stückliste, die alle Open-Source-Komponenten und -Versionen verfolgt.
- Überprüfung der Lizenzkompatibilität: Verwenden Sie automatisierte Tools, um Lizenzinkompatibilitäten zu identifizieren.
- Urheberrechtskonformität: Erstellen Sie Lizenzaggregationsdateien, fügen Sie sie in den Dialogen «Über» ein und verwalten Sie sie in der Dokumentation.
- Quellcodebereitstellung: Stellen Sie für Copyleft-Lizenzen vollständigen Quellcode mit Buildanweisungen bereit.
Software-Lieferkettensicherheit:
- Überprüfung der Sicherheitsanfälligkeit: Überprüfen Sie kontinuierlich Abhängigkeiten nach bekannten Sicherheitsrisiken mithilfe von Tools wie Snyk, Dependabot oder WhiteSource.
- Risikominderung von Lieferkettenangriffen: Überprüfen Sie Paketsignaturen, bevorzugen Sie vertrauenswürdige Quellen, verwenden Sie private Registrierungen, und heften Sie Abhängigkeitsversionen an.
- Qualitätsbewertung: Bewerten des Wartungsstatus, der Communitygröße, der Dokumentationsqualität und der Sicherheitspraktiken.
Organisationsrichtlinien:
- Genehmigungsworkflows: Implementieren Sie die Vorabverwendungsbewertung für Sicherheit, Lizenzierung und Qualität, bevor Sie neue Abhängigkeiten übernehmen.
- Genehmigte Paketlisten: Verwalten Sie kuratierte Listen mit vorab überprüften Komponenten, die Entwickler sofort verwenden können.
- Entwicklerschulung: Schulen Sie Entwickler über Lizenzauswirkungen, Sicherheitspraktiken und Complianceprozesse.
- Kontinuierliche Überwachung: Verfolgen Sie Abhängigkeitsupdates, Lizenzänderungen und Offenlegungen von Sicherheitsrisiken.
Wichtige Erkenntnisse
Beachten Sie beim Implementieren von Open-Source-Software in Ihrer Organisation die folgenden grundlegenden Prinzipien:
Nutzen Sie Open Source strategisch: Open-Source bietet enorme Vorteile, einschließlich Entwicklungsgeschwindigkeit, Qualität, Kosteneinsparungen und Innovationszugang. Anstatt Open Source aufgrund von Risiken zu vermeiden, implementieren Sie Governanceprozesse, die eine sichere Einführung ermöglichen.
Kennen Sie Ihre Abhängigkeiten: Verwalten Sie umfassende Inventare aller Open-Source-Komponenten, einschließlich transitiver Abhängigkeiten. Sie können Risiken, die Sie nicht kennen, nicht verwalten, wodurch die Sichtbarkeit von Abhängigkeiten grundlegend für effektives Open-Source-Management ist.
Grundlegendes zu Lizenzauswirkungen: Verschiedene Lizenzen haben dramatisch unterschiedliche Auswirkungen auf kommerzielle Software. Permissive Lizenzen wie MIT sind für proprietäre Software sicher; Copyleft-Lizenzen wie GPL erfordern die Offenlegung abgeleiteter Werke. Passen Sie die Lizenzauswahl an Ihr Geschäftsmodell an.
Bewerten der Lizenzkompatibilität: Überprüfen Sie, ob Lizenzen verschiedener Komponenten rechtlich kombiniert werden können. Inkompatible Lizenzen können rechtliche Probleme verursachen, die kostspielige Korrekturen erfordern, einschließlich Komponentenersetzung oder Codeumschreibungen.
Implementieren der automatisierten Compliance: Die manuelle Lizenznachverfolgung wird nicht auf moderne Anwendungen mit Hunderten von Abhängigkeiten skaliert. Verwenden Sie automatisierte Tools zum Überprüfen von Abhängigkeiten, zur Lizenzerkennung und zur Sicherheitsrisikoüberwachung.
Priorisieren der Sicherheit: Sicherheitsrisiken in Abhängigkeiten wirken sich auf Ihre Anwendung aus, unabhängig davon, wo sie stammen. Implementieren Sie kontinuierliche Sicherheitsrisikoüberprüfungen, und richten Sie schnelle Updateprozesse für kritische Sicherheitspatches ein.
Verwalten von Lieferkettenrisiken: Schützen Sie über bekannte Sicherheitsrisiken hinaus vor Supply Chain-Angriffen durch Paketüberprüfung, Quellenzuverlässigkeitsbewertung, private Registrierungen und Anheften von Abhängigkeiten.
Gleichgewichtskontrolle mit Freiheit: Entwickler benötigen Freiheit, moderne Tools und Frameworks zu verwenden. Anstatt die Akzeptanz von Open Source zu blockieren, implementieren Sie Genehmigungsworkflows und genehmigte Paketlisten, die die sichere Verwendung ermöglichen.
Schulen Sie Ihr Team: Entwicklerbewusstsein für Lizenzierungs- und Sicherheitsbedenken ist unerlässlich. Schulungsprogramme helfen Entwicklern, gute Entscheidungen zur Komponentenauswahl zu treffen und Organisationsrichtlinien zu verstehen.
Kontinuierlich überwachen: Die Open-Source-Verwaltung ist keine einmalige Aktivität. Neue Sicherheitsrisiken werden ständig offengelegt, Lizenzen ändern sich manchmal, und Projekte können abgebrochen werden. Kontinuierliche Überwachung gewährleistet fortlaufende Compliance und Sicherheit.
Indem Sie diese Prinzipien anwenden und systematische Open-Source-Managementpraktiken implementieren, können Sie Ihre Organisation die immensen Vorteile von Open Source-Software nutzen und gleichzeitig Sicherheits-, Rechts- und Betriebsrisiken effektiv verwalten.