GitHub запустил в публичном предпросмотре функцию License Compliance для клиентов GitHub Enterprise Cloud с лицензией GHAS Code Security. Инструмент помогает управлять лицензиями открытого кода в зависимостях и снижать юридические и операционные риски при разработке корпоративного ПО.
По данным GitHub, почти все программные продукты распространяются по лицензиям, которые задают условия использования кода. Нарушение этих условий может привести к дорогостоящим искам и ущербу для репутации, особенно при разработке корпоративных решений. Организации формируют собственные политики по допустимым лицензиям с учётом бизнес-модели и стратегии распространения продуктов.
Раньше проверки лицензий часто выполнялись вручную или с помощью сторонних решений. Теперь License Compliance доступен как часть GitHub Advanced Security и позволяет проверять новые зависимости прямо в pull request. Инструмент сверяет лицензии пакетов с политикой компании и, при необходимости, позволяет расширять список разрешённых лицензий или добавлять исключения для отдельных проектов.
Офис по работе с открытым кодом GitHub (Open Source Program Office, OSPO) два месяца назад перешёл с внутренних инструментов на новую функцию. Команда выступила ранним пользователем, дала обратную связь разработчикам и помогла адаптировать решение для крупных компаний с сложными требованиями по соответствию лицензиям.
У GitHub уже был сформирован список допустимых лицензий, который использовали как стартовую политику. В него входили распространённые разрешительные лицензии MIT, Apache 2.0 и BSD-3-Clause. На первом этапе License Compliance включили в режиме Evaluate на уровне правил для всей организации: инструмент добавлял аннотации в pull request, но не блокировал слияние. Это позволило разработчикам привыкнуть к новому процессу и параллельно сравнивать результаты старых и новых инструментов.
После примерно месяца такой работы большинство оповещений приходилось на пакеты с необычными, отсутствующими или явно запрещёнными лицензиями. Это подтвердило корректность настроек и готовность перейти к более строгому применению политики.
Технически проверки лицензий настраиваются через rulesets. Репозитории помечаются специальным свойством, которое определяет режим работы: Active или Evaluate. В выбранных репозиториях pull request, меняющие зависимости проекта, запускают сканирование. Система определяет лицензии новых пакетов и сравнивает их с политикой и уже настроенными исключениями. Если лицензии разрешены, проверка проходит успешно. При нарушениях по прямым или транзитивным зависимостям инструмент оставляет комментарий в pull request с предупреждениями по каждому проблемному пакету.
Разработчик изучает оповещения и решает, принимать ли зависимость. Если пакет не подходит, код обновляют или закрывают pull request. Если разработчик считает, что лицензию или пакет стоит разрешить, он отправляет запрос на исключение, и тогда специальная команда по лицензиям рассматривает, как скорректировать политику.
Команда по лицензиям GitHub включает участников OSPO и инженеров с опытом анализа лицензий и цепочек поставок ПО. Поскольку компания работает по всему миру, в команде есть сотрудники из разных часовых поясов, что ускоряет обработку запросов. В GitHub формализуют SLA на такие проверки, но, по их словам, на практике на первичную оценку уходит обычно не более нескольких часов.
Участники команды получают уведомления о новых запросах по электронной почте и используют внутреннюю панель для работы с очередью. При одобрении решения команда делает два шага: решает, разрешать лицензию или конкретный пакет, а затем определяет уровень действия — для всей организации или отдельного репозитория. Безопасные лицензии, которые раньше не встречались, добавляют на уровне компании. Коммерческие лицензии обычно разрешают только в репозиториях команд, оплативших использование соответствующего ПО.
Исключения для пакетов особенно полезны для внутреннего софта, у которого может не быть явных данных о лицензии. Инструмент поддерживает шаблоны с подстановочными символами. Например, GitHub разрешил все пакеты в пространстве имён @github-ui/* для React, чтобы не одобрять каждый пакет по отдельности.
Для экстренных ситуаций GitHub разработал процедуру связи с OSPO и механизм «break glass» — аварийное отключение проверки. Такие случаи должны быть редкими, но процесс важен для критических исправлений, которые блокируются из-за предупреждений по лицензиям. Поскольку соблюдение политики реализовано через ruleset и свойство репозитория, временное изменение значения свойства даёт возможность быстро отключить проверки. По словам команды, такой подход уже пригодился один раз и оказался полезным.
GitHub также подготовил внутреннюю документацию и обучающие материалы, чтобы объяснить разработчикам, почему соответствие лицензиям важно. Компания подчёркивает, что ответственность за соблюдение лицензионных требований лежит на всех участниках разработки, а задача OSPO — сделать этот процесс как можно проще.
В GitHub считают, что контроль лицензий — ключевой элемент управления цепочкой поставок ПО. Инструмент License Compliance помогает разработчикам принимать взвешенные решения по зависимостям в рамках политики компании, снижать риск дорогостоящих переработок кода и возможных юридических проблем. Функция несколько месяцев активно используется внутри GitHub, а теперь доступна другим компаниям в публичном предпросмотре.
GitHub Enterprise Cloud может включить License Compliance для репозиториев, в которых активна лицензия GHAS Code Security. Дополнительная информация доступна в документации GitHub по соблюдению лицензий открытого кода.
Источник: блог GitHub.






















