OPEN HYPER STEP
← 목록으로 (stack-analysis)
STACK-ANALYSIS · 109 / 120
stack-analysis
CHAPTER 109 / 120
읽기 약 2
FUNCTION

의존성 보안: npm audit + Snyk + Renovate


핵심 개념

npm audit·Snyk·Dependabot·Renovate·SCA — 자동 의존성 보안.

본문

의존성 위험

📋 코드 (6줄)
2024년 통계:
- 평균 프로젝트 1500+ 의존성
- 공급망 공격 (supply chain) 급증
- log4shell·left-pad 사례

→ 자동화 없이는 관리 불가능

npm audit (기본)

BASH📋 코드 (16줄)
# 검사
pnpm audit
npm audit


# 자동 수정 (가능한 것만)
pnpm audit --fix
npm audit fix


# 심각도 필터
npm audit --audit-level=moderate


# CI 통합
pnpm audit --audit-level=high && pnpm test

Snyk (더 강력)

BASH📋 코드 (16줄)
# 무료 plan
pnpm dlx snyk auth
pnpm dlx snyk test
pnpm dlx snyk monitor


# 자동 PR
pnpm dlx snyk fix


# CI
pnpm dlx snyk test --severity-threshold=high


# license 검사
pnpm dlx snyk test --print-deps

Dependabot (GitHub 무료)

YAML📋 코드 (28줄)
# .github/dependabot.yml
version: 2
updates:
  - package-ecosystem: npm
    directory: /
    schedule:
      interval: weekly
      day: monday
    open-pull-requests-limit: 10
    versioning-strategy: increase
    groups:
      production:
        dependency-type: production
      development:
        dependency-type: development
    ignore:
      - dependency-name: react
        update-types: ['version-update:semver-major']
    commit-message:
      prefix: chore
      include: scope


  # GitHub Actions 자동 업데이트
  - package-ecosystem: github-actions
    directory: /
    schedule:
      interval: weekly

Renovate (더 강력)

JSON📋 코드 (28줄)
// renovate.json
{
  "extends": ["config:recommended"],
  "schedule": ["before 9am on monday"],
  "labels": ["dependencies"],
  "rangeStrategy": "bump",
  "packageRules": [
    {
      "matchUpdateTypes": ["patch", "minor"],
      "automerge": true,
      "automergeType": "branch"
    },
    {
      "matchPackagePatterns": ["^@types/"],
      "groupName": "type definitions",
      "automerge": true
    },
    {
      "matchPackageNames": ["next", "react", "react-dom"],
      "groupName": "Next.js + React",
      "schedule": ["before 9am on monday"]
    }
  ],
  "vulnerabilityAlerts": {
    "labels": ["security"],
    "automerge": true
  }
}

SBOM (Software Bill of Materials)

BASH📋 코드 (11줄)
# CycloneDX
pnpm dlx @cyclonedx/cyclonedx-npm --output sbom.json


# Syft
syft . -o cyclonedx-json > sbom.json


# → 사용 중인 모든 의존성·버전 목록
# → 컴플라이언스 (SOC 2, ISO 27001)
# → 취약점 발생 시 영향 평가

의존성 보안 체크리스트

📋 코드 (15줄)
[정기]
☐ pnpm audit 매주
☐ Dependabot/Renovate PR 검토
☐ Snyk monitor 활성

[CI]
☐ npm audit --audit-level=high (필수)
☐ Snyk test (선택)
☐ 라이선스 검사 (license-checker)

[정책]
☐ lockfile commit (pnpm-lock.yaml)
☐ exact version 또는 ~minor only
☐ 알 수 없는 maintainer 패키지 회피
☐ 큰 의존성은 자체 구현 검토

라이선스 검사

BASH📋 코드 (14줄)
# license-checker
pnpm dlx license-checker --summary

# 결과
├─ MIT: 1234
├─ ISC: 456
├─ Apache-2.0: 78
├─ BSD-3-Clause: 23
└─ GPL-3.0: 1  ⚠️  (commercial 위험)


# 정책 적용
pnpm dlx license-checker --onlyAllow "MIT;ISC;Apache-2.0;BSD-3-Clause"
# → 다른 라이선스 발견 시 실패

공급망 공격 방어

📋 코드 (18줄)
1. Lockfile 항상 commit
   pnpm-lock.yaml / package-lock.json

2. CI에 frozen install
   pnpm install --frozen-lockfile

3. 큰 변경은 수동 검토
   - major version
   - 새 maintainer
   - permission 변경

4. 알려진 위험 패키지 차단
   - .npmrc에 deny list
   - 또는 사내 registry (Verdaccio)

5. Dependency confusion 방어
   - scoped packages (@my-org/...)
   - private registry로 차단

알림 + 대응

TYPESCRIPT📋 코드 (19줄)
// GitHub Security Alerts → Slack
// .github/workflows/security-alert.yml

on:
  security_advisory: { types: [published] }

jobs:
  notify:
    runs-on: ubuntu-latest
    steps:
      - uses: 8398a7/action-slack@v3
        with:
          status: custom
          custom_payload: |
            {
              text: "🚨 New security advisory: ${{ github.event.security_advisory.summary }}"
            }
        env:
          SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}

다음 챕터

CH.110 "보안 종합: 프로덕션 보안 체크리스트 50항목".


AI 프롬프트
🤖 AI에게 잘 물어보는 법 — 모델·전략별 프롬프트
Claude

무료: Sonnet 4.6 / Pro $20/mo: Opus 4.6

내 코드의 의존성 보안 부분을 분석해서
실전 분석 + 개선 우선순위를 알려줘.
ChatGPT

무료: GPT-5.5 / Plus $20/mo: GPT-5.5 Pro

의존성 보안 관련 베스트 프랙티스 5가지를
비교 분석해서 패턴 추출를 알려줘.
Gemini

무료: 2.5 Flash / Pro $19.99/mo: 3.1 Pro

내 프로젝트 전체에서 의존성 보안
최적화 가능 위치를 보고해줘.
Grok

무료: Grok 4.1 / SuperGrok $30/mo

2026년 한국 시장의 의존성 보안
트렌드를 솔직히 알려줘.

⭐ 이것만 기억하세요
의존성 보안: npm audit + Snyk + Renovate 이 3가지만 확실히 잡으세요
1.Dependabot/Renovate + npm audit = 자동 PR + CI 검증
2.lockfile commit + frozen-lockfile = 공급망 일관성
3.SBOM + 라이선스 검사 = 컴플라이언스 + 위험 가시성


공유하기
진행도 109 / 120