Skip to content

Вопросы на собеседовании: DevSecOps-инженер

100 реальных вопросов с образцовыми ответами и пояснениями для уровня Junior.

Смотреть пример резюме: DevSecOps-инженер

Тренировка флешкарточками

Интервальное повторение · Hunter Pass

Вопросы

В распространённой модели DevSecOps-инженер поддерживает общие защитные механизмы процесса доставки, но точное распределение ответственности зависит от организации.

  • Роль часто интегрирует и применяет согласованные контроли для CI/CD-процессов, доступа раннеров, секретов, проверок зависимостей и целостности артефактов.
  • Разработчики продукта отвечают за исправления кода, а AppSec или другая security-команда может владеть правилами сканеров и решениями о риске.
  • Junior обычно поддерживает ограниченный workflow или интеграцию сканера под ревью, а не определяет правила для всей компании.

Зачем это спрашивают: Интервьюер проверяет, умеете ли вы описать распространённую границу роли, не выдавая одну модель ответственности за универсальную.

generics

DevOps сосредоточен на надёжной доставке, а DevSecOps явно отвечает за встроенные в неё механизмы безопасности.

  • Задача DevOps может заключаться в ускорении и повторяемости деплоя через GitLab CI.
  • Задача DevSecOps ограничивает job token, сканирует артефакт и проверяет согласование перед этим деплоем.
  • Роли пересекаются в механике пайплайнов, но для DevSecOps снижение рисков безопасности является обязательным результатом.

Зачем это спрашивают: Интервьюер оценивает, отличаете ли вы безопасную доставку от общей автоматизации и работы над надёжностью.

DevSecOps часто сосредоточен на общих контролях доставки, а Application Security напрямую работает с рисками в дизайне и коде продукта.

  • AppSec может владеть моделями угроз, рекомендациями по коду, платформами сканирования или правилами этих сканеров.
  • DevSecOps может интегрировать результаты сканеров в GitHub Actions или GitLab CI, поддерживать надёжность проверок и применять контроли, согласованные с AppSec и командами доставки.
  • Разработчики исправляют затронутый код, а каждая организация должна явно определить владельцев инструментов, политик и исправлений.

Зачем это спрашивают: Интервьюер проверяет, различаете ли вы дисциплины без утверждения, что одна из команд всегда владеет всеми сканерами или контролями доставки.

cloud-security

DevSecOps сосредоточен на пути доставки ПО, а инженер по облачной безопасности защищает облачные аккаунты, сервисы и конфигурации.

  • Инженер по облачной безопасности может определять сетевые границы или общие правила доступа в облаке.
  • DevSecOps-инженер ограничивает учётные данные пайплайна и проверяет контейнер перед деплоем в облако.
  • Для безопасной интеграции DevSecOps нужны знания облака, но повседневное администрирование облачного IAM не составляет всю роль.

Зачем это спрашивают: Интервьюеру нужна чёткая граница между безопасностью платформы доставки и широким администрированием облака.

secure-sdlc

Безопасный SDLC размещает подходящие проверки и доказательства безопасности на этапах планирования, сборки, тестирования и выпуска.

  • Изменения исходного кода проходят ревью и автоматические проверки до попадания в защищённую ветку.
  • При сборке сканируются зависимости и секреты, а результаты сохраняются вместе с точным артефактом.
  • Контроли выпуска проверяют согласования и идентичность артефакта, а не предполагают, что предыдущий этап наверняка прошёл.

Зачем это спрашивают: Интервьюер проверяет, понимаете ли вы безопасную доставку как последовательность контролей, а не одно финальное сканирование.

shift-left

Shift-left означает более раннюю полезную обратную связь по безопасности, а не перенос всей ответственности на разработчиков.

  • SCA-проверка в pull request может найти уязвимую зависимость до её попадания в основную ветку.
  • Ранние проверки должны быть быстрыми и понятными, а более медленный DAST всё ещё может запускаться на развёрнутом тестовом окружении.
  • Контроли в runtime и проверка выпуска остаются нужны, потому что проверки исходного кода не доказывают безопасность продакшена.

Зачем это спрашивают: Интервьюер проверяет, понимаете ли вы пользу и ограничения ранних проверок безопасности.

guardrailssecurity-guardrails

Защитный механизм автоматически меняет путь доставки, а отчёт лишь сообщает человеку о наличии риска.

  • Правило GitHub Actions, отклоняющее сторонний action без фиксации по хешу, не даёт смержить рискованное изменение.
  • OpenSSF Scorecard может найти рискованные практики в репозитории, но становится защитным механизмом только при использовании результата чётким правилом.
  • Хороший механизм объясняет причину отказа и способ исправления, чтобы команды не обходили его из-за непонимания.

Зачем это спрашивают: Интервьюер проверяет, связываете ли вы находки безопасности с обязательным и удобным поведением платформы.

Junior DevSecOps-инженер должен безопасно поддерживать и улучшать ограниченный контроль с понятным порядком эскалации.

  • Типичные задачи включают обновление job с Trivy, разбор результатов сканирования или сокращение прав в одном CI-шаблоне.
  • Изменения нужно проверять на тестовом репозитории и отправлять на ревью до превращения в обязательный гейт.
  • Неясные исключения, сломанные релизы и запросы на более широкие права нужно эскалировать, а не решать догадками.

Зачем это спрашивают: Интервьюер оценивает практическую ответственность junior-специалиста, дисциплину тестирования и понимание границ эскалации.

ci-cdpipelinestrust-boundaries

Граница доверия возникает там, где код или данные переходят между компонентами с разным уровнем контроля.

  • Pull request из форка менее надёжен, чем уже проверенный код в защищённой ветке.
  • Раннер с токеном деплоя переходит от логики сборки к привилегированному доступу к инфраструктуре.
  • На каждом переходе нужны явная аутентификация, минимальные права и проверка входных данных или артефакта.

Зачем это спрашивают: Интервьюер проверяет, можете ли вы найти места, где предположения пайплайна должны стать явными контролями.

ci-cdgithub-actions

В GitLab CI есть явные стадии, а в GitHub Actions нет примитива stage и порядок jobs задаётся через needs.

  • Jobs GitLab назначаются стадиям, последующие стадии обычно ждут предыдущие, а jobs одной стадии могут выполняться параллельно.
  • В GitHub Actions jobs без зависимостей могут выполняться параллельно, а needs указывает, от каких успешно завершённых jobs зависит следующий job.
  • В обеих системах разделение сканирования, сборки и деплоя по jobs упрощает проверку учётных данных, результатов и условий отказа.

Зачем это спрашивают: Интервьюер оценивает, умеете ли вы моделировать порядок пайплайна, не приписывая GitHub Actions стадии.

ci-cdpipelines

Разные jobs уменьшают объём недоверенного кода и чувствительных данных в одном контексте выполнения.

  • Job для pull request не должен получать секрет для деплоя в продакшен.
  • Job подписи может принимать digest, а не повторно собирать или выполнять код репозитория.
  • Права на уровне job явно показывают, какой этап может записывать пакеты, запрашивать OIDC-токены или выполнять деплой.

Зачем это спрашивают: Интервьюер проверяет, используете ли вы границы jobs для сокращения доступа к учётным данным и нежелательных связей.

artifacts

CI-артефакты пересекают границы jobs и времени, поэтому нужно контролировать их источник, содержимое и срок хранения.

  • Следующий job не должен доверять артефакту из недоверенного workflow без проверки источника и целостности.
  • Логи, отчёты тестов и архивы могут случайно содержать токены или закрытые файлы исходного кода.
  • Короткое хранение, ограничение скачивания и digest, связанный со сборкой, снижают риск утечки и подмены.

Зачем это спрашивают: Интервьюер оценивает, считаете ли вы артефакты чувствительными входными данными, а не безобидными файлами.

ci-runners

Облачные раннеры обычно одноразовые и управляются провайдером, а собственные дают больше контроля, но сохраняют больше рисков.

  • Новый GitHub-hosted runner ограничивает сохранение данных между jobs и сокращает работу по очистке.
  • Self-hosted runner может открыть внутреннюю сеть, закешированные учётные данные или файлы от предыдущего job.
  • Недоверенные pull requests нельзя запускать на привилегированном self-hosted runner без сильной изоляции.

Зачем это спрашивают: Интервьюер проверяет, учитываете ли вы сохранение состояния и сетевой доступ раннера в модели доверия.

code-review

Pull requests из форков содержат код под контролем внешнего автора, который может попытаться прочитать секреты или изменить workflow.

  • Обычные jobs для pull request должны работать только с правами чтения и без учётных данных деплоя.
  • Триггер с доверенным контекстом основной ветки не должен выполнять код форка с повышенными правами.
  • Привилегированная упаковка или деплой должны ждать ревью и запускаться из защищённой ветки или окружения.

Зачем это спрашивают: Интервьюер проверяет, распознаёте ли вы выполнение недоверенного кода до выдачи учётных данных.

least-privilegeaccess-control

Настройте GITHUB_TOKEN только на чтение по умолчанию и выдавайте каждому job лишь необходимые ему права.

  • Job с тестами обычно нужен доступ на чтение содержимого репозитория, но не запись пакетов или деплоев.
  • Job публикации может получить запись пакетов только после успешных тестов в доверенной ветке.
  • Право id-token write выдаётся только тому job, который действительно выполняет OIDC-обмен.

Зачем это спрашивают: Интервьюер проверяет, можете ли вы превратить принцип минимальных привилегий в конкретные разрешения GitHub Actions.

tokens

GitLab CI job token нужно считать временными учётными данными и ограничивать его доступ к проектам задачей текущего job.

  • Предпочитайте job token персональному токену доступа, если целевой сервис его поддерживает.
  • Ограничивайте проекты, которые могут использовать или принимать токен, вместо доверия всем внутренним репозиториям.
  • Не сохраняйте токен в артефактах, кеше, выводе команд или файлах, остающихся после job.

Зачем это спрашивают: Интервьюер оценивает, понимаете ли вы, что временным учётным данным всё равно нужны ограничения доступа и безопасное обращение.

Защищённые ветки заставляют изменения проходить заданное ревью и статусные проверки до попадания в доверенную историю выпуска.

  • Запрет прямых push не позволяет одной скомпрометированной учётной записи разработчика незаметно пропустить ревью.
  • Обязательные CI-проверки обеспечивают тестирование и сканирование именно того коммита, который будет смержен.
  • Ограничение force push сохраняет проверенную историю коммитов для последующих сборок и provenance.

Зачем это спрашивают: Интервьюер проверяет, связываете ли вы защиту ветки с целостностью последующих сборок.

Защищённые окружения контролируют, когда доверенный коммит может получить доступ для деплоя в чувствительную цель.

  • Окружения GitHub Actions могут требовать согласования перед выдачей секретов окружения job.
  • Protected environments в GitLab могут ограничивать ветки, теги и пользователей с правом деплоя.
  • Job деплоя должен ссылаться на проверенный артефакт, а не пересобирать другое содержимое после согласования.

Зачем это спрашивают: Интервьюер оценивает, отделяете ли вы согласование исходного кода от разрешения на деплой.

saststatic-analysis

Статическое тестирование безопасности анализирует исходный код или его скомпилированное представление без запуска приложения.

  • Оно может прослеживать подозрительные потоки данных, небезопасное использование API и характерные для языка шаблоны кода.
  • Проверка подходит для pull-request или build jobs, потому что ей не нужна развёрнутая цель.
  • Результат SAST является поводом для проверки, а не доказательством эксплуатации проблемы в развёрнутой системе.

Зачем это спрашивают: Интервьюер проверяет, знаете ли вы входные данные SAST, его место в пайплайне и границы доказательности.

saststatic-analysis

SAST должен рано проверять изменённый код и полностью запускаться перед выпуском доверенного кода.

  • Быстрое сканирование pull request даёт обратную связь рядом с изменением разработчика.
  • Сканирование основной ветки может покрыть весь репозиторий с конфигурацией production-сборки.
  • SAST может пропустить конфигурацию runtime, поведение аутентификации после деплоя и пути, которые не умеет точно моделировать.

Зачем это спрашивают: Интервьюер оценивает, можете ли вы правильно разместить SAST и не заявлять о полном покрытии.

Закрытые вопросы

  • 21

    Что такое DAST и что он проверяет?

    dastdynamic-analysis
  • 22

    Почему DAST обычно не является первой проверкой pull request?

    dastdynamic-analysis
  • 23

    Что такое Software Composition Analysis?

    scaoop
  • 24

    Что ищет сканер секретов?

    secretssecret-scanning
  • 25

    Зачем сканировать секреты и перед коммитом, и в CI?

    secrets
  • 26

    Что Trivy может сканировать в workflow junior DevSecOps-инженера?

    trivy
  • 27

    Чем Grype и OSV-Scanner отличаются в базовом пайплайне?

    ci-cdpipelinesosv-scanner
  • 28

    Почему успешное прохождение нескольких сканеров не доказывает безопасность релиза?

  • 29

    Чем прямая зависимость отличается от транзитивной?

    dependencies
  • 30

    Почему lock-файлы важны для сканирования уязвимостей зависимостей?

    dependenciespackagingdependency-locking
  • 31

    Что оценка CVSS сообщает об уязвимости зависимости?

    vulnerabilitiesvuln-managementdependencies
  • 32

    Чем эксплуатируемость отличается от серьёзности уязвимости?

    vulnerabilitiesattacksexploitability
  • 33

    Что означает достижимость для уязвимой зависимости?

    vulnerabilitiesdependencies
  • 34

    Каким должно быть безопасное исключение для находки в зависимости?

    dependencies
  • 35

    Как предпочтительно исправлять уязвимую зависимость?

    vulnerabilitiesdependencies
  • 36

    Какие доказательства подтверждают исправление уязвимости зависимости?

    vulnerabilitiesdependencies
  • 37

    Что считается секретом в CI/CD-системе?

    ci-cdsecretssystem-design
  • 38

    Какие базовые понятия HashiCorp Vault должен знать junior?

    secrets
  • 39

    Что такое динамический секрет в Vault?

    secretsdynamic-secrets
  • 40

    Почему OIDC-федерация предпочтительнее долгоживущих учётных данных CI?

    identity-accessworkload-identity
  • 41

    Как нужно передавать секрет в CI-job?

    secrets
  • 42

    Что требуется для ротации CI-секрета?

    secrets
  • 43

    Почему маскирования в логах CI недостаточно для защиты секретов?

    secrets
  • 44

    Что такое SBOM?

    supply-chainsoftware-inventory
  • 45

    Чем SBOM отличается от сканирования уязвимостей?

    vulnerabilitiessupply-chainsoftware-inventory
  • 46

    Что подпись cosign доказывает о контейнерном образе?

    containerscontainer-images
  • 47

    Чем provenance сборки отличается от подписи?

    provenance
  • 48

    Почему контейнерный образ следует деплоить по digest, а не по тегу?

    containersdeploymentcontainer-images
  • 49

    Почему контейнер должен запускаться не от root-пользователя?

    containers
  • 50

    Какие базовые правила образов и слоёв улучшают безопасность контейнера?

    containers
  • 51

    В 6 репозиториях GitHub вы нашли 18 сторонних actions, указанных через теги. Как их усилить?

    dependencies
  • 52

    Workflow GitHub Actions из 9 jobs выдаёт contents: write и packages: write всем jobs, хотя публикует только 1 job. Что вы измените?

    ci-cdgithub-actions
  • 53

    Pull request из форка требует тестов в 14-минутном workflow, но сейчас тесты читают 2 облачных секрета. Как запустить его безопасно?

    secretscloud-securitycode-review
  • 54

    Workflow pull_request_target в 3 репозиториях делает checkout head-коммита контрибьютора и запускает npm test с токеном на запись. В чём риск и как его исправить?

    tokensrisk-managementnpm
  • 55

    Четыре репозитория сразу после merge деплоят в production с 1 общим секретом. Как protected environments снизят риск?

    secretsrisk-managementdeployment
  • 56

    Self-hosted runner обрабатывает 30 сборок в день и оставляет Docker-контейнеры, рабочие каталоги и облачные файлы. Что вы измените сначала?

    dockercontainersci-cd
  • 57

    Тестовый job GitLab на 30 дней загружает артефакт размером 120 МБ с логами, .env и отчётами тестов. Как усилить работу с артефактами?

    ab-testingartifacts
  • 58

    6 проектов GitLab открывают protected-переменную реестра pipeline для merge request, способному запускать скрипты контрибьютора. Что вы измените?

    ci-cdregistriespipelines
  • 59

    Dependabot предлагает изменить 7 закреплённых SHA actions в одном pull request. Какие проверки вы проведёте перед merge?

    code-review
  • 60

    Workflow напрямую подставляет заголовок pull request в Bash-команду, и 2 теста из форков ведут себя неожиданно. Как это исправить?

    code-reviewtesting
  • 61

    Нужно добавить Semgrep SAST в 6 репозиториев, не заставляя каждый 12-минутный pull request ждать полного скана. На какой стадии вы его разместите?

    code-reviewsaststatic-analysis
  • 62

    Небольшой API имеет 12 staging endpoints и деплоится за 18 минут. Как добавить базовую DAST-проверку OWASP ZAP?

    owaspdastendpoints
  • 63

    OSV-Scanner находит 4 уязвимых пакета в репозитории из 2 сервисов во время установки зависимостей. Как сделать результат полезным?

    dependenciesosv-scannervulnerabilities
  • 64

    В недавние коммиты каждого из 3 репозиториев попал 1 тестовый токен. Как встроить secret scanning в их workflow?

    secretstokens
  • 65

    Первый запуск SAST сообщает о 12 существующих находках в сервисе на 9000 строк, но команде на этой неделе нужен обязательный gate. Как создать baseline?

    saststatic-analysis
  • 66

    Команда из 5 разработчиков поддерживает 2 сервиса и получает 20 alerts сканера за первую неделю. Какой gate для небольшого репозитория вы предложите?

    alerting
  • 67

    Secret scanner иногда зависает на 8 минут и выводит 20-минутный pipeline за таймаут. Как вы это обработаете?

    ci-cdpipelinessecrets
  • 68

    Semgrep считает 7 вызовов безопасной внутренней обёртки SQL injection в одном репозитории. Как обработать false positives?

    injectionweb-attacksdetection-tuning
  • 69

    Pipeline находит 5 проблем высокой критичности, но доказательства исчезают после job, и разработчики не могут их воспроизвести. Что вы загрузите?

    debuggingseverity-priorityci-cd
  • 70

    Ночной скан открывает 9 дублирующихся находок в 3 репозиториях без исполнителей. Как создать полезные задачи?

  • 71

    CI job 6 минут назад напечатал 1 production API-токен в публичный лог. Каковы ваши первые действия?

    tokensapi
  • 72

    Разработчик удаляет AWS-ключ из последнего коммита после того, как он был виден 2 часа. Достаточно ли этого и что вы сделаете?

  • 73

    Один утёкший пароль реестра присутствует в 3 job logs, 2 артефактах и кеше общего runner. Как очистить копии?

    artifactsregistriespasswords
  • 74

    Утёкший package-токен настроен в 6 репозиториях, но публиковать должны только 2. Как сократить его область при ротации?

    tokensconfig
  • 75

    Job GitHub Actions в 4 репозиториях хранит long-lived Vault-токен со сроком 30 дней. Какую базовую замену вы внедрите?

    tokenssecretsci-cd
  • 76

    12-минутному деплою нужен 1 пароль базы из Vault, но текущий скрипт записывает его в workspace/db.env. Как вы его внедрите?

    passwordssecretsdatabase
  • 77

    Vault-токен с TTL 10 минут истекает во время 20-минутной сборки образа. Сделаете ли вы его 24-часовым?

    tokenssecrets
  • 78

    Как после ротации 1 утёкшего CI-секрета, используемого 3 сервисами, проверить сдерживание до закрытия инцидента?

    secretsincident-responseincidents
  • 79

    Trivy сообщает, что application image размером 180 МБ работает от root. Какие изменения Dockerfile вы сделаете?

    dockertrivy
  • 80

    Trivy сообщает о 12 OS-уязвимостях в образе, собранном 45 дней назад, и для 3 из них есть исправления. Что вы сделаете?

    vulnerabilitiestrivy
  • 81

    Grype находит 5 уязвимых Node.js-пакетов внутри контейнера, но только 1 является прямой зависимостью. Как их проследить и исправить?

    containersdependenciestracing
  • 82

    Шесть Kubernetes deployments используют image: api:latest, и один rollout получил разные байты на 2 nodes. Что вы измените?

    kubernetesdeploymentapi
  • 83

    Скан сообщает о Dockerfile EXPOSE 22 и Compose-файле, публикующем 0.0.0.0:22:22 для 3 тестовых контейнеров. Каково практическое исправление?

    dockercontainersnetworking
  • 84

    Trivy отмечает 1 Kubernetes pod с privileged: true, hostPID: true и 2 hostPath mounts. Как его усилить?

    kubernetestrivy
  • 85

    В Kubernetes Secret в 4 overlays закоммичен пароль базы в base64. Как локализовать утечку и предотвратить повторение?

    secretspasswordsdatabase
  • 86

    Terraform scan находит 1 S3 bucket с public ACL и без public-access block в модуле из 3 buckets. Что вы измените?

    terraformawsiac-scanning
  • 87

    В деплое 4 образа, и одобренные CLI-команда cosign и policy успешно проверяют 3, но сообщают об одном неподписанном digest. Что вы сделаете?

    deployment
  • 88

    Проверка cosign падает для 1 из 6 release images, и кто-то считает причиной смену тега. Что вы сделаете?

  • 89

    Нужен SBOM для контейнера с 230 пакетами, а команда ожидает увидеть в нём только уязвимости. Как вы объясните и реализуете задачу?

    vulnerabilitiessupply-chaincontainers
  • 90

    SBOM check показывает, что в release record образа с 85 пакетами отсутствуют 2 runtime-пакета. Как это расследовать?

    supply-chainincident-responsesoftware-inventory
  • 91

    Source SCA не находит проблем, но скан реестра обнаруживает 3 уязвимых OS-пакета в release image. Как исследовать и исправить расхождение?

    vulnerabilitiesincident-responseregistries
  • 92

    Provenance attestation для production image называет 1 неожиданный GitHub workflow. Какие базовые поля вы проверите?

  • 93

    У 2 из 5 release images есть подписи, но нет прикреплённого SBOM. Следует ли деплою считать их проверенными?

    supply-chaindeploymentsoftware-inventory
  • 94

    Trivy gate падает в CI с 6 находками, но разработчик локально получает 0. Как воспроизвести различие?

    debuggingtrivy
  • 95

    Разработчик спрашивает, почему pull request заблокирован 3 high-находками в транзитивном пакете. Как вы объясните gate?

    code-review
  • 96

    Шесть репозиториев обнаруживают некорректную Rego policy для OPA и Conftest только при деплое. Какое shift-left изменение вы сделаете с разработчиками?

    pytestshift-leftdeployment
  • 97

    Lead просит 3 простые метрики после добавления сканов в 8 репозиториев. Что вы покажете через 30 дней?

    monitoring
  • 98

    Команда просит исключение на 14 дней для 1 неисправленной high-уязвимости, блокирующей релиз. Что вы запишете и обеспечите?

    vulnerabilitieserror-handling
  • 99

    Обновление сканера добавляет 12 новых находок и 4 минуты к pipelines в 6 репозиториях. Как его выкатить?

    ci-cdpipelines
  • 100

    20-минутный pipeline стал на 8 минут дольше после добавления SCA, SAST и DAST, и 5 разработчиков хотят убрать все gates. Как вы ответите на практике?

    ci-cdpipelinesstatic-analysis