
Git 네이티브 의존성 승인 컨트롤러입니다. 모든 의존성 변경 시점에 트러스트 신호를 평가하고, 패키지가 팀의 정책을 위반할 경우 커밋 또는 빌드를 차단합니다. 사전 커밋 훅 + 내장 승인 워크플로우가 있는 CI 게이트.
Git 네이티브 의존성 승인 컨트롤러입니다. 모든 의존성 변경 시 신뢰 신호를 평가합니다.

trustlock은 Git pre-commit 훅(권고 모드)과 CI 검사(강제 모드)로 실행됩니다:
--enforce): 위반 시 차단, 종료 코드 1, 기준선을 업데이트하지 않습니다.패키지별 평가 신뢰 신호:
npm install -g trustlock
Node.js >= 18.3 필요.
# 1. 프로젝트에 trustlock 초기화
trustlock init
# 2. Git pre-commit 훅 설치
trustlock install-hook
# 3. (선택) 현재 의존성 상태 검토
trustlock audit
init 후 trustlock이 생성하는 파일:
.trustlockrc.json — 정책 설정.trustlock/baseline.json — 신뢰하는 의존성 스냅샷.trustlock/approvals.json — 승인 기록.trustlock/.cache/ — 레지스트리 캐시 (gitignore 처리됨).trustlockrc.json과 .trustlock/baseline.json을 저장소에 커밋하세요.
# 정상적으로 의존성 설치 실행
npm install [email protected]
# pre-commit 훅으로 trustlock check가 자동 실행됩니다.
# 수동 실행:
trustlock check
# 모든 패키지가 승인된 경우 출력:
# ✔ [email protected] — 승인됨
모든 패키지가 통과하면 trustlock check가 기준선을 자동으로 업데이트하고(권고 모드만) 종료 코드 0을 반환합니다.
# 새 패키지가 쿨다운 규칙을 위반한 경우:
trustlock check
# ✖ [email protected] — 차단됨
# exposure:cooldown 게시된 지 2시간 (정책상 72시간 필요)
# 승인하려면: trustlock approve [email protected] --override cooldown --reason "..." --expires 7d
# 예외 승인 후 재확인:
trustlock approve [email protected] \
--override cooldown \
--reason "기능 X에 필요함; 팀 검토로 안전 확인됨" \
--expires 7d
trustlock check
# ✔ [email protected] — 승인됨 (예외)
# 모노레포 패키지 간 버전 차이 및 출처 불일치 감지
trustlock audit --compare packages/frontend packages/backend packages/shared
trustlock에는 --profile로 선택 가능한 두 가지 기본 프로필이 포함되어 있습니다:
| 프로필 | 효과 |
|---|---|
strict | 168시간 쿨다운, 모든 패키지에 출처 증명 필요 |
relaxed | 24시간 쿨다운, 출처 회귀나 게시자 변경 차단 안 함 |
# CI에서 엄격 프로필 사용
trustlock check --enforce --profile strict
팀은 공유 URL에 정책을 중앙화하고 각 저장소에서 확장할 수 있습니다:
{
"extends": "https://policy.example.com/trustlockrc.json",
"cooldown_hours": 96
}
저장소 설정은 조직 정책을 더 엄격하게만 할 수 있습니다 — 최소 기준 강제를 통해 저장소가 조직이 정한 임계값을 낮추는 것을 방지합니다.
.trustlockrc.json 옵션CI 파이프라인에 trustlock 추가:
# GitHub Actions — examples/ci/github-actions.yml 참조
- run: npx trustlock check --enforce
examples/ 에서 GitHub Actions, Lefthook, Husky 설정을 확인하세요.
Trustlock은 커밋 시점에 잠금 파일 변경을 평가합니다. npm install을 가로채거나 샌드박스 처리하지 않습니다. 악성 패키지가 postinstall 스크립트를 실행하는 경우 trustlock이 보기 전에 실행됩니다. Trustlock은 손상된 잠금 파일이 커밋되고 병합되는 것을 방지하여, 피해 범위를 전체 팀과 프로덕션이 아닌 단일 개발자 머신으로 제한합니다. 설치 시 스크립트 차단은 --ignore-scripts 또는 pnpm의 기본 라이프사이클 스크립트 제어를 사용하세요.
--ignore-scripts를 사용하세요.npm audit 또는 Snyk을 사용하세요.license-checker 등을 사용하세요.trustlock은 표준 Node.js 도구 체인이 실제로 프로젝트에 무엇이 추가되는지에 대해 얼마나 수동적인지에 대한 좌절감에서 만들어졌습니다. npm install은 무엇이든 가져옵니다 — 2분 전에 게시된 패키지, 설치 시 임의의 스크립트를 실행하는 패키지, 레지스트리 tarball에서 Git URL로 밤새 전환된 패키지 — 그리고 받는 피드백은 잠금 파일 diff뿐입니다.
trustlock이 다루는 위협 모델은 좁지만 현실적입니다: 악성 버전이 게시된 후 제거되거나 플래그가 지정될 때까지의 시간 창. 취약점 스캐너는 사후에 작동합니다. trustlock은 저장소나 CI에 도달하기 전, 승인 지점에서 작동합니다.
설계는 의도적으로 최소화되었습니다. trustlock은 런타임 의존성이 없습니다 — 자체적으로 공급망 위험 제로 도구입니다. 취약점 스캐너나 의존성 감사를 대체하지 않으며, 신뢰 연속성을 강제합니다. 일단 버전이 기준선에 포함되면 신뢰됩니다. 새로운 것은 선언한 정책에 따라 승인을 받아야 합니다.
승인 워크플로는 감사 가능성을 잃지 않으면서 탈출구가 필요한 팀을 위해 존재합니다. 모든 예외는 타임스탬프가 찍히고 특정 규칙에 범위가 지정되며 만료됩니다. clean-approvals은 부수적인 고려 사항이 아니라 일급 명령어입니다.
| 잠금 파일 | 생태계 | 버전 |
|---|
package-lock.json | npm | v1, v2, v3 |
pnpm-lock.yaml | pnpm | v5, v6, v9 |
yarn.lock | yarn | classic (v1), berry (v2/v3) |
requirements.txt | Python (pip) | — |
uv.lock | Python (uv) | — |
| 명령어 | 설명 |
|---|
trustlock init | 현재 프로젝트에 trustlock 초기화 |
trustlock check | 정책에 따른 의존성 변경 평가 |
trustlock approve <pkg>@<ver> | 차단된 패키지 승인 |
trustlock audit | 전체 의존성 트리 검사하여 신뢰 상태 파악 |
trustlock audit --compare <dir...> | 여러 프로젝트 간 의존성 상태 비교 |
trustlock clean-approvals | 만료된 승인 항목 제거 |
trustlock install-hook | Git pre-commit 훅 설치 |