[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-bezopasnost-konteynerov-kak-skanirovat-docker-obrazy-na-uyazvimosti":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":21,"progress":22,"seo":23},311,"kak-skanirovat-docker-obrazy-na-uyazvimosti",9,"bezopasnost-konteynerov","Безопасность контейнеров","🛡️","Как сканировать Docker-образы на уязвимости?","Сканирование Docker-образов на уязвимости -- это процесс автоматического анализа пакетов ОС и зависимостей приложения внутри образа с последующей сверкой с базами данных известных уязвимостей (NVD, GitHub Advisory, Alpine SecDB и др.).\n\n### Trivy (Aqua Security)\n\nTrivy -- один из самых популярных open-source сканеров. Поддерживает сканирование образов, файловых систем, Git-репозиториев, конфигураций Kubernetes и IaC.\n\n```bash\n# Сканирование образа\ntrivy image my-registry\u002Fbanking-service:1.0.0\n\n# Только CRITICAL и HIGH уязвимости\ntrivy image --severity CRITICAL,HIGH my-registry\u002Fbanking-service:1.0.0\n\n# Только уязвимости с доступным исправлением\ntrivy image --ignore-unfixed my-registry\u002Fbanking-service:1.0.0\n\n# Комплексное сканирование проекта (уязвимости + секреты + misconfig)\ntrivy fs --scanners vuln,secret,misconfig .\n\n# Вывод в JSON для интеграции с CI\u002FCD\ntrivy image --format json --output report.json my-registry\u002Fbanking-service:1.0.0\n\n# Завершить с ошибкой при наличии CRITICAL уязвимостей (для CI\u002FCD gate)\ntrivy image --exit-code 1 --severity CRITICAL my-registry\u002Fbanking-service:1.0.0\n```\n\nПример вывода:\n\n```\nbanking-service:1.0.0 (alpine 3.20)\n====================================\nTotal: 3 (CRITICAL: 1, HIGH: 2)\n\n┌───────────────┬──────────────────┬──────────┬─────────┬───────────────┐\n│    Library    │  Vulnerability   │ Severity │ Version │ Fixed Version │\n├───────────────┼──────────────────┼──────────┼─────────┼───────────────┤\n│ libssl3       │ CVE-2024-XXXXX   │ CRITICAL │ 3.1.4   │ 3.1.5         │\n│ spring-web    │ CVE-2024-YYYYY   │ HIGH     │ 6.1.2   │ 6.1.5         │\n│ jackson-core  │ CVE-2024-ZZZZZ   │ HIGH     │ 2.16.0  │ 2.16.1        │\n└───────────────┴──────────────────┴──────────┴─────────┴───────────────┘\n```\n\n### Другие инструменты сканирования\n\n| Инструмент | Тип | Особенности |\n|-----------|-----|-------------|\n| **Trivy** | Open-source CLI | Универсальный, быстрый, поддерживает SBOM |\n| **Snyk** | Коммерческий (есть бесплатный tier) | Мониторинг новых уязвимостей, интеграция с IDE |\n| **Clair** (Quay) | Серверный | Интеграция с реестрами (Harbor, Quay) при push |\n| **Grype** (Anchore) | Open-source CLI | Быстрый, поддерживает сканирование SBOM |\n\n### Snyk\n\n```bash\n# Сканирование Docker-образа\nsnyk container test my-registry\u002Fbanking-service:1.0.0\n\n# Постоянный мониторинг (уведомления о новых CVE)\nsnyk container monitor my-registry\u002Fbanking-service:1.0.0\n\n# Сканирование зависимостей проекта\nsnyk test --all-projects\n```\n\n### Grype\n\n```bash\ngrype my-registry\u002Fbanking-service:1.0.0\ngrype sbom:.\u002Fsbom.spdx.json  # сканирование на основе SBOM\n```\n\n### Интеграция в CI\u002FCD\n\n\u003Cdetails>\n\u003Csummary>Пример Jenkinsfile со сканированием\u003C\u002Fsummary>\n\n```groovy\npipeline {\n    agent any\n    stages {\n        stage('Build') {\n            steps {\n                sh '.\u002Fmvnw clean package -DskipTests'\n                sh 'docker build -t banking-service:${BUILD_NUMBER} .'\n            }\n        }\n        stage('Security Scan') {\n            steps {\n                sh '''\n                    trivy image \\\n                        --exit-code 1 \\\n                        --severity CRITICAL,HIGH \\\n                        --ignore-unfixed \\\n                        --format table \\\n                        banking-service:${BUILD_NUMBER}\n                '''\n            }\n        }\n        stage('Push') {\n            when {\n                expression { currentBuild.result == null }\n            }\n            steps {\n                sh 'docker push registry.bank.local\u002Fbanking-service:${BUILD_NUMBER}'\n            }\n        }\n    }\n}\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>Пример GitHub Actions со сканированием\u003C\u002Fsummary>\n\n```yaml\n- name: Scan image with Trivy\n  uses: aquasecurity\u002Ftrivy-action@master\n  with:\n    image-ref: 'my-registry\u002Fbanking-service:${{ github.sha }}'\n    format: 'sarif'\n    output: 'trivy-results.sarif'\n    severity: 'CRITICAL,HIGH'\n    exit-code: '1'\n\n- name: Upload Trivy scan results\n  uses: github\u002Fcodeql-action\u002Fupload-sarif@v3\n  with:\n    sarif_file: 'trivy-results.sarif'\n```\n\n\u003C\u002Fdetails>\n\n### Вывод\n\nСканирование образов должно быть обязательным этапом CI\u002FCD-пайплайна. Для банковских систем рекомендуется сканировать образы при каждой сборке и периодически (ежедневно) пересканировать уже развёрнутые образы, так как новые CVE появляются постоянно. Блокировка деплоя при наличии CRITICAL-уязвимостей -- обязательная практика.\n\n> **На собеседовании:** назовите Trivy как основной инструмент, покажите знание ключевых флагов (`--exit-code 1`, `--severity`, `--ignore-unfixed`). Упомяните необходимость регулярного пересканирования уже задеплоенных образов -- это показывает зрелое понимание процесса.","","middle",[15,16,17,18,19,20],"grype","vulnerability-scanning","clair","trivy","snyk","container-security",[],null,{"title":24,"description":25,"ogTitle":26,"ogDescription":27,"keywords":28,"schemaAnswer":34,"featuredSnippetReady":35},"Сканирование Docker-образов на уязвимости — Trivy, Snyk, Grype — Gymterview","Инструменты сканирования образов: Trivy, Snyk, Clair, Grype. Интеграция в Jenkins и GitHub Actions. Автоматическая блокировка сборки при CRITICAL уязвимостях.","Сканирование Docker-образов на уязвимости — Trivy, Snyk, Clair, Grype","Trivy, Snyk, Clair, Grype — open-source сканеры для Docker-образов. Примеры интеграции в Jenkins и GitHub Actions с блокировкой при CRITICAL.",[29,30,31,32,33],"сканирование Docker образов","Trivy Docker","Snyk container","Grype Anchore","уязвимости контейнеров CVE","Основные инструменты: Trivy (Aqua Security) — популярный open-source CLI-сканер, Snyk — коммерческий с бесплатным tier, Clair (Quay) — серверный сканер для реестров, Grype (Anchore) — быстрый CLI. Сканеры анализируют пакеты ОС и зависимости, сверяя с базами CVE. Рекомендуется интегрировать в CI\u002FCD с --exit-code 1 для блокировки сборки при CRITICAL уязвимостях.",true]