Безопасность кода и инфраструктуры перестала быть опцией — это обязательное условие для любого проекта, работающего с данными пользователей. DevSecOps-подход встраивает проверки безопасности прямо в конвейер CI/CD, но ручное написание политик и анализ логов отнимает часы. В 2026 году генеративные AI-модели способны автоматизировать до 70% рутинных задач безопасности — от генерации правил SAST до формулировки политик доступа. В этой статье я собрал 10 проверенных промтов, которые помогут вам быстрее проводить аудит, настраивать сканеры и писать политики. Каждый промт сопровождается примером результата и пояснением, как его адаптировать под ваш стек.
Категория 1: Базовые промты
Промт 1: Генерация политики доступа на основе ролей
Задача: Создать RBAC-политику для приложения на Kubernetes с тремя ролями: admin, developer, viewer.
Промт:
Напиши политику RBAC для Kubernetes с тремя ролями:
1. Admin — полный доступ ко всем ресурсам, включая namespace и secrets.
2. Developer — доступ к pod, deployment, service, configmap в namespace 'dev', запрет на secrets.
3. Viewer — только чтение всех ресурсов в namespace 'production'.
Используй синтаксис YAML, добавь пояснения для каждой роли.
Пример результата:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: dev
name: developer-role
rules:
- apiGroups: [""]
resources: ["pods", "services", "configmaps", "deployments"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: developer-binding
namespace: dev
subjects:
- kind: User
name: developer-user
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: developer-role
apiGroup: rbac.authorization.k8s.io
Пояснение: Промт чётко задаёт контекст (Kubernetes), роли и их права. Для production-среды можно расширить, добавив ограничения по времени доступа через OPA.
Промт 2: Шаблон политики доступа для AWS IAM
Задача: Создать политику IAM, которая разрешает чтение S3-бакетов только для определённого тега окружения.
Промт:
Создай политику AWS IAM, которая разрешает s3:GetObject и s3:ListBucket только для бакетов с тегом Environment=production. Запрети доступ к бакетам без тега. Используй условие 'StringEquals'.
Пример результата:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:GetObject", "s3:ListBucket"],
"Resource": "arn:aws:s3:::*",
"Condition": {
"StringEquals": {
"aws:ResourceTag/Environment": "production"
}
}
},
{
"Effect": "Deny",
"Action": ["s3:*"],
"Resource": "arn:aws:s3:::*",
"Condition": {
"Null": {
"aws:ResourceTag/Environment": "true"
}
}
}
]
}
Пояснение: Промт использует условие Null, что редко встречается в стандартных шаблонах, но критично для безопасности. AI корректно обработал логику запрета при отсутствии тега.
Категория 2: Продвинутые промты
Промт 3: Генерация правил для SAST-сканера (Semgrep)
Задача: Написать правило Semgrep для обнаружения инъекций SQL через f-строки в Python.
Промт:
Напиши правило для Semgrep (язык Python), которое находит уязвимости SQL-инъекций, когда строка запроса конкатенируется с пользовательским вводом через f-строку. Пример: cursor.execute(f"SELECT * FROM users WHERE id = {user_input}"). Исключи случаи, где используется параметризованный запрос.
Пример результата:
rules:
- id: sql-injection-fstring
patterns:
- pattern: |
$DB.execute(f"...$INPUT...")
- pattern-not: |
$DB.execute("...", $INPUT)
message: "SQL injection detected via f-string. Use parameterized queries."
languages: [python]
severity: ERROR
Пояснение: Промт явно указывает на исключение (pattern-not), что снижает ложные срабатывания. Правило можно расширить для разных БД (psycopg2, sqlite3).
Промт 4: Генерация Dockerfile с security-рекомендациями
Задача: Создать Dockerfile для Python-приложения, который минимизирует поверхность атаки.
Промт:
Напиши Dockerfile для Python 3.11 приложения, который следует принципам безопасности: используй 'python:3.11-slim', не запускай от root, установи зависимости в отдельном слое, отключи кэш pip, добавь HEALTHCHECK. Приложение слушает порт 8080.
Пример результата:
FROM python:3.11-slim AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt && rm -rf /root/.cache
FROM python:3.11-slim
RUN groupadd -r appuser && useradd -r -g appuser appuser
WORKDIR /app
COPY --from=builder /usr/local/lib/python3.11/site-packages /usr/local/lib/python3.11/site-packages
COPY . .
USER appuser
EXPOSE 8080
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
CMD python -c "import http.client; http.client.HTTPConnection('localhost', 8080).request('GET', '/health')" || exit 1
CMD ["python", "app.py"]
Пояснение: Многоступенчатая сборка и пользователь без прав root — стандарт безопасности. Промт можно дополнить сканированием слоёв через Trivy.
Промт 5: Анализ логов на предмет аномалий
Задача: Извлечь из логов NGINX подозрительные запросы (SQL-инъекции, XSS).
Промт:
Проанализируй следующий лог NGINX и найди запросы, похожие на SQL-инъекции или XSS. Выведи их с указанием IP и времени:
192.168.1.10 - - [05/Jul/2026:10:15:30 +0000] "GET /search?q=1' OR '1'='1 HTTP/1.1" 200 1234
192.168.1.11 - - [05/Jul/2026:10:16:00 +0000] "GET /profile?id=<script>alert(1)</script> HTTP/1.1" 404 0
192.168.1.12 - - [05/Jul/2026:10:17:00 +0000] "GET /index.html HTTP/1.1" 200 567
Пример результата:
- IP: 192.168.1.10, Время: 05/Jul/2026:10:15:30, Угроза: SQL-инъекция (1' OR '1'='1)
- IP: 192.168.1.11, Время: 05/Jul/2026:10:16:00, Угроза: XSS ()
Пояснение: Промт не требует сложных regex — AI сам распознаёт паттерны. Для реального лога добавьте больше контекста (User-Agent, referer).
Категория 3: Экспертные промты
Промт 6: Формулировка политик безопасности для OPA (Open Policy Agent)
Задача: Написать политику OPA, запрещающую деплой контейнеров с тегом latest.
Промт:
Напиши политику OPA (Rego) для Kubernetes, которая запрещает создание Pod, если в образе контейнера указан тег 'latest' или не указан тег вовсе. Допустимы только семантические версии вида 'v1.2.3'.
Пример результата:
package kubernetes.admission
violation[msg] {
container := input.request.object.spec.containers[_]
image := container.image
not regex.match("^[a-zA-Z0-9._-]+/.*:v?\\d+\\.\\d+\\.\\d+$", image)
msg := sprintf("Container '%v' uses invalid tag: %v", [container.name, image])
}
Пояснение: Регулярное выражение проверяет формат semver. Политику можно расширить на InitContainers и EphemeralContainers.
Промт 7: Генерация правил для DAST-сканера (OWASP ZAP)
Задача: Создать конфигурацию для автоматического сканирования API-эндпоинтов на OWASP Top 10.
Промт:
Создай конфигурацию для OWASP ZAP (формат JSON) для сканирования REST API по адресу https://api.example.com. Включи активное сканирование параметров, проверку на SQLi, XSS, CSRF. Исключи эндпоинт /health из сканирования. Задай контекст аутентификации через Bearer token.
Пример результата:
{
"context": {
"name": "API Scan",
"urls": ["https://api.example.com"],
"authentication": {
"method": "bearer",
"parameters": {
"token": "${ZAP_API_TOKEN}"
}
},
"excludePaths": ["/health"]
},
"scanners": {
"activeScan": {
"policy": "API-scan-profile",
"categories": ["sql-injection", "xss", "csrf"]
}
}
}
Пояснение: Промт использует переменные окружения для токена, что безопасно для CI/CD. ZAP поддерживает импорт OpenAPI-спецификации для более точного сканирования.
Промт 8: Написание политики безопасности для Terraform
Задача: Создать политику, которая запрещает создание S3-бакетов с публичным доступом.
Промт:
Напиши правило для Checkov (язык Python) или OPA, которое проверяет Terraform-код на наличие S3-бакетов с 'acl = "public-read"' или 'acl = "public-read-write"'. Выдай ошибку, если такие ресурсы найдены.
Пример результата (Checkov):
from checkov.common.models.enums import CheckResult
from checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck
class S3PublicACL(BaseResourceCheck):
def __init__(self):
name = "Ensure S3 bucket does not have public ACL"
id = "CKV_AWS_20"
supported_resources = ['aws_s3_bucket']
super().__init__(name=name, id=id, supported_resources=supported_resources)
def scan_resource_conf(self, conf):
if 'acl' in conf:
if conf['acl'] in ['public-read', 'public-read-write']:
return CheckResult.FAILED
return CheckResult.PASSED
check = S3PublicACL()
Пояснение: Checkov легко интегрируется в Terraform Cloud и локальные пайплайны. Промт можно адаптировать для проверки блокировки публичного доступа через block_public_acls.
Промт 9: Генерация отчёта об уязвимостях по результатам сканирования
Задача: Преобразовать сырой вывод Trivy в читаемый отчёт с приоритетами.
Промт:
Ниже — вывод Trivy для образа myapp:latest. Отфильтруй только уязвимости с Critical и High severity. Для каждой уязвимости укажи CVE, пакет, версию, описание и рекомендацию по исправлению. Сгруппируй по severity.
[сырой вывод Trivy в формате JSON или текстовом]
Пример результата:
| CVE | Severity | Пакет | Текущая версия | Исправленная версия | Рекомендация |
|-----|----------|-------|----------------|---------------------|--------------|
| CVE-2026-1234 | Critical | openssl | 1.1.1k | 1.1.1l | Обновить openssl до 1.1.1l |
Пояснение: Промт требует структурированного вывода. Если сырой вывод большой, AI может его сократить, сохранив суть.
Промт 10: Автоматизация исправления уязвимостей в Dockerfile
Задача: Исправить Dockerfile, заменив устаревшие пакеты на безопасные версии.
Промт:
Дан Dockerfile, который использует Ubuntu 20.04 и устанавливает openssl 1.1.1. Замени базовый образ на Ubuntu 22.04, обнови openssl до версии 3.0.x, удали лишние зависимости (curl, vim). Добавь установку только необходимых пакетов через --no-install-recommends.
Пример результата:
FROM ubuntu:22.04
RUN apt-get update && \
apt-get install -y --no-install-recommends \
openssl=3.0.2-0ubuntu1.18 && \
rm -rf /var/lib/apt/lists/*
Пояснение: Промт явно указывает версию пакета, что фиксирует dependency. Для production лучше использовать многоступенчатую сборку.
Как адаптировать промты под свой стек
Каждый промт выше можно модифицировать, добавив конкретные названия инструментов (например, заменить Semgrep на CodeQL), язык программирования или версию ОС. Главное — всегда указывать желаемый формат вывода (YAML, JSON, таблица) и исключения, чтобы AI не генерировал лишнего.
Заключение
AI-промты для DevSecOps — это не замена экспертизе, а инструмент ускорения рутинных задач. Используя приведённые шаблоны, вы сможете быстрее писать политики, настраивать сканеры и анализировать логи. Однако помните: любой сгенерированный код или политику нужно проверять вручную, особенно если речь идёт о production-среде. Начните с одного промта, протестируйте на тестовом окружении и постепенно внедряйте в пайплайн.
Помните, что безопасность — это процесс, а не одноразовая настройка. Регулярно обновляйте промты под новые версии инструментов и угрозы. Если вы используете специализированные платформы для обучения, например, ASI Biont, который поддерживает интеграцию с различными инструментами безопасности через API, вы можете автоматизировать генерацию политик прямо в вашем workflow — подробнее на asibiont.com/courses.
Комментарии