Interfejs VPN, silnik GPL i instalator: co jest dystrybuowane?
Zmapuj, co jest dystrybuowane, co zostało zmienione i jak części się komunikują, zanim zdecydujesz, jak warunki GPL i OpenSSL mają zastosowanie do Twojego pakietu interfejsu VPN.
Pytanie przychodzi jako kwestia licencyjna, ale odpowiedź zaczyna się od inwentaryzacji. Interfejs VPN, napędzany przez niego silnik OpenVPN, biblioteka TLS i instalator mogą mieć cztery różne zestawy warunków, a wygląd produktu nie mówi nic o tym, który plik należy do którego zestawu. Przejdź przez artefakty w kolejności ich dystrybucji, a kwestia prawna stanie się znacznie węższa, gdy przekażesz ją komuś kwalifikowanemu do odpowiedzi. Każdy krok ją zawęża: co jest dystrybuowane, co zostało zmienione i jak części się komunikują.
Zacznij od tego, co instalator umieszcza na dysku
Weź wydany instalator lub pakiet, a nie kopię deweloperską, i wypisz każdy plik, który umieszcza na czystej maszynie. Zapisz wersje interfejsu, silnika i biblioteki TLS oraz zanotuj, czy silnik jest osobnym plikiem wykonywalnym, czy biblioteką ładowaną do tego samego procesu.
Ten ostatni fakt kształtuje wszystko, co następuje. Osobny plik wykonywalny uruchamiany przez gniazdo stawia inny zestaw pytań niż kod skompilowany do jednego pliku binarnego, a instalator, który po prostu umieszcza oba obok siebie, nie rozstrzyga sprawy w żadną stronę. Pakowanie to decyzja o dystrybucji, natomiast relacja między programami jest decyzją architektoniczną.
Zapisz listę z dołączonymi wersjami, ponieważ warunki różnią się między wydaniami głównymi.
dpkg -L openvpn | head -n 40
openssl version -aOddziel interfejs od silnika
Plik kopiowania OpenVPN wskazuje GPL w wersji 2 i dokumentuje wyjątek linkowania dla OpenSSL, który jest konkretnym zezwoleniem o określonym zakresie, a nie ogólną licencją na mieszanie warunków.
Zapisz tekst licencji dostarczany z Twoją kompilacją, a nie ten, który jest dziś na stronie projektu. Wydanie, które przypięło starszą gałąź, niesie dokument tej gałęzi. Zrzuty ekranu strony repozytorium nie są zamiennikiem, ponieważ potrzebny plik jest tym wewnątrz artefaktu. Przechowuj go obok instalatora, aby pakiet był kompletny.
Następnie opisz integrację uczciwie: czy interfejs uruchamia silnik jako proces potomny i mówi protokołem tekstowym, czy linkuje bibliotekę i wymienia struktury wewnętrzne? Drugi układ jest bliski w sposób, w jaki pierwszy nie jest, i właśnie tę różnicę recenzent zapyta najpierw.
Zanotuj, które pliki zmieniłeś
Zmieniony kod źródłowy zmienia analizę bardziej niż jakikolwiek szczegół pakowania. Jeśli załatałeś silnik, sama łatka jest utworem zależnym, a obowiązek spoczywa na tym, kto dystrybuuje wynik.
Zapisz każdą łatkę, jej cel i to, czy została wysłana do projektu źródłowego, ponieważ łatka, która nigdy nie opuściła Twojego repozytorium, nadal jest częścią tego, co dostarczasz, jeśli dostarczasz plik binarny.
Pliki konfiguracyjne, motywy i tłumaczenia zwykle żyją razem z interfejsem, ale tłumaczenie osadzające ciągi kodu źródłowego silnika przypomina, że granica przebiega według pliku, a nie katalogu. Przechowuj różnicę między wydaniem źródłowym a swoją kompilacją, aby odpowiedź była dostępna na żądanie, a nie odtwarzana później. Ta różnica jest też najużyteczniejszym artefaktem, gdy audytor pyta, co się zmieniło.
Sprawdź wersję OpenSSL osobno
OpenSSL 3.0 i nowsze są dystrybuowane na licencji Apache 2.0, podczas gdy starsze wydania niosą warunki OpenSSL/SSLeay. To różne dokumenty z różnymi obowiązkami, a dołączony silnik może linkować ten, który znalazł Twój system kompilacji.
Potwierdź wersję faktycznie dostarczaną, a nie tę wymienioną w skrypcie kompilacji.
Zależność od OpenVPN nie zamienia każdej modyfikacji OpenSSL w kod GPL, a wyjątek linkowania nie usuwa innych obowiązków związanych z redystrybucją biblioteki. Traktuj wyjątek jako jedną klauzulę w szerszej analizie i zapisz własne komunikaty biblioteki TLS razem ze wszystkim innym.
Skompletuj pakiet dowodów
Pakiet ma cztery części: inwentarz plików z wersjami, opis integracji, listę zmian z różnicami i teksty licencji w postaci dostarczanej. Dodaj plik komunikatów, który dystrybuujesz, oraz miejsce, w którym oferowany jest kod źródłowy, jeśli Twoje obowiązki wymagają oferty.
Trzymaj pakiet pod jednym właścicielem, aby żadne wydanie nie mogło wyjść bez niego.
Nic z tego nie rozstrzyga kwestii prawnej i o to chodzi: daje wykwalifikowanemu recenzentowi fakty zamiast streszczenia złożonego z pamięci. Opis marketingowy dostawcy nie jest dowodem jego architektury, a Twoje własne przypuszczenie na ten temat również nie jest dowodem.