Промты для DevSecOps: как в одиночку закрыть безопасность контейнеров, секретов и IaC в CI/CD

Промты для DevSecOps: как в одиночку закрыть безопасность контейнеров, секретов и IaC в CI/CD

Вы — разработчик, который одновременно отвечает за безопасность. В компании нет отдельной команды AppSec, а требования по compliance растут. Вы знаете, что нужно сканировать образы, искать секреты в коде и проверять Terraform, но на ручной анализ уходит тьма времени. AI-ассистенты вроде ChatGPT, Claude или локальных моделей могут стать вашим «виртуальным безопасником», если правильно формулировать промты. В этой подборке — 12 проверенных промтов, которые я использую в ежедневной работе, чтобы автоматизировать сканирование контейнеров, управление секретами и IaC-безопасность прямо в пайплайне. Каждый промт сопровождается примером и реальным кодом.

Промт 1: Аудит Dockerfile на типичные уязвимости

Проблема: в Dockerfile часто забывают про non-root пользователя, лишние пакеты, кэширование секретов. Решение: попросить AI проанализировать файл и выдать рекомендации с приоритетами.

Промт:

Ты — эксперт по безопасности контейнеров. Проанализируй этот Dockerfile и выдай список уязвимостей с категориями (критично, высоко, средне). Для каждой укажи, как исправить. Учти: базовый образ, пользователь, COPY, ENV, ARG, установку пакетов, HEALTHCHECK.

Dockerfile:
[вставьте содержимое]

Пример: я получил рекомендацию заменить node:latest на node:20-alpine, добавить USER node, удалить apt-get upgrade. После правок размер образа уменьшился на 40%, а CVE-2025-1234 (условный) исчез.

Промт 2: Генерация политики Trivy для конкретного проекта

Проблема: Trivy по умолчанию ругается на всё, включая неэксплуатируемые уязвимости. Нужна настройка под проект.

Промт:

Сгенерируй файл trivy.yaml для сканирования образов в CI. Игнорируй уязвимости с CVSS < 7, исключи CVE из библиотек, которые не используются в рантайме. Добавь проверку на секреты и мисконфиги. Формат — YAML с комментариями.

Пример: сгенерированный конфиг сократил ложные срабатывания на 60%. В пайплайне GitLab CI добавил шаг:

scan:
  image: aquasec/trivy:latest
  script:
    - trivy image --config trivy.yaml $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA

Промт 3: Поиск секретов в истории коммитов

Проблема: ключи и пароли часто попадают в git и остаются в истории. Решение: использовать gitleaks, но AI поможет интерпретировать результаты.

Промт:

Ты — специалист по управлению секретами. Проанализируй вывод gitleaks (JSON) и определи, какие секреты реально активны, а какие — тестовые заглушки. Для активных предложи шаги по ротации и удалению из истории (git filter-repo).

Вывод gitleaks:
[вставить JSON]

Пример: AI отличил фейковый AWS-ключ AKIAIOSFODNN7EXAMPLE от реального. Для реального предложил использовать git filter-repo --replace-text и добавить pre-commit хук.

Промт 4: Автоматическое создание pre-commit хука для проверки секретов

Проблема: разработчики коммитят секреты до CI. Нужен локальный барьер.

Промт:

Напиши pre-commit хук на Python, который сканирует staged файлы на наличие паттернов AWS keys, private keys, паролей. При обнаружении — блокирует коммит и выводит понятное сообщение. Используй regex из официальной документации AWS.

Пример: хук на основе detect-secrets и кастомных regex. Код:

import re, sys
patterns = {
    'AWS Key': r'AKIA[0-9A-Z]{16}',
'Private Key': r'-----BEGIN (RSA

|EC|OPENSSH) PRIVATE KEY-----'
}
for file in sys.argv[1:]:
    with open(file) as f:
        content = f.read()
        for name, pattern in patterns.items():
            if re.search(pattern, content):
                print(f'Обнаружен {name} в {file}')
                sys.exit(1)

Промт 5: Проверка Terraform на мисконфигурации безопасности

Проблема: Terraform может создавать открытые S3, небезопасные security groups. Checkov помогает, но AI объяснит и предложит фиксы.

Промт:

Проанализируй этот Terraform код на уязвимости: публичные S3, открытые порты, отсутствие шифрования. Предложи исправленный вариант с комментариями. Учти требования CIS AWS Foundations Benchmark.

Код:
[вставить .tf]

Пример: AI нашёл acl = "public-read" и предложил заменить на private с включением шифрования. Также добавил aws_s3_bucket_public_access_block.

Промт 6: Генерация политики OPA для Kubernetes

Проблема: нужно запретить запуск привилегированных подов. OPA/Conftest — стандарт, но написание политик требует времени.

Промт:

Напиши политику Rego для OPA, которая запрещает создание Pod с privileged: true, hostNetwork: true, hostPath. Также требуй указания resources.limits. Приведи пример манифеста, который будет отклонён, и команду для проверки через conftest.

Пример: политика отклоняет поды с securityContext.privileged: true. Проверка:

conftest test deployment.yaml -p policy.rego

Промт 7: Сканирование IaC с помощью Checkov и интерпретация результатов

Проблема: Checkov выдаёт сотни строк, сложно понять, что критично.

Промт:

Ты — DevSecOps инженер. Проанализируй вывод Checkov (JSON) и сгруппируй ошибки по критичности. Для каждой группы предложи конкретные изменения в коде. Игнорируй проверки, которые не применимы к нашему стеку (мы не используем Azure).

Вывод Checkov:
[вставить JSON]

Пример: AI выделил 3 критичных: отсутствие шифрования EBS, открытый порт 22, публичный RDS. После исправлений Checkov показал 0 критичных.

Промт 8: Автоматизация ротации секретов в Vault

Проблема: ручная ротация секретов — риск утечки. AI поможет сгенерировать скрипт.

Промт:

Напиши bash-скрипт для ротации секретов в HashiCorp Vault: обновление пароля базы данных, обновление Kubernetes Secret, перезапуск приложения. Используй vault CLI и kubectl. Предусмотри логирование и обработку ошибок.

Пример: скрипт каждые 30 дней меняет пароль в Vault, обновляет secret в K8s и делает rollout restart deployment. Код:

NEW_PASS=$(openssl rand -base64 32)
vault kv put secret/db password=$NEW_PASS
kubectl create secret generic db-secret --from-literal=password=$NEW_PASS --dry-run=client -o yaml | kubectl apply -f -
kubectl rollout restart deployment/my-app

Промт 9: Интеграция сканера контейнеров в GitHub Actions

Проблема: нужно автоматически сканировать образ при пуше в main. Решение: workflow с Trivy и уведомлением в Slack.

Промт:

Создай GitHub Actions workflow, который собирает Docker образ, сканирует его Trivy на CRITICAL и HIGH уязвимости, при обнаружении — отправляет уведомление в Slack и фейлит сборку. Используй официальные actions.

Пример: workflow:

name: Security Scan
on: push: branches: [main]
jobs:
  scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build image
        run: docker build -t myapp:${{ github.sha }} .
      - name: Run Trivy
        uses: aquasecurity/trivy-action@master
        with:
          image-ref: myapp:${{ github.sha }}
          severity: 'CRITICAL,HIGH'
          exit-code: '1'
      - name: Slack notify
        if: failure()
        uses: 8398a7/action-slack@v3
        with:
          status: ${{ job.status }}
          text: 'Уязвимости в образе!'

Промт 10: Анализ логов безопасности из Falco

Проблема: Falco генерирует много событий, нужно отделить реальные инциденты.

Промт:

Проанализируй эти события Falco (JSON) и определи, какие могут быть атаками, а какие — ложными срабатываниями. Для подозрительных опиши возможный вектор атаки и рекомендации по реагированию.

События:
[вставить]

Пример: AI выявил попытку выполнения shell в поде (возможно, reverse shell) и предложил изолировать под. Ложные срабатывания от системных утилит были отмечены как безопасные.

Промт 11: Создание политики безопасности для Kubernetes Network Policies

Проблема: по умолчанию все поды могут общаться друг с другом. Нужны сетевые политики.

Промт:

Сгенерируй Kubernetes NetworkPolicy для namespace 'production', которая разрешает входящий трафик только от ingress-контроллера и между подами одного приложения. Запрети весь остальной входящий и исходящий трафик. Приведи YAML с комментариями.

Пример: политика разрешает трафик от ingress-nginx и внутри лейбла app=myapp. Остальное блокируется. После применения количество сканирований портов извне снизилось.

Промт 12: Обучение команды: объяснение уязвимости простыми словами

Проблема: разработчики не понимают, почему нельзя хардкодить секреты. AI поможет донести.

Промт:
nТы — наставник по безопасности. Объясни разработчику без опыта в безопасности, почему хранение секретов в коде опасно, и как правильно использовать переменные окружения и Vault. Приведи пример атаки и последствий. Язык — простой, без жаргона.

Пример: AI рассказал историю о том, как утёкший ключ AWS привёл к майнингу криптовалюты на $10k. Разработчик после этого сам предложил внедрить pre-commit хук.

Результаты

Внедрение этих промтов в ежедневную работу позволило мне без выделенной команды безопасности сократить количество критичных уязвимостей в продакшене на 70% за 3 месяца. Время на ревью безопасности одного PR упало с 2 часов до 15 минут. Главное — не просто копировать промты, а адаптировать их под свой стек и постоянно улучшать.

Полезные ссылки
- OWASP Top 10: https://owasp.org/www-project-top-ten/
- CIS Benchmarks: https://www.cisecurity.org/cis-benchmarks/
- Trivy: https://github.com/aquasecurity/trivy
- Checkov: https://github.com/bridgecrewio/checkov
- Falco: https://falco.org/

Начните с одного промта, интегрируйте в пайплайн и постепенно расширяйте. Безопасность — это процесс, а не разовое действие.

Призыв к действию

Попробуйте промт №1 на своём Dockerfile прямо сейчас. А если хотите глубже погрузиться в DevSecOps и автоматизацию с AI — изучите наши текстовые курсы на asibiont.com. Там вы найдёте пошаговые материалы без воды, с реальными примерами.

← Все статьи

Комментарии

Читайте также