Обзор
Travis CI – это критически важный сервис, используемый во многих современных конвейерах CI/CD.
Он используется для автоматизации тестирования и развертывания, что позволяет разработчикам развертывать системы быстрее, чем раньше.
Однако Travis должен получить полный доступ к репозиториям кода, и чаще всего ему предоставляются токены доступа к AWS или другому облаку, чтобы код мог быть выгружен в его среду.
Из-за этого Travis может легко стать слабым местом в системе безопасности, если не настроить его должным образом.
🦊 Современное состояние безопасности CI/CD и как предотвратить распространенные ошибки
Защита учетных данных
Может показаться заманчивым хранить токены доступа и секретные токены в директиве .travis.yml ‘deploy’, но в этом случае облачные учетные данные будут открыты любому, кто имеет доступ к исходному коду.
Чтобы смягчить эту проблему, Travis позволяет шифровать секретные ключи с помощью закрытого ключа, хранящегося в Travis.
Travis генерирует приватный ключ, уникальный для каждого репозитория, что позволяет пользователям шифровать маркеры доступа, действительные только для этого репозитория.
Ключи не могут быть использованы для доступа к облачной инфраструктуре и не могут быть использованы с другими репозиториями для развертывания кода.
Ниже приведен пример, в котором мы шифруем наш секретный токен AWS, чтобы Travis мог развернуть код на Elastic Beanstalk после тестирования:
Установка Travis cli
Авторизуйтесь с помощью учетных данных Github (они отправляются только в Github).
Смените каталог на локальный клон вашего Git-репо и используйте ‘travis pubkey’, чтобы подтвердить, что Travis может получить доступ к открытому ключу репо.
Зашифруйте свой секретный токен доступа (Travis будет использовать открытый ключ, указанный выше).
Поместите зашифрованный токен в файл .travis.yml под директивой ‘deploy’.
deploy:
provider: elasticbeanstalk
access_key_id: AKXRJXRNXDEXQASXHOXA
secret_access_key: secure: CsptKIYpdGKS0d6FBrDmya40E9QA0waRfA0AxsvARSplYYuZkSj45jBFPY [...]
- Если секретные токены уже были закоммичены в репозиториях, ключи следует немедленно удалить и создать заново. Если на Github были закоммичены ключи в открытом виде, их следует считать скомпрометированными.
- Используемые секретные токены должны иметь минимальные права и политики для вашего окружения, не используйте токены root.
- Хорошей практикой является регулярная генерация новых токенов.
см. также:
- ✔️ ggshield: Обнаружение секретов в исходном коде, сканирование репозитория на предмет утечек
- 🕵️ Njsscan : Семантический инструмент SAST, который может находить небезопасные паттерны кода в приложениях Node.js
- 🐳 dockle: линтер + проверка образов на безопасность
- 🐳 Обзор сканеров безопасности контейнеров для поиска уязвимостей
- 🐜 Anteater – CI/CD Шлюз проверки безопасности