Сводка
В этом модуле вы изучили, как современная разработка программного обеспечения зависит от компонентов с открытым исходным кодом и изученных стратегий реализации программного обеспечения с открытым исходным кодом при управлении связанными рисками безопасности, юридическими и операционными рисками. Понимание этих понятий позволяет использовать преимущества с открытым исходным кодом при защите организации от потенциальных обязательств.
Как создается современное программное обеспечение
Вы узнали, что современные приложения собираются из компонентов , а не создаются полностью с нуля:
- Состав компонента: Современные приложения состоят из примерно 80% существующих компонентов, которые хранятся вне проекта, при этом только 20% исходный код бизнес-логики.
- Открытый исходный код и закрытый источник: Компоненты с открытым исходным кодом предоставляют общедоступный исходный код, который любой пользователь может проверять, изменять и распространять, а компоненты закрытого источника распределяют только двоичные файлы без доступа к источнику.
- Экосистемы пакетов: Компоненты распределяются через диспетчеры пакетов, такие как npm, PyPI, NuGet и Maven Central, которые автоматизируют управление зависимостями.
- Преимущества разработки на основе компонентов: Повторное использование проверенных компонентов ускоряет разработку, улучшает качество через проверку сообщества, снижает затраты, избегая сборов лицензирования, и обеспечивает доступ к передовым инновациям.
- Скорость разработки: Использование компонентов с открытым исходным кодом значительно сокращает время на рынок, позволяя командам сосредоточиться на уникальной бизнес-ценности, а не перестроить общую инфраструктуру.
Корпоративные проблемы с программным обеспечением с открытым кодом
Вы изучили значительные риски, с которыми сталкиваются организации при внедрении компонентов с открытым кодом:
Проблемы безопасности:
- Известные уязвимости: Тысячи уязвимостей безопасности обнаруживаются в компонентах с открытым исходным кодом ежегодно, требуя непрерывного мониторинга и быстрого исправления.
- Атаки цепочки поставок: Злоумышленники компрометируют учетные записи сопровождающих пакеты, используют тайпосквоттинг или путаницу зависимостей для внедрения вредоносного кода.
- Необслуживаемые проекты: Многие проекты с открытым исходным кодом не имеют активного обслуживания, оставляя уязвимости незакрытыми, когда проект оставляется.
Проблемы качества и надежности:
- Переменное качество: Компоненты с открытым исходным кодом варьируются от профессионально поддерживаемых проектов до плохо протестированного любительского кода.
- Серьёзные изменения: Компоненты не всегда отдают предпочтение обратной совместимости, что требует изменения кода при обновлении.
- Пробелы в документации: Неадекватная документация увеличивает ошибки интеграции и неправильное использование.
Юридические и лицензионные проблемы:
- Обязательства по соответствию лицензиям: Каждая лицензия с открытым кодом накладывает требования, начиная от простой атрибуции до обязательного открытого источника производных работ.
- Распространение copyleft: Надежные лицензии copyleft, такие как GPL, могут требовать открытие исходного кода всего вашего приложения, если происходят ошибки в управлении.
- Распространение лицензий: Приложения могут зависеть от сотен пакетов с десятками различных лицензий, создавая сложные нагрузки на соответствие требованиям.
Операционные проблемы:
- Зависимость внешней инфраструктуры: Приложения используют общедоступные реестры пакетов, которые могут столкнуться с сбоями или удалением пакетов.
- Бремя управления обновлениями: Сохранение зависимостей в текущих условиях требует непрерывной работы, тестирования и развертывания.
Что такое программное обеспечение с открытым исходным кодом
Вы узнали основные характеристики программного обеспечения с открытым кодом:
- Определение: Программное обеспечение, исходный код которого общедоступен для проверки, изменения и распространения, при условии лицензии с открытым исходным кодом.
- Совместная разработка: Проекты с открытым исходным кодом включают распределенных участников по всему миру, которые участвуют добровольно, при разработке происходит прозрачно в общедоступных репозиториях.
- Широкое внедрение: Более 90% предприятий используют программное обеспечение с открытым исходным кодом в рабочей среде, а технологии с открытым исходным кодом — инфраструктуру Интернета, облачные платформы и мобильные устройства.
- Преобразование Майкрософт: Майкрософт перешла от рассмотрения открытого исходного кода как угрозы к его всестороннему принятию, сделала .NET с открытым исходным кодом, внесла вклад в Linux и Kubernetes и создала популярные инструменты с открытым исходным кодом, такие как Visual Studio Code и TypeScript.
- Стратегическое обоснование: Организации выбирают открытый код для экономии затрат, гибкости и контроля, прозрачности и безопасности с помощью проверки кода, избегая блокировки поставщика, поддержки сообщества и раннего доступа к инновациям.
Основы лицензий с открытым кодом
Вы изучили , как лицензии с открытым кодом управляют использованием программного обеспечения:
Назначение лицензии:
- Определение разрешений: Лицензии предоставляют права на использование, изменение и распространение программного обеспечения, которое законодательство об авторских правах запрещает.
- ** Налагать обязательства: Лицензии требуют атрибуции, раскрытия исходного кода, сохранения условий лицензии и иногда соблюдения условий копилефта.
- Отказ от ответственности: Авторы не несут ответственности за ущерб, а программное обеспечение предоставляется "как есть" без гарантий.
Критерии определения открытого исходного кода:
- Бесплатная распространяемая версия: Никаких ограничений на продажу или предоставление программного обеспечения.
- Доступность исходного кода: Должен включать исходный код в предпочтительной форме для внесения изменений.
- Разрешены производные работы: Должен разрешать изменения и производные работы.
- Нет дискриминации: Не может дискриминировать лиц, групп или областей усилий.
- Технологически нейтрально: Нельзя требовать конкретных технологий или интерфейсов.
Категории лицензий:
- Лицензии с разрешительными условиями: позволяют включать код в проприетарное программное обеспечение с минимальными ограничениями (MIT, Apache 2.0, BSD).
- Лицензии copyleft: Требуют, чтобы производные работы использовали ту же лицензию, гарантируя, что программное обеспечение остается с открытым исходным кодом (GPL, AGPL).
- Слабые лицензии copyleft: Требуют открытого распространения изменений в компоненте, но допускают использование в закрытых проектах (LGPL, MPL).
Общие лицензии с открытым кодом
Вы изучили популярные лицензии и их ключевые характеристики:
Разрешительные лицензии:
- Лицензия MIT: Простейшая разрешительная лицензия, требующая только атрибуции, максимизации внедрения и коммерческого использования.
- Лицензия Apache 2.0: Дружественная лицензия с явными патентными правами и прекращением оборонительных прав, обеспечивая ясность патентных прав.
- Лицензии BSD: Аналогично MIT, с трехпунктовой лицензией BSD, вводящей ограничения на использование имен для защиты товарных знаков.
Надежные лицензии copyleft:
- GPL версии 2 и версии 3: Требовать, чтобы производные работы были лицензированы GPL и распространяли исходный код с двоичными файлами; GPL версии 3 добавляет защиту патентов и улучшения международной совместимости.
- AGPL: Расширяет GPL версии 3 с положением о использовании сети, требующего раскрытия исходного кода для предложений SaaS.
Слабые лицензии copyleft:
- LGPL: Позволяет связывание библиотек в проприетарных приложениях, требуя, чтобы изменения самой библиотеки имели открытый исходный код.
- MPL 2.0: Предоставляет копирование на уровне файла, требуя раскрытия источника только для файлов с лицензией MPL, а не собственный код в том же приложении.
Совместимость лицензий:
- Совместимые сочетания: MIT + Apache 2.0, MIT + GPL v3, Apache 2.0 + GPL v3, LGPL + GPL.
- Несовместимые сочетания: GPL версии 2 + Apache 2.0, GPL + Proprietary, разные лицензии copyleft в сочетании.
Последствия лицензии и оценки рисков
Вы узнали, как оценить риски лицензии и реализовать соответствие требованиям:
Платформа риска лицензий:
- Низкий риск (зеленый): Все доступные лицензии, такие как MIT, BSD, Apache 2.0, безопасны для любого коммерческого использования.
- Средний риск (желтый): Слабые лицензии copyleft, такие как LGPL, MPL позволяют использовать собственные возможности с ограничениями на изменения.
- Высокий риск (красный): Надежные лицензии copyleft, такие как GPL, AGPL несовместимы с частным распространением программного обеспечения.
- Неизвестный риск (оранжевый): Для использования пользовательских или неясных лицензий требуется юридическая проверка.
Последствия для коммерческого программного обеспечения:
- Разрешительные лицензии: разрешают частное распространение с только требованиями атрибуции.
- Слабое копyleft: разрешает использовать библиотеки в собственных приложениях, но требует открытого исходного кода для изменений в библиотеках.
- Сильная копилефт: Требовать открытого лицензирования производных работ, что делает их несовместимыми с проприетарным программным обеспечением.
Рекомендации по интеллектуальной собственности:
- Защита закрытой интеллектуальной собственности (ИС): Разрешительные лицензии сохраняют закрытый код; лицензии copyleft требуют раскрытия исходного кода.
- Положения о патентах: Apache 2.0 и GPL версии 3 предусматривают явные патентные лицензии, в то время как MIT/BSD недостаточно ясности в отношении патентных условий.
- Потеря торгового секрета: Раскрытие исходного кода устраняет защиту секретов торговли.
Реализация соответствия требованиям:
- Инвентаризация зависимостей: Обеспечение комплексного счета за материалы для отслеживания всех компонентов и версий с открытым исходным кодом.
- Проверка совместимости лицензий: Используйте автоматизированные средства для выявления несовместимости лицензий.
- Соответствие атрибуции: Генерация лицензионных агрегированных файлов, их включение в диалоговые окна "О программе" и поддержка в документации.
- Подготовка исходного кода: Для лицензий copyleft укажите полный исходный код с инструкциями по сборке.
Безопасность цепочки поставок программного обеспечения:
- Сканирование уязвимостей: Непрерывно сканировать зависимости для известных уязвимостей с помощью таких средств, как Snyk, Dependabot или WhiteSource.
- Устранение рисков атак цепочки поставок: Проверьте подписи пакетов, предпочитайте надежные источники, используйте частные реестры и закрепляйте версии зависимостей.
- Оценка качества: Оцените состояние обслуживания, размер сообщества, качество документации и методики безопасности.
Политики организации:
- Рабочие процессы утверждения: Перед внедрением новых зависимостей реализуйте предварительную оценку безопасности, лицензирования и качества.
- Утвержденные списки пакетов: Поддерживайте проверенные списки предварительно проверенных компонентов, которые разработчики могут использовать немедленно.
- Обучение разработчиков: Обучать разработчиков о последствиях лицензий, методиках безопасности и процессах соответствия требованиям.
- Непрерывный мониторинг: Отслеживайте обновления зависимостей, изменения лицензии и раскрытие уязвимостей.
Основные выводы
При реализации программного обеспечения с открытым исходным кодом в организации помните следующие основные принципы:
Стратегически обнимайте открытый исходный код: Открытый источник предоставляет огромные преимущества, включая скорость разработки, качество, экономию затрат и доступ к инновациям. Вместо того, чтобы избежать открытого источника из-за рисков, реализуйте процессы управления, которые обеспечивают безопасное внедрение.
Ознакомься с зависимостями: Обеспечение комплексного инвентаризации всех компонентов с открытым исходным кодом, включая транзитивные зависимости. Вы не можете управлять рисками, о которые вы не знаете, что делает видимость зависимостей основой для эффективного управления открытым исходным кодом.
Общие сведения о последствиях лицензии: Разные лицензии имеют резко разные последствия для коммерческого программного обеспечения. Лицензии с разрешительным характером, такие как MIT, безопасны для проприетарного программного обеспечения; копилефт-лицензии, такие как GPL, требуют открытия исходного кода производных работ. Сопоставление выбора лицензий с бизнес-моделью.
Оценка совместимости лицензий: Убедитесь, что лицензии разных компонентов могут быть юридически объединены. Несовместимые лицензии могут создавать юридические проблемы, требующие дорогостоящих исправлений, включая замену компонентов или перезаписи кода.
Реализуйте автоматизированное соответствие: Отслеживание лицензий вручную не масштабируется до современных приложений с сотнями зависимостей. Используйте автоматизированные средства для проверки зависимостей, обнаружения лицензий и мониторинга уязвимостей.
Приоритет безопасности: Уязвимости безопасности в зависимостях влияют на приложение независимо от того, где они происходят. Реализуйте непрерывную проверку уязвимостей и устанавливайте процессы быстрого обновления для критически важных исправлений безопасности.
Управление рисками цепочки поставок: Помимо известных уязвимостей, защита от атак цепочки поставок путем проверки пакета, оценки репутации источника, частных реестров и закрепления зависимостей.
Баланс контроля с свободой: Разработчикам нужна свобода использования современных инструментов и платформ. Вместо того чтобы блокировать внедрение с открытым кодом, реализуйте рабочие процессы утверждения и утвержденные списки пакетов, которые обеспечивают безопасное использование.
Обучите свою команду: Важно осведомленность разработчика о лицензировании и безопасности. Учебные программы помогают разработчикам принимать правильные решения о выборе компонентов и понимать политики организации.
Непрерывно отслеживайте: Управление с открытым исходным кодом не является однократным действием. Новые уязвимости постоянно раскрываются, лицензии иногда изменяются, а проекты могут быть закрыты. Непрерывный мониторинг обеспечивает постоянное соответствие требованиям и безопасность.
Применяя эти принципы и реализуя систематические методики управления открытым кодом, вы позволяете вашей организации использовать огромные преимущества программного обеспечения с открытым кодом, эффективно управляя безопасностью, юридическими и операционными рисками.
Подробнее
- Развертывание приложений с открытым кодом с помощью бесплатной учетной записи | Microsoft Azure.
- Программа с открытым исходным кодом Майкрософт | Microsoft Open Source.
- Инициатива с открытым кодом — определение открытого кода.
- Выберите лицензию с открытым исходным кодом.
- Граф зависимостей GitHub.
- Проверка зависимостей OWASP.