Shrnutí

Dokončeno

V tomto modulu jste prozkoumali, jak moderní vývoj softwaru závisí na opensourcových komponentách a znalostí strategiích implementace opensourcového softwaru při správě souvisejících bezpečnostních, právních a provozních rizik. Pochopení těchto konceptů vám umožňuje využívat opensourcové výhody a současně chránit vaši organizaci před potenciálními závazky.

Jak se sestavuje moderní software

Dozvěděli jste se, že současné aplikace jsou sestavené z komponent , nikoli zcela od nuly:

  • Složení součástí: Moderní aplikace se skládají z přibližně 80% existujících komponent udržovaných mimo projekt, přičemž pouze 20% původní kód obchodní logiky.
  • Open source versus uzavřený zdroj: Opensourcové komponenty poskytují veřejně dostupný zdrojový kód, který může kdokoli kontrolovat, upravovat a distribuovat, zatímco uzavřené zdrojové komponenty distribuují pouze binární soubory bez přístupu ke zdroji.
  • Ekosystémy balíčků: Komponenty se distribuují prostřednictvím správců balíčků, jako jsou npm, PyPI, NuGet a Maven Central, které automatizují správu závislostí.
  • Výhody vývoje založeného na komponentách: Opakované použití osvědčených komponent urychluje vývoj, zlepšuje kvalitu prostřednictvím komunitního ověřování, snižuje náklady tím, že se vyhne licenčním poplatkům a poskytuje přístup k špičkovým inovacím.
  • Rychlost vývoje: Použití opensourcových komponent výrazně zkracuje dobu uvedení na trh tím, že týmům umožní soustředit se na jedinečnou obchodní hodnotu a ne na opětovné sestavení společné infrastruktury.

Firemní obavy týkající se opensourcového softwaru

Při přijímání opensourcových komponent jste prozkoumali významná rizika, kterým organizace čelí :

Aspekty zabezpečení:

  • Známá ohrožení zabezpečení: V opensourcových komponentách jsou každoročně zjištěny tisíce ohrožení zabezpečení, které vyžadují nepřetržité monitorování a rychlé opravy.
  • Útoky na dodavatelský řetězec: Útočníci naruší účty správce balíčků, používají překlepování nebo zneužívají záměny závislostí k vložení škodlivého kódu.
  • Neudržované projekty: Mnoho open-source projektů nemá aktivní údržbu, a proto při opuštění údržbáři zůstávají bezpečnostní zranitelnosti neopravena.

Otázky týkající se kvality a spolehlivosti:

  • Proměnná kvalita: Open source komponenty se pohybují od profesionálně udržovaných projektů až po špatně otestované hobby kódy.
  • Zásadní změny: Komponenty ne vždy upřednostňují zpětnou kompatibilitu a při aktualizaci vyžadují změny kódu.
  • Mezery v dokumentaci: Nedostatečná dokumentace zvyšuje chyby integrace a zneužití.

Právní a licenční záležitosti:

  • Povinnosti dodržování licencí: Každá opensourcová licence ukládá požadavky od jednoduchého přiřazení až po povinné opensourcové derivátové práce.
  • Šíření copyleftu: Silné licence copyleftu, jako je GPL, mohou vyžadovat zveřejnění celého zdrojového kódu aplikace, pokud nejsou důsledně spravovány.
  • Šíření licencí: Aplikace můžou záviset na stovkách balíčků s desítkami různých licencí a vytvářet složitá zatížení dodržování předpisů.

Provozní obavy:

  • Závislost na externí infrastruktuře: Aplikace spoléhají na veřejné registry balíčků, které můžou zaznamenat výpadky nebo odebrání balíčku.
  • Zatížení správy aktualizací: Udržování závislostí v aktuálním stavu vyžaduje průběžné úsilí, testování a nasazení.

Co je opensourcový software

Seznámili jste se se základními charakteristikami opensourcového softwaru:

  • Definice: Software, jehož zdrojový kód je veřejně dostupný pro kontrolu, úpravy a distribuci, s výhradou opensourcové licence.
  • Vývoj pro spolupráci: Opensourcové projekty zahrnují distribuované přispěvatele po celém světě, kteří se dobrovolně účastní, a vývoj se transparentně vyvíjí ve veřejných úložištích.
  • Široce rozšířená adopce: Více než 90% podniků používá open-source software v produkčním prostředí a open-source technologie pohánějí internetovou infrastrukturu, cloudové platformy a mobilní zařízení.
  • Transformace Microsoftu: Microsoft se změnil od vnímání open source jako hrozby k jeho komplexnímu přijetí tím, že zpřístupnil .NET jako open-source, přispěl k vývoji Linuxu a Kubernetes a vytvořil oblíbené open-source nástroje, jako jsou Visual Studio Code a TypeScript.
  • Strategické odůvodnění: Organizace volí open source pro úspory nákladů, flexibilitu a kontrolu, transparentnost a zabezpečení prostřednictvím kontroly kódu, zabránění uzamčení dodavatele, podpoře komunity a předčasnému přístupu k inovacím.

Základy opensourcových licencí

Prozkoumali jste , jak opensourcové licence řídí používání softwaru:

Účel licence:

  • Definovat oprávnění: Licence udělují práva k používání, úpravě a distribuci softwaru, který by zákon o autorských právech jinak zakázal.
  • Ukládat povinnosti: Licence vyžadují přisuzování, zpřístupnění zdrojového kódu, zachování licencí a někdy i dodržování předpisů kopírování.
  • Právní omezení odpovědnosti: Autoři nejsou zodpovědní za škody a software je poskytován "tak, jak je" bez záruk.

Kritéria definice open source:

  • Bezplatné redistribuce: Žádná omezení prodeje nebo poskytování softwaru.
  • Dostupnost zdrojového kódu: Musí obsahovat zdroj v upřednostňované podobě pro úpravy.
  • Odvozená práce povolena: Je nutné povolit úpravy a odvozené práce.
  • Žádná diskriminace: Nelze diskriminovat osoby, skupiny ani pole úsilí.
  • Technologie neutrální: Nelze vyžadovat konkrétní technologie nebo rozhraní.

Kategorie licencí:

  • Permissivní licence: Povolit začlenění kódu do proprietárního softwaru s minimálními omezeními (MIT, Apache 2.0, BSD).
  • Copyleft licence: Vyžadují, aby odvozená díla využívala stejnou licenci, což zajišťuje, že software zůstane open-source (GPL, AGPL).
  • Slabé licence copyleft: Vyžadují otevření úprav komponenty, ale umožňují proprietární použití (LGPL, MPL).

Běžné opensourcové licence

Prozkoumali jste oblíbené licence a jejich klíčové vlastnosti:

Permissivní licence:

  • Licence MIT: Nejjednodušší permissivní licence vyžadující pouze přisuzování, maximalizaci přijetí a komerční použití.
  • Apache License 2.0: Permissivní licence s explicitními patentovými granty a defenzivním ukončením, což poskytuje přehlednost patentů.
  • Licence BSD: Podobně jako MIT, ale 3-Clause BSD zahrnuje omezení v použití názvů pro ochranu před neoprávněným použitím ochranných známek.

Silné licence kopírování:

  • GPL v2 a v3: Požadovat, aby odvozená díla byla licencovaná GPL a distribuovala zdrojový kód s binárními soubory; GPL v3 přidává patentovou ochranu a mezinárodní vylepšení kompatibility.
  • AGPL: Rozšiřuje GPL v3 o zřizování využití sítě vyžadující zpřístupnění zdroje pro nabídky SaaS.

Slabé licence copyleftu:

  • LGPL: Umožňuje propojit knihovny z proprietárních aplikací a zároveň vyžadovat úpravy samotné knihovny, aby byly opensourcové.
  • MPL 2.0: Poskytuje copyleft na úrovni souboru, který vyžaduje zpřístupnění zdroje pouze pro soubory s licencí MPL, nikoli proprietární kód ve stejné aplikaci.

Kompatibilita licencí:

  • Kompatibilní kombinace: MIT + Apache 2.0, MIT + GPL v3, Apache 2.0 + GPL v3, LGPL + GPL.
  • Nekompatibilní kombinace: GPL v2 + Apache 2.0, GPL + Proprietární, různé licence copyleft sloučeny.

Dopad na licence a hodnocení rizik

Dozvěděli jste se, jak vyhodnotit rizika licencí a implementovat dodržování předpisů:

Architektura rizik licencí:

  • Nízké riziko (zelená): Licence, jako je MIT, BSD, Apache 2.0, jsou bezpečné pro jakékoli komerční použití.
  • Střední riziko (žlutá): Slabá licence copyleft, jako je LGPL, MPL umožňují proprietární použití s omezeními úprav.
  • Vysoké riziko (červená): Licence s pevnou copyleft ochrannou, jako je GPL, AGPL, nejsou kompatibilní s distribucí proprietárního softwaru.
  • Neznámé riziko (oranžová): Vlastní nebo nejasné licence před použitím vyžadují právní kontrolu.

Důsledky komerčního softwaru:

  • Permissivní licence: Umožňují proprietární distribuci s jedinými požadavky na přisuzování.
  • Slabé copyleft: Povoluje používání knihoven v proprietárních aplikacích, ale vyžaduje open-sourcing úprav knihoven.
  • Silné kopírování: Vyžadovat deriváty open-sourcing, což je nekompatibilní s proprietárním softwarem.

Aspekty duševního vlastnictví:

  • Proprietární ochrana IP adres: Permissivní licence zachovávají proprietární kód; licence copyleft vyžadují zveřejnění.
  • Patentová ustanovení: Apache 2.0 a GPL v3 zahrnují explicitní patentové granty; MIT/BSD nemají přehled o patentech.
  • Ztráta obchodního tajemství: Zpřístupnění zdrojového kódu eliminuje ochranu obchodních tajemství.

Implementace dodržování předpisů:

  • Inventář závislostí: Udržujte komplexní seznam materiálu, který sleduje všechny komponenty open source a jejich verze.
  • Ověření kompatibility licencí: Pomocí automatizovaných nástrojů identifikujte nekompatibilitu licencí.
  • Dodržování předpisů pro přisuzování: Vygenerujte soubory agregace licencí, zahrňte do dialogových oken O produktu a spravujte je v dokumentaci.
  • Zřízení zdrojového kódu: Pro licence copyleft zadejte kompletní zdrojový kód s pokyny k sestavení.

Zabezpečení softwarového dodavatelského řetězce:

  • Kontrola ohrožení zabezpečení: Průběžně prohledávat závislosti známých ohrožení zabezpečení pomocí nástrojů, jako je Snyk, Dependabot nebo WhiteSource.
  • Zmírnění útoku na dodavatelský řetězec: Ověřte podpisy balíčků, upřednostněte důvěryhodné zdroje, používejte soukromé registry a připněte verze závislostí.
  • Hodnocení kvality: Vyhodnoťte stav údržby, velikost komunity, kvalitu dokumentace a postupy zabezpečení.

Zásady organizace:

  • Pracovní postupy schválení: Před přijetím nových závislostí implementujte předběžné vyhodnocení zabezpečení, licencování a kvality.
  • Schválené seznamy balíčků: Udržujte kurátorované seznamy předem připravených komponent, které můžou vývojáři okamžitě používat.
  • Vzdělávání pro vývojáře: Trénujte vývojáře na licenční důsledky, postupy zabezpečení a procesy dodržování předpisů.
  • Průběžné monitorování: Sledujte aktualizace závislostí, změny licencí a oznámení o zranitelnostech.

Klíčové poznatky

Při implementaci opensourcového softwaru ve vaší organizaci mějte na paměti tyto základní principy:

Přijetí opensourcového strategického přístupu: Open-source poskytuje obrovské výhody, včetně rychlosti vývoje, kvality, úspor nákladů a přístupu k inovacím. Místo toho, abyste se vyhnuli opensourcovým rizikům, implementujte procesy zásad správného řízení, které umožňují bezpečné přijetí.

Znalost závislostí: Udržujte komplexní inventáře všech opensourcových komponent, včetně tranzitivních závislostí. Rizika, která neznáte, nemůžete spravovat, což je základ viditelnosti závislostí pro efektivní opensourcovou správu.

Vysvětlení dopadů na licence: Různé licence mají výrazně odlišné důsledky pro komerční software. Permissivní licence, jako je MIT, jsou bezpečné pro proprietární software; kopyleftové licence, jako je GPL, vyžadují otevření zdrojového kódu odvozených děl. Porovná výběr licencí s obchodním modelem.

Posouzení kompatibility licencí: Ověřte, že licence jednotlivých součástí lze právně kombinovat. Nekompatibilní licence můžou vytvářet právní problémy, které vyžadují nákladné nápravy, včetně nahrazení součástí nebo přepsání kódu.

Implementace automatizovaného souladu s předpisy: Ruční sledování licencí neškáluje pro moderní aplikace se stovkami závislostí. Používejte automatizované nástroje pro kontrolu závislostí, detekci licencí a monitorování ohrožení zabezpečení.

Stanovení priority zabezpečení: Ohrožení zabezpečení v závislostech ovlivňují vaši aplikaci bez ohledu na to, kde pocházejí. Implementujte nepřetržitou kontrolu ohrožení zabezpečení a vytvořte procesy rychlé aktualizace pro důležité opravy zabezpečení.

Správa rizik dodavatelského řetězce: Kromě známých ohrožení zabezpečení chraňte před útoky dodavatelského řetězce prostřednictvím ověřování balíčků, hodnocení reputace zdroje, privátních registrů a připnutí závislostí.

Kontrola rovnováhy s svobodou: Vývojáři potřebují svobodu používat moderní nástroje a architektury. Místo blokování opensourcového přijetí implementujte schvalovací pracovní postupy a schválené seznamy balíčků, které umožňují bezpečné použití.

Informujte svůj tým: Důležité je povědomí o licencování a zabezpečení vývojářů. Školicí programy pomáhají vývojářům při rozhodování o výběru součástí a pochopení zásad organizace.

Sledujte nepřetržitě: Správa open source není jednorázová aktivita. Nová ohrožení zabezpečení se neustále zpřístupňují, licence se někdy mění a projekty je možné opustit. Nepřetržité monitorování zajišťuje průběžné dodržování předpisů a zabezpečení.

Použitím těchto principů a implementací systematických postupů správy opensourcových zdrojů umožníte vaší organizaci využívat obrovské výhody opensourcového softwaru a současně efektivně spravovat bezpečnostní, právní a provozní rizika.

Další informace