Câu hỏi đến như một vấn đề giấy phép, nhưng câu trả lời bắt đầu bằng một bản kiểm kê. Một giao diện VPN, động cơ OpenVPN mà nó điều khiển, một thư viện TLS và một trình cài đặt có thể có bốn bộ điều khoản khác nhau, và vẻ ngoài của sản phẩm không cho bạn biết tệp nào thuộc bộ nào. Đi qua các hiện vật theo thứ tự chúng được phân phối, và câu hỏi pháp lý trở nên hẹp hơn nhiều khi bạn chuyển nó cho người đủ năng lực trả lời. Mỗi bước thu hẹp nó hơn nữa: cái gì được phân phối, cái gì đã thay đổi và cách các phần giao tiếp.

Bắt đầu với những gì trình cài đặt đặt lên đĩa

Lấy trình cài đặt hoặc gói đã phát hành, không phải bản sao phát triển, và liệt kê mọi tệp nó đặt trên một máy sạch. Ghi lại phiên bản của giao diện, động cơ và thư viện TLS, và ghi chú liệu động cơ là một tệp thực thi riêng hay một thư viện được nạp vào cùng tiến trình.

Sự thật cuối cùng này định hình mọi thứ tiếp theo. Một tệp thực thi riêng được khởi chạy qua ổ cắm đặt ra một bộ câu hỏi khác với mã được biên dịch thành một tệp nhị phân duy nhất, và một trình cài đặt chỉ đặt cả hai cạnh nhau không quyết định vấn đề theo hướng nào. Đóng gói là một quyết định về bao bì, trong khi mối quan hệ giữa các chương trình là một quyết định kiến trúc.

Viết danh sách kèm phiên bản, vì các điều khoản khác nhau giữa các bản phát hành chính.

dpkg -L openvpn | head -n 40
openssl version -a

Tách giao diện khỏi động cơ

Tệp sao chép của OpenVPN nêu GPL phiên bản 2 và ghi lại ngoại lệ liên kết cho OpenSSL, đây là một sự cho phép cụ thể với phạm vi xác định chứ không phải giấy phép chung để trộn các điều khoản.

Ghi lại văn bản giấy phép được phân phối cùng bản dựng của bạn, không phải bản trên trang web dự án hôm nay. Một bản phát hành ghim nhánh cũ hơn mang theo tài liệu của nhánh đó. Ảnh chụp màn hình của một trang kho lưu trữ không phải là thứ thay thế, vì tệp bạn cần là tệp bên trong hiện vật. Lưu nó cạnh trình cài đặt để gói được đầy đủ.

Sau đó mô tả tích hợp một cách trung thực: giao diện khởi chạy động cơ như một tiến trình con và nói giao thức văn bản, hay liên kết một thư viện và trao đổi cấu trúc nội bộ? Cách bố trí thứ hai gần gũi theo cách mà cách thứ nhất không có, và chính sự khác biệt đó là điều người đánh giá sẽ hỏi trước tiên.

Ghi lại những tệp bạn đã thay đổi

Mã nguồn đã sửa đổi thay đổi phân tích nhiều hơn bất kỳ chi tiết đóng gói nào. Nếu bạn đã vá động cơ, bản vá tự nó là tác phẩm phái sinh, và nghĩa vụ thuộc về người phân phối kết quả.

Ghi lại từng bản vá, mục đích của nó và liệu nó có được gửi lên thượng nguồn hay không, vì một bản vá chưa bao giờ rời khỏi kho lưu trữ của bạn vẫn là một phần của những gì bạn phân phối nếu bạn phân phối tệp nhị phân.

Các tệp cấu hình, chủ đề và bản dịch thường sống cùng giao diện, nhưng một bản dịch nhúng chuỗi mã nguồn của động cơ là một lời nhắc nhỏ rằng ranh giới là theo tệp chứ không phải theo thư mục. Giữ một khác biệt giữa bản phát hành thượng nguồn và bản dựng của bạn để câu trả lời sẵn có khi được yêu cầu thay vì được tái tạo sau này. Sự khác biệt đó cũng là hiện vật hữu ích nhất khi một kiểm toán viên hỏi điều gì đã thay đổi.

Kiểm tra phiên bản OpenSSL riêng

OpenSSL 3.0 và mới hơn được phân phối theo Apache License 2.0, trong khi các bản phát hành cũ hơn mang các điều khoản OpenSSL/SSLeay. Đó là những tài liệu khác nhau với nghĩa vụ khác nhau, và một động cơ được đóng gói có thể liên kết với bất kỳ cái nào mà hệ thống dựng của bạn tìm thấy.

Xác nhận phiên bản thực sự được phân phối chứ không phải phiên bản được nêu trong một kịch bản dựng.

Việc phụ thuộc vào OpenVPN không biến mọi sửa đổi OpenSSL thành mã GPL, và ngoại lệ liên kết không loại bỏ các nghĩa vụ khác đi kèm với việc phân phối lại thư viện. Coi ngoại lệ là một điều khoản trong một phân tích rộng hơn, và ghi lại các thông báo của chính thư viện TLS cùng với mọi thứ khác.

Tập hợp gói bằng chứng

Gói có bốn phần: bản kiểm kê tệp kèm phiên bản, mô tả tích hợp, danh sách sửa đổi kèm khác biệt và các văn bản giấy phép như được phân phối. Thêm tệp thông báo bạn phân phối và nơi cung cấp mã nguồn, nếu nghĩa vụ của bạn yêu cầu một lời đề nghị.

Giữ gói dưới một chủ sở hữu để không bản phát hành nào có thể ra đi mà thiếu nó.

Không điều nào trong số này quyết định một vấn đề pháp lý, và đó chính là điểm: nó cung cấp cho người đánh giá đủ năng lực các sự kiện thay vì một bản tóm tắt do ai đó lắp ghép từ trí nhớ. Mô tả tiếp thị của một nhà cung cấp không phải là bằng chứng về kiến trúc của họ, và phỏng đoán của chính bạn về điều đó cũng không phải là bằng chứng.

Bài viết liên quan