Skip to content

DevSecOps, ASPM, Vulnerability Management. All on one platform.

License

Notifications You must be signed in to change notification settings

usd877/DevSecOps

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11,586 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Безопасный CI/CD Пайплайн для Open-Source Проекта с использованием Django-DefectDojo

Описание

Этот репозиторий содержит проект с настройкой безопасного CI/CD пайплайна для веб-приложения с использованием Django-DefectDojo и других инструментов для анализа безопасности кода и конфигурации. Цель пайплайна — интегрировать тесты безопасности в процессе разработки и доставки кода, чтобы минимизировать риски уязвимостей.

Процесс включает в себя использование инструментов для статического и динамического анализа, проверки секретов, проверок конфигураций и механизма блокировки релиза при нахождении критических уязвимостей.

Цели проекта

  • Настроить безопасный пайплайн CI/CD для проекта.
  • Интегрировать инструменты для поиска уязвимостей на всех этапах разработки.
  • Использовать инструменты как для статического (SAST), так и для динамического анализа (DAST).
  • Блокировать релизы с критическими уязвимостями.
  • Автоматически проверять секреты в репозитории и конфигурационные файлы.

Этапы Настройки Пайплайна

1. CI/CD Пайплайн (GitHub Actions)

Цель: Автоматическая сборка и доставка программного обеспечения с помощью GitHub Actions.

  • Репозиторий настроен так, чтобы запускать пайплайн на каждом пуше в ветку main и при создании pull request.
  • Workflow включает установку зависимостей, выполнение тестов, проверку на уязвимости и успешную доставку кода.

Пример конфигурации GitHub Actions:

name: CI Pipeline

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v2
      - name: Set up Python
        uses: actions/setup-python@v2
        with:
          python-version: '3.8'
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt
      - name: Run tests
        run: |
          pytest tests/

2. Статический Анализ Кода (SAST) с Bandit

Цель: Проверка Python-кода на наличие уязвимостей с помощью инструмента Bandit.

  • Используется для поиска проблем безопасности в исходном коде проекта.
  • Результаты анализа отображаются в отчёте и могут быть интегрированы в Pull Request.

Пример конфигурации для Bandit в GitHub Actions:

- name: Run static analysis (Bandit)
  run: |
    pip install bandit
    bandit -r .

3. Динамический Анализ Приложения (DAST) с OWASP ZAP

Цель: Динамическое сканирование веб-приложения для выявления уязвимостей.

  • OWASP ZAP используется для сканирования веб-приложений.
  • Запуск сканирования производится в Docker контейнере, сканируя URL, указывающий на развернутую версию приложения.

Пример конфигурации для OWASP ZAP в GitHub Actions:

- name: Run dynamic analysis (OWASP ZAP)
  run: |
    docker run -t owasp/zap2docker-stable zap-full-scan.py -t http://your-vps-ip/

4. Проверка на Секреты и Конфигурации

Цель: Проверка репозитория на наличие секретов и уязвимостей в Docker-конфигурациях.

  • TruffleHog используется для поиска секретных ключей и токенов в репозитории.
  • Hadolint используется для проверки Dockerfile и других конфигурационных файлов на уязвимости.

Пример конфигурации для TruffleHog и Hadolint:

- name: Run secret scanning (TruffleHog)
  run: |
    pip install truffleHog
    trufflehog --json . > trufflehog-results.json

- name: Run Hadolint for Dockerfile
  run: |
    curl -s https://raw.githubusercontent.com/hadolint/hadolint/master/hadolint-linux-amd64 -o /usr/local/bin/hadolint
    chmod +x /usr/local/bin/hadolint
    hadolint Dockerfile

5. Блокировка Релиза при Критических Уязвимостях

Цель: Остановка релиза, если на этапе статического или динамического тестирования обнаружены серьёзные уязвимости.

  • При обнаружении критических уязвимостей на любом из этапов, релиз автоматически блокируется с помощью механизма GitHub Actions.

Пример конфигурации для блокировки релиза:

- name: Stop release if critical vulnerabilities found
  if: failure()
  run: |
    echo "Critical vulnerabilities found, stopping release!"
    exit 1

Используемые Инструменты

  1. Bandit — Статический анализатор безопасности для Python, который помогает находить уязвимости в исходном коде.
  2. OWASP ZAP — Инструмент для динамического тестирования веб-приложений на наличие уязвимостей.
  3. TruffleHog — Поиск секретов (например, API ключей) в репозиториях.
  4. Hadolint — Статический анализатор Dockerfile для выявления потенциальных проблем в конфигурации контейнеров.
  5. GitHub Actions — Платформа для CI/CD, которая автоматически выполняет различные задачи, такие как сборка, тестирование и проверка кода.

Как настроить и использовать

  1. Клонируйте репозиторий:

    git clone https://github.com/ваш_репозиторий.git
    cd ваш_репозиторий
  2. Настройка зависимостей: В проекте используется виртуальное окружение для управления зависимостями. Вы можете создать и активировать виртуальное окружение с помощью следующих команд:

    python3 -m venv venv
    source venv/bin/activate  # Для Linux/macOS
    venv\Scripts\activate  # Для Windows

    Установите все зависимости:

    pip install -r requirements.txt
  3. Запуск тестов и анализа безопасности: Чтобы вручную запустить анализаторы безопасности, используйте команды:

    • Статический анализ (Bandit):

      bandit -r .
    • Динамическое тестирование (OWASP ZAP): Для этого нужно запустить контейнер ZAP, указав URL вашего веб-приложения.


Заключение

Этот репозиторий представляет собой пример интеграции инструментов безопасности в процесс CI/CD для открытых проектов. Пайплайн настроен для автоматического выявления уязвимостей на разных этапах разработки и развертывания, что повышает безопасность всего процесса.

About

DevSecOps, ASPM, Vulnerability Management. All on one platform.

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • HTML 54.3%
  • Python 34.8%
  • JavaScript 10.1%
  • Smarty 0.4%
  • Shell 0.2%
  • CSS 0.2%