Безопасность в Managed Service for GitLab
Обнаружение уязвимостей в CI/CD
Managed Service for GitLab предоставляет защиту вашего пайплайна встроенными в GitLab средствами.
Набор средств зависит от типа лицензии GitLab
Полный список средств защиты пайплайна в зависимости от типа лицензии приведен в таблице:
| Средства защиты пайплайна | Free | Premium | Ultimate |
|---|---|---|---|
| API Fuzzing |
|||
| Cluster Image Scanning |
|||
| Container Scanning |
|||
| Dependency Scanning |
|||
| Dynamic Application Security Testing (DAST) |
|||
| License Compliance |
|||
| Secret Detection |
|||
| Security Dashboard |
|||
| Static Application Security Testing (SAST) |
С развитием Managed Service for GitLab список средств защиты может меняться.
Использование примеров безопасности пайплайна
Доступны следующие варианты использования пайплайна в ваших проектах:
- Создайте пайплайн в отдельном проекте и подключите его к другим проектам с помощью функции
include . Доступно для всех типов лицензий. - Используйте механизм
Compliance framework and pipeline — он будет выполняться в любом проекте группы. Механизм доступен для типа лицензииUltimate. - Скопируйте секции пайплайна в файл
.gitlab-ci.ymlваших проектов.
Дополнительные материалы
Изучите примеры безопасности пайплайна, подготовленные в рамках Yandex Cloud Security Solution Library
- Обнаружение уязвимостей в CI/CD (тип лицензии
Ultimate) . - Обнаружение уязвимостей в CI/CD (тип лицензии
Free) .
Рекомендации по настройке безопасности инстанса GitLab
Совет
Перед настройкой инстанса изучите общие рекомендации по безопасности GitLab
Используйте эти наборы рекомендаций для обеспечения безопасности вашего инстанса GitLab:
- Для аудита и анализа событий безопасности настройте экспорт логов аудита
в стороннюю систему анализа событий, например, Splunk . - Подписывайте коммиты с помощью GPG-ключа
. - Организуйте
approveизменений в коде как минимум двумя сотрудниками — это поможет снизить количество ошибок. - Для предотвращения отказа обслуживания используйте ограничения
User and IP rate limits .
Работа с Docker изнутри GitLab
- Изучите лучшие практики по безопасной работе с образами Docker
. - Работайте с Docker в режиме
non-privileged . Используйте настройкиcap_addиcap_dropдля более тонкой настройки привилегий контейнеров. - Для безопасной сборки контейнеров используйте утилиту kaniko
. - Не используйте
Shell executor,Docker-in-DockerиDocker socket binding— это дает доступ кDocker socketиprivileged mode. Подробнее см. в статье Securing GitLab CI pipelines with Sysbox .
Примеры использования
Интеграция с Yandex Managed Service for Kubernetes
- Для безопасной интеграции используйте GitLab Agent for Kubernetes
. - Чтобы исключить использование сервисных аккаунтов с ролью
cluster-adminи открытия API Kubernetes в интернет, не используйте certificate-based интеграцию . - Чтобы исключить связанность агента GitLab Runner и Kubernetes, используйте развертывание с помощью CI/CD tunnel
.
Примеры использования
Использование переменных
- Для ограничения доступа к переменным используйте настройку
Protect variable . - Для маскирования переменных в логах используйте настройку
Mask variable . - Не храните секреты (ключи, пароли, API-токены и т. д.) в коде. Для поиска секретов в коде используйте инструмент Secret Scanning
.
Разграничение доступа
- Выдавайте доступ к вашим проектам ограниченному количеству сотрудников. Предоставляйте сотрудникам только минимально необходимые права.
- Настраивайте доступ к проектам с помощью механизма групп GitLab
. - Ограничьте подключения к проектам только с конкретных IP-адресов, а также включите двухфакторную аутентификацию. Для этого перейдите во вкладку Settings → General → Permissions, LFS, 2FA в свойствах нужной группы.
- Чтобы предоставить доступ к проектам пользователям вашей организации, настройте SAML SSO
. - По возможности заблокируйте использование
fork.
Безопасная конфигурация агента GitLab Runner
- Используйте наиболее изолированные и безопасные управляющие программы
DockerиKubernetes . Не рекомендуется использовать устаревшийShell executor. - Чтобы ограничить сетевой доступ к агенту GitLab Runner, используйте группы безопасности.
- Используйте безопасный механизм назначения сервисных аккаунтов виртуальной машине для взаимодействия с облачным API внутри заданий. Такой способ более безопасен, чем указание учетных данных через
env.