[Rust 공식문서 한국어 정리] 83. Rust cargo-deny 가이드
[Rust 공식문서 한국어 정리] 83. Rust cargo-deny 가이드
원문 제목: cargo-deny — Cargo plugin for linting dependencies
작성자: Embark Studios
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📌 1. 서론 — 이 문서가 다루는 내용
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
이 문서는 cargo-deny를 사용하여 Rust 프로젝트의 의존성을 검사하고 정책을 강제하는 방법을 설명합니다.
보안 취약점, 라이선스 불일치, 불필요한 의존성 중복, 그리고 특정 크레이트 사용 금지 등을 검사합니다.
cargo-deny.toml 설정 파일로 검사 규칙을 정의하고, CI에서 이를 강제하는 방법을 중심으로 설명합니다.
대규모 프로젝트와 엔터프라이즈 환경에서 의존성 거버넌스를 자동화하는 데 필수적인 도구입니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔑 2. 핵심 개념 4가지
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
① cargo-deny: Cargo 의존성을 검사하여 보안, 라이선스, 중복, 금지 크레이트를 감사하는 도구입니다.
② deny.toml: cargo-deny의 설정 파일로, 검사 규칙과 예외를 정의합니다.
③ Advisory Database: 보안 취약점 정보를 제공하는 데이터베이스로, cargo-audit와 공유합니다.
④ License Check: SPDX 라이선스 식별자를 기반으로, 허용/거부 라이선스 목록을 관리합니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📖 3. 주요 내용 상세
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
cargo-deny는 cargo install cargo-deny로 설치하고, cargo deny check로 실행합니다.
프로젝트 루트의 deny.toml 설정 파일을 읽어, 여러 검사(check)를 한 번에 수행합니다.
보안 검사는 RustSec Advisory Database를 사용합니다.
cargo deny check advisories로 알려진 취약점이 있는 의존성을 검사합니다.
cargo-audit와 동일한 데이터베이스를 사용하므로, 결과가 일관됩니다.
라이선스 검사는 허용/거부 목록을 기반으로 합니다.
[licenses] 섹션에서 allow = ["MIT", "Apache-2.0"]처럼 허용할 라이선스를 지정합니다.
copyleft나 기업 정책상 금지된 라이선스가 포함되면 에러를 발생시킵니다.
의존성 중복(bans) 검사는 동일한 크레이트의 여러 버전이 포함되는 것을 감지합니다.
[bans] 섹션에서 skip 또는 deny_multiple_versions로 중복 정책을 설정합니다.
워크스페이스에서 특히 유용하며, 바이너리 크기와 복잡도를 줄이는 데 도움이 됩니다.
특정 크레이트 사용 금지도 설정할 수 있습니다.
[bans] crates = ["deprecated-crate"]로, 보안상 문제가 있거나 사용이 금지된 크레이트를 차단합니다.
이는 팀 내에서 특정 라이브러리 사용을 통제할 때 유용합니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🛠 4. 실전 활용
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
프로젝트 초기에 deny.toml을 작성하고, CI에서 cargo deny check를 강제 실행합니다.
허용 라이선스 목록을 법무팀과 협의하여 확정하고, deny.toml에 명시합니다.
보안 취약점과 중복 의존성을 주기적으로 검사하여, 기술 부채를 줄입니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ 5. 정리
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
cargo-deny는 Rust 프로젝트의 의존성 거버넌스를 자동화하는 종합 도구입니다.
보안, 라이선스, 중복, 금지 크레이트를 한 번에 검사하여, 팀의 정책 준수를 강제합니다.
대규모 프로젝트와 엔터프라이즈 환경에서 의존성 관리의 표준으로 자리 잡아야 합니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔗 출처 링크
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
원문: https://embarkstudios.github.io/cargo-deny/
cargo-deny GitHub: https://github.com/EmbarkStudios/cargo-deny
#Rust #cargo-deny #Security #License #Governance #Dependencies #CI #번역

오뉴노노 님의 최근 댓글
ㅋㅋㅋㅋㅋ 2019 01.14 잘 읽었습니다 2018 12.30 포인트가 없어서 아직 시작을 못하고있는데요! 글은 잘 읽었습니다! 포인트 쌓고 도전할거에요 2018 12.30