Введение
DevSecOps — это не просто модный термин, а необходимость в современной разработке. Интеграция безопасности на каждом этапе CI/CD позволяет находить уязвимости до того, как они попадут в продакшн. Но как автоматизировать рутинные задачи аудита, сканирования и настройки политик? Ответ — промты для генеративных AI-моделей. Эта подборка из 15 промтов охватывает все ключевые области: SAST, DAST, управление секретами, анализ конфигураций, политики доступа и реагирование на инциденты. Каждый промт снабжён примером использования, чтобы вы могли сразу применить его в работе.
1. Статический анализ кода (SAST) на основе OWASP Top 10
Задача: Найти потенциальные уязвимости в исходном коде на Python, следуя рекомендациям OWASP.
Промт:
Вы — senior security engineer. Проведи статический анализ следующего Python-кода на предмет уязвимостей из OWASP Top 10 (2021). Особое внимание удели SQL-инъекциям (A03), XSS (A07) и insecure deserialization (A08). Верни список найденных проблем с указанием строки кода, типа уязвимости и рекомендацией по исправлению. Код:
[вставьте код]
Пример результата:
Строка 15: SQL-инъекция (A03). Используется конкатенация строк в запросе. Рекомендация: перейти на параметризованные запросы (cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,))).
2. Динамическое сканирование (DAST) endpoint’ов API
Задача: Сгенерировать тестовые запросы для проверки API на распространённые атаки (XSS, CSRF, path traversal).
Промт:
Ты — пентестер. Разработай набор из 10 curl-запросов для тестирования REST API на уязвимости: XSS в параметрах, CSRF без токенов, path traversal в URL. Эндпоинт: POST /api/v1/users. Пример легитимного тела: {"name":"test","email":"a@b.com"}. Укажи ожидаемый HTTP-статус для каждой атаки.
Пример результата:
# XSS через поле name
curl -X POST /api/v1/users -d '{"name":"<script>alert(1)</script>","email":"a@b.com"}'
Ожидаемый статус: 400 (отклонение опасных символов).
3. Анализ политик IAM в AWS
Задача: Найти чрезмерно разрешительные политики IAM.
Промт:
Ты — cloud security architect. Проанализируй следующую политику IAM (JSON) и укажи, какие действия нарушают принцип наименьших привилегий. Предложи исправленную версию политики.
[вставьте политику]
Пример результата:
Проблема: "Effect":"Allow", "Action":"*" — полный доступ ко всем сервисам. Рекомендация: заменить * на конкретные действия, например ec2:DescribeInstances, s3:GetObject.
4. Поиск секретов в репозитории
Задача: Обнаружить случайно закоммиченные ключи, токены и пароли.
Промт:
Ты — DevSecOps-инженер. Напиши регулярные выражения для поиска следующих секретов: AWS Access Key (AKIA...), GitHub Personal Access Token (ghp_), пароли вида "password: ...". Представь результат в виде Bash-команды с grep для рекурсивного поиска по папке src.
Пример результата:
grep -rnE '(AKIA[0-9A-Z]{16}
|ghp_[0-9a-zA-Z]{36}|password[[:space:]]*:[[:space:]]*[^[:space:]]+)' src/
5. Настройка NetworkPolicy в Kubernetes
Задача: Создать политику, разрешающую трафик только от определённых подов.
Промт:
Ты — DevOps с фокусом на безопасность. Напиши манифест NetworkPolicy для namespace production, которая разрешает входящий трафик к подам с меткой app: api только от подов с меткой app: frontend. Запрети весь остальной входящий трафик.
Пример результата:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-frontend
namespace: production
spec:
podSelector:
matchLabels:
app: api
ingress:
- from:
- podSelector:
matchLabels:
app: frontend
6. Аудит Dockerfile на best practices
Задача: Проверить Dockerfile на уязвимости и неэффективные слои.
Промт:
Ты — security reviewer. Найди нарушения лучших практик Docker в следующем Dockerfile: использование root, установка необновлённых пакетов, многослойность. Предложи исправленный Dockerfile и обоснуй изменения.
Пример результата:
Проблема: USER root. Рекомендация: добавить RUN addgroup -S appgroup && adduser -S appuser -G appgroup, затем USER appuser.
7. Анализ логов SIEM на инциденты
Задача: Выявить подозрительную активность в логах аутентификации.
Промт:
Ты — SOC analyst. Проанализируй следующие логи SSH-входов (формат: timestamp, user, IP, status). Найди аномалии: множественные неудачные попытки, входы в нерабочее время, доступ с неизвестных IP. Выведи сводку с рекомендациями.
Пример результата:
Обнаружено 50 неудачных попыток с IP 203.0.113.42 за 2 минуты — возможна brute-force атака. Рекомендация: заблокировать IP на уровне фаервола.
8. Формирование политики управления секретами
Задача: Создать политику использования HashiCorp Vault.
Промт:
Ты — security architect. Напиши политику Vault (HCL) для команды разработки: доступ на чтение к secret/dev/*, только по TLS, с TTL токена 24 часа. Добавь требование обязательной ротации секретов каждые 7 дней.
Пример результата:
path "secret/dev/*" {
capabilities = ["read", "list"]
}
9. SAST для JavaScript (React) – XSS
Задача: Выявить опасные конструкции dangerouslySetInnerHTML.
Промт:
Ты — security auditor. Проанализируй React-компонент на наличие XSS-уязвимостей. Найди использование dangerouslySetInnerHTML и предложи безопасную альтернативу через экранирование. Пример кода:
[вставьте код]
Пример результата:
Строка 12: <div dangerouslySetInnerHTML={{__html: userInput}} />. Рекомендация: вместо этого используйте библиотеку DOMPurify для санитизации HTML.
10. Сканирование зависимостей на уязвимости (SCA)
Задача: Проверить package.json на пакеты с известными CVE.
Промт:
Ты — dependency checker. Напиши команду для npm audit в формате отчёта, которая покажет только критичные уязвимости, сгруппированные по пакету. Выведи рекомендации по обновлению.
Пример результата:
npm audit --audit-level=critical --json
| jq '.vulnerabilities | to_entries[] | select(.value.severity=="critical") | {(.key): .value.range}'
11. Настройка RBAC в Kubernetes
Задача: Создать роль с минимальными правами для CI/CD-агента.
Промт:
Ты — cluster admin. Создай ClusterRole, которая позволяет Jenkins-агенту только просматривать поды (get, list) и применять деплойменты (create, update). Запрети доступ к секретам.
Пример результата:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: jenkins-agent
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list"]
- apiGroups: ["apps"]
resources: ["deployments"]
verbs: ["create", "update"]
12. Генерация сертификатов для mTLS (DevSecOps pipeline)
Задача: Создать корневой и клиентский сертификаты с помощью openssl.
Промт:
Ты — DevSecOps-инженер. Напиши последовательность команд openssl для генерации корневого CA, подписи сертификата сервера и клиента. Укажи рекомендуемые параметры (ключ 2048 бит, SHA256, срок 365 дней).
Пример результата:
openssl genrsa -out ca.key 2048
openssl req -x509 -new -nodes -key ca.key -sha256 -days 365 -out ca.crt
openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365 -sha256
13. Анализ Terraform на misconfiguration
Задача: Найти открытые security group в AWS.
Промт:
Ты — cloud security engineer. Проанализируй Terraform-код, создающий security group, на предмет правил, разрешающих доступ 0.0.0.0/0 к портам 22, 3306, 5432. Предложи исправление с ограничением IP.
Пример результата:
resource "aws_security_group" "allow_ssh" {
ingress {
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["203.0.113.0/24"] # вместо 0.0.0.0/0
}
}
14. Создание политики backup и disaster recovery
Задача: Разработать политику резервного копирования секретов Vault.
Промт:
Ты — DevSecOps-архитектор. Опиши процедуру резервного копирования и восстановления HashiCorp Vault с использованием raft snapshot. Включи шаги: создание снапшота, шифрование, хранение в S3 с версионированием, автоматическое восстановление при сбое.
Пример результата:
# Снапшот
vault operator raft snapshot save vault.snap
gpg --symmetric vault.snap
aws s3 cp vault.snap.gpg s3://my-vault-backups/
# Восстановление
aws s3 cp s3://my-vault-backups/vault.snap.gpg .
gpg --decrypt vault.snap.gpg > vault.snap
vault operator raft snapshot restore vault.snap
15. Автоматизация ответа на инцидент (IR) с помощью AI
Задача: Сгенерировать playbook для реагирования на утечку секретов.
Промт:
Ты — incident responder. Составь пошаговый playbook для реагирования на обнаружение AWS Access Key в публичном репозитории. Включи: немедленная ротация ключа, проверка CloudTrail на несанкционированные действия, уведомление команды, добавление pre-commit hook для предотвращения повторения.
Пример результата:
1. Отозвать ключ через IAM: aws iam update-access-key --access-key-id AKIA... --status Inactive
2. Создать новый ключ и обновить CI/CD.
3. С помощью CloudTrail найти вызовы за последние 24 часа.
4. Добавить .gitleaks в репозиторий.
Заключение
Представленные 15 промтов покрывают основные этапы DevSecOps: от анализа кода до реагирования на инциденты. Используйте их как основу для создания собственных скриптов и автоматизаций. Помните, что безопасность — это процесс, а не единоразовое действие. Регулярно обновляйте промты с учётом новых угроз (OWASP, CWE). Если вы хотите углубить знания по DevSecOps, следите за новыми материалами в блоге Asibiont и экспериментируйте с этими промтами в своих проектах.
Комментарии