Введение
DevSecOps — это не просто модный термин, а необходимость в современной разработке. По данным отчета State of DevOps 2025 от Puppet, организации, внедрившие практики безопасности на ранних этапах CI/CD, сокращают время устранения уязвимостей на 60%. Однако интеграция безопасности требует не только инструментов, но и правильного подхода к автоматизации. Промты для LLM (например, GPT-4 или Claude 3) помогают генерировать политики, писать скрипты для SAST/DAST и анализировать отчеты. В этой подборке — 10 проверенных промтов, которые я использую в своей работе. Каждый из них сопровождается примером результата и кодом.
Категория 1: Базовые промты для аудита кода
Промт 1: SAST-анализ уязвимостей в Python
Задача: Сканировать фрагмент кода на Python на наличие уязвимостей, таких как SQL-инъекции и небезопасная работа с файлами.
Промт: «Выступи в роли эксперта по безопасности. Проанализируй следующий код на Python и найди уязвимости: (вставь код). Для каждой уязвимости укажи: тип, строку кода, риск (Critical/High/Medium/Low) и рекомендацию по исправлению. Пример: SQL-инъекция в строке 12 — риск High — используй параметризованные запросы.»
Пример результата:
Уязвимость 1: SQL-инъекция
Строка: cursor.execute(f"SELECT * FROM users WHERE id = {user_id}")
Риск: High
Рекомендация: Замените f-строку на параметризованный запрос: cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,))
Промт 2: DAST-сканер веб-приложения
Задача: Создать скрипт для автоматического тестирования веб-приложения на уязвимости XSS и CSRF.
Промт: «Напиши Python-скрипт с использованием библиотеки requests для DAST-сканирования. Скрипт должен отправлять POST-запросы с XSS-пейлоадами на эндпоинты /search и /login, анализировать ответы на наличие отраженного XSS (например, проверять, что пейлоад не отображается в HTML). Добавь логирование результатов в файл scan_results.log.»
Пример результата:
import requests
import logging
logging.basicConfig(filename='scan_results.log', level=logging.INFO)
def scan_xss(url, payload):
data = {'query': payload}
response = requests.post(url, data=data)
if payload in response.text:
logging.warning(f"XSS found at {url}")
else:
logging.info(f"No XSS at {url}")
scan_xss('http://example.com/search', '<script>alert(1)</script>')
Промт 3: Аудит зависимостей
Задача: Проверить requirements.txt на уязвимые версии пакетов.
Промт: «Представь, что ты — инструмент для аудита зависимостей. Сравни список пакетов из requirements.txt с базой CVE (например, через API NVD). Для каждого пакета укажи: имя, версию, есть ли CVE (да/нет), уровень риска и ссылку на CVE. Пример вывода: Flask 2.0.1 — CVE-2023-1234 — High.»
Пример результата:
| Пакет | Версия | CVE | Риск | Ссылка |
|---|---|---|---|---|
| Flask | 2.0.1 | CVE-2023-1234 | High | https://nvd.nist.gov/vuln/detail/CVE-2023-1234 |
| Django | 3.2.0 | CVE-2023-5678 | Medium | https://nvd.nist.gov/vuln/detail/CVE-2023-5678 |
Категория 2: Продвинутые промты для политик доступа
Промт 4: Генерация IAM-политики для AWS
Задача: Создать минимальную политику для S3-бакета с ограничением доступа.
Промт: «Сгенерируй JSON-политику AWS IAM для роли разработчика. Условия: доступ только к бакету dev-bucket, разрешены операции GetObject и PutObject, запрещен DeleteObject. Используй Condition с IP-ограничением (диапазон 10.0.0.0/16).»
Пример результата:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:GetObject", "s3:PutObject"],
"Resource": "arn:aws:s3:::dev-bucket/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": "10.0.0.0/16"
}
}
},
{
"Effect": "Deny",
"Action": "s3:DeleteObject",
"Resource": "arn:aws:s3:::dev-bucket/*"
}
]
}
Промт 5: Анализ логов на инциденты
Задача: Написать запрос для поиска подозрительной активности в логах.
Промт: «Ты — аналитик SOC. Напиши Splunk-запрос для поиска неудачных попыток входа (status=403) за последние 24 часа, сгруппированных по IP-адресу. Выведи топ-10 IP с количеством попыток. Используй sourcetype=access_combined.»
Пример результата:
sourcetype=access_combined status=403 earliest=-24h
| stats count by clientip
| sort - count
| head 10
| table clientip count
Промт 6: Шаблон политики паролей
Задача: Разработать политику паролей для корпоративной сети.
Промт: «Создай политику паролей в формате Markdown. Требования: длина не менее 12 символов, обязательны заглавные, строчные, цифры и спецсимволы, срок действия 90 дней, история 5 паролей. Добавь примеры strong и weak паролей.»
Пример результата:
# Политика паролей
- Минимальная длина: 12 символов
- Обязательные элементы: A-Z, a-z, 0-9, !@#$%
- Срок действия: 90 дней
- История: 5 предыдущих паролей
- Пример strong: MyS3cur3P@ss!2026
- Пример weak: password123
Категория 3: Экспертные промты для автоматизации DevSecOps
Промт 7: Интеграция SAST в CI/CD
Задача: Настроить GitLab CI для запуска Bandit (Python-анализатор) при каждом коммите.
Промт: «Напиши .gitlab-ci.yml для стадии security. Используй образ bandit:latest, запусти сканирование всех .py файлов в репозитории, сохрани отчет в формате JSON. Если найдены уязвимости с риском High или Critical, заверши пайплайн с ошибкой.»
Пример результата:
security-stage:
stage: security
image: bandit:latest
script:
- bandit -r . -f json -o bandit_report.json
artifacts:
paths:
- bandit_report.json
when: always
rules:
- if: $CI_COMMIT_BRANCH == "main"
Промт 8: Шаблон политики безопасности для Kubernetes
Задача: Создать PodSecurityPolicy для запрета привилегированных контейнеров.
Промт: «Сгенерируй манифест Kubernetes PodSecurityPolicy для production-кластера. Запрети: privileged=true, hostNetwork, hostPID. Разреши: runAsUser=1000, readOnlyRootFilesystem=true. Добавь аннотации с описанием.»
Пример результата:
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
name: restricted-psp
annotations:
description: "Запрещает привилегированные контейнеры"
spec:
privileged: false
hostNetwork: false
hostPID: false
runAsUser:
rule: MustRunAs
ranges:
- min: 1000
max: 1000
readOnlyRootFilesystem: true
Промт 9: Сценарий реагирования на инцидент
Задача: Разработать пошаговый план для реагирования на утечку данных.
Промт: «Создай план реагирования на инцидент (IRP) для утечки данных. Включи этапы: идентификация, сдерживание, ликвидация, восстановление, извлечение уроков. Для каждого этапа укажи: действия, ответственные, сроки. Пример: Этап 1 — анализ логов (команда SOC, в течение 1 часа).»
Пример результата:
| Этап | Действия | Ответственный | Срок |
|---|---|---|---|
| Идентификация | Анализ логов, оповещение | SOC | 1 час |
| Сдерживание | Изоляция затронутых систем | DevOps | 2 часа |
| Ликвидация | Удаление вредоносного ПО | Security | 4 часа |
| Восстановление | Восстановление из бэкапов | DevOps | 8 часов |
| Извлечение уроков | Анализ причин, обновление политик | Все команды | 1 неделя |
Промт 10: Обучение команды безопасности
Задача: Создать краткий чек-лист для code review с фокусом на безопасность.
Промт: «Напиши чек-лист для code review на 10 пунктов. Включи: проверка на SQL-инъекции, XSS, небезопасное хранение паролей, использование HTTP вместо HTTPS, открытые API-ключи. Для каждого пункта укажи, как проверить (например, поиск pattern в коде).»
Пример результата:
1. Проверка SQL-инъекций: ищи f-строки в SQL-запросах.
2. Проверка XSS: убедись, что пользовательский ввод экранируется.
3. Хранение паролей: используй bcrypt, не храни в plaintext.
4. HTTPS: все эндпоинты должны быть защищены.
5. API-ключи: не должны быть в коде, используй переменные окружения.
Заключение
Эти 10 промтов покрывают ключевые аспекты DevSecOps: от сканирования кода до политик доступа и реагирования на инциденты. Помните, что промты — это лишь инструмент; важно адаптировать их под вашу инфраструктуру и регулярно обновлять. Начните с базового SAST-анализа, затем переходите к автоматизации в CI/CD. Если вы хотите углубиться в тему, рекомендую изучить официальную документацию OWASP и руководства по Security Champion. Делитесь своими промтами в комментариях — возможно, они попадут в следующую подборку!
Комментарии