Skip to main content

Рекомендации по обеспечению безопасности системы сборки

Руководство по защите конечного этапа цепочки поставок — систем, используемых для создания и распространения артефактов.

Об этом руководстве

В этом руководстве описываются самые важные изменения, которые можно внести для улучшения защиты вашей системы сборки. В каждом разделе описаны изменения, которые можно внести в процессы для повышения безопасности. Сначала указаны изменения с самым высоким влиянием.

В чем заключаются риски?

Некоторые атаки на цепочки поставок программного обеспечения направлены непосредственно на систему сборки. Если злоумышленник сможет изменить процесс сборки, то сможет использовать систему, не прилагая никаких усилий для взлома личных учетных записей или кода. Важно, чтобы вы не забывали защитить систему сборки, как и личные учетные записи и код.

Защита системы сборки

Существует несколько возможностей обеспечения безопасности, которые должна иметь система сборки.

  1. Шаги сборки должны быть понятными и воспроизводимыми.

  2. Вы должны точно знать, что выполнялось во время процесса сборки.

  3. Каждая сборка должна начинаться в новой среде, чтобы взломанная сборка не сохранялась и не могла повлиять на будущие сборки.

           GitHub Actions может помочь вам достичь этих возможностей. Инструкции по сборке хранятся в репозитории вместе с кодом. Вы выбираете среду, в которой выполняется сборка, включая Windows, Mac, Linux или средства выполнения, размещенные вами. Каждая сборка начинается с нового образа средства выполнения тестов, что затрудняет сохранение атаки в вашей среде сборки.
    

Помимо преимуществ безопасности, GitHub Actions можно запускать сборки вручную, периодически или на git-событиях в вашем репозитории для частых и быстрых сборок.

          GitHub Actions это большая тема, но хорошее место для начала — [AUTOTITLE](/actions/learn-github-actions/understanding-github-actions), а также [AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#choosing-github-hosted-runners), и [AUTOTITLE](/actions/using-workflows/triggering-a-workflow).

Подписывание сборок

После того как процесс сборки будет защищен, вам следует предотвратить незаконное изменение конечного результата процесса сборки. Подписывание ваших сборок — отличный способ сделать это. При публичном распространении программного обеспечения это часто делается с помощью пары открытого и закрытого криптографических ключей. Вы используете закрытый ключ для подписи сборки и публикуете открытый ключ, чтобы пользователи программного обеспечения могли проверить подпись в сборке до его использования. Если байты сборки изменятся, подпись не пройдет проверку.

Как именно вы подписываете сборку, зависит от того, какой код вы пишете, и от того, кто ваши пользователи. Часто сложно понять, как безопасно хранить закрытый ключ. Один из базовых вариантов — использовать GitHub Actions зашифрованные секреты, хотя нужно быть осторожным, чтобы ограничить доступ к этим GitHub Actions рабочим процессам. Если ваш приватный ключ доступен только через частную сеть, другой вариант — использовать самостоятельные раннеры для GitHub Actions.

Для получения дополнительной информации см. Использование секретов в GitHub Actions, и Локальные средства выполнения тестов.

Использование неизменяемых выпусков

Если вы используете ресурсы выпуска из других проектов в системе сборки или создаете выпуски для собственной работы, следует снизить риск безопасности, гарантируя, что эти выпуски неизменяемы, то есть они не могут быть изменены после публикации. Неизменяемые выпуски помогают предотвратить атаки цепочки поставок и случайные критические изменения. Дополнительные сведения см. в разделе Неизменяемые выпуски.

Ужесточить безопасность для GitHub Actions

Существует множество дополнительных шагов, которые вы можете предпринять для дополнительной безопасности GitHub Actions. В частности, будьте осторожны при оценке сторонних рабочих процессов и рассмотрите возможность использования CODEOWNERS, чтобы ограничить пользователей, которые могут вносить изменения в рабочие процессы.

Дополнительные сведения см. в разделе [AUTOTITLE и Справочник по безопасному использованию](/actions/security-guides/using-githubs-security-features-to-secure-your-use-of-github-actions).

Дальнейшие шаги

  •         [AUTOTITLE](/code-security/supply-chain-security/end-to-end-supply-chain/end-to-end-supply-chain-overview)
    
  •         [AUTOTITLE](/code-security/supply-chain-security/end-to-end-supply-chain/securing-accounts)
    
  •         [AUTOTITLE](/code-security/supply-chain-security/end-to-end-supply-chain/securing-code)