feat(security): security.txt отдаётся, npm audit и SBOM в AppSec
- /.well-known/security.txt уходил в SPA-заглушку (200 text/html): добавлена копия в web/public и явный тип text/plain в статике (RFC 9116, AGENT.md 11.3); - make security дополнен `npm audit --omit=dev --audit-level=high`; - новая цель `make sbom` — CycloneDX-отчёт зависимостей (trivy, если есть).
This commit is contained in:
@@ -142,18 +142,29 @@ generate: tools ## Проверить сгенерированные артеф
|
||||
else echo "==> sqlc: запросов пока нет, пропускаем"; fi
|
||||
|
||||
.PHONY: security
|
||||
security: tools ## AppSec: govulncheck, gitleaks, trivy (по возможности)
|
||||
security: tools ## AppSec: govulncheck, gitleaks, npm audit, trivy (по возможности)
|
||||
@mkdir -p $(BUILD_DIR)
|
||||
@echo "==> govulncheck"
|
||||
@govulncheck ./cmd/... ./internal/... || { echo "govulncheck нашёл уязвимости"; exit 1; }
|
||||
@echo "==> gitleaks"
|
||||
@$(ROOT)/scripts/gitleaks-scan.sh
|
||||
@echo "==> npm audit (web, только production-зависимости)"
|
||||
@cd $(WEB_DIR) && npm audit --omit=dev --audit-level=high || { echo "npm audit нашёл уязвимости"; exit 1; }
|
||||
@echo "==> trivy filesystem scan"
|
||||
@if command -v trivy >/dev/null 2>&1; then \
|
||||
trivy fs --quiet --scanners vuln,secret,misconfig --exit-code 1 \
|
||||
--skip-dirs .cache --skip-dirs .git --skip-dirs web/node_modules .; \
|
||||
else echo "trivy not installed — skipped"; fi
|
||||
|
||||
.PHONY: sbom
|
||||
sbom: ## SBOM зависимостей в build/sbom.cdx.json (trivy, если установлен)
|
||||
@mkdir -p $(BUILD_DIR)
|
||||
@if command -v trivy >/dev/null 2>&1; then \
|
||||
trivy fs --quiet --format cyclonedx --output $(BUILD_DIR)/sbom.cdx.json \
|
||||
--skip-dirs .cache --skip-dirs web/node_modules . && \
|
||||
echo "SBOM: $(BUILD_DIR)/sbom.cdx.json"; \
|
||||
else echo "trivy не установлен — SBOM не собран (запустите на сервере сборки)"; fi
|
||||
|
||||
.PHONY: secrets-scan
|
||||
secrets-scan: tools ## Только проверка на утечки секретов
|
||||
@$(ROOT)/scripts/gitleaks-scan.sh
|
||||
|
||||
Reference in New Issue
Block a user