Checklist

Legend: 🔒 Must have, ⭐ī¸ Should have, 👍 Nice to have, ℹī¸ Info

Manage dependencies

  • 🔒 Transitive dependencies number is minimized by selecting only the required features (DEPS-FEATURES)
  • 🔒 Dependencies are vetted (DEPS-ASSESS)
  • 👍 Dependencies are reviewed using cargo vet (DEPS-VET)
  • 🔒 Known vulnerabilities and unmaintained crates are regularly checked (DEPS-VULNS)
  • 🔒 Dependencies are kept up-to-date (DEPS-UPDATES)

Maintain a crate

  • Sources of binary programs include necessary information to make the builds consistent
    • 🔒 The Cargo.lock file is committed to your repository (when developing binary programs) (MAINTAIN-LOCK)
    • 👍 The rust-toolchain.toml file is committed to your repository (when developing binary programs) (MAINTAIN-TOOLCHAIN)
  • 🔒 Crate features allow to only include transitive dependencies required for a given use case (MAINTAIN-FEATURES)
  • Maintaining a -sys crate building C/C++ code
    • ⭐ī¸ Provide flags to control the behavior (MAINTAIN-SRCFLAG) { #MAINTAIN-SRCFLAG }
    • ⭐ī¸ Use a dedicated -src crate (MAINTAIN-SRCCRATE) { #MAINTAIN-SRCCRATE }
  • 🔒 Known vulnerabilities are reported to RustSec (MAINTAIN-VULNS)
  • Publication access to crates.io is secured
  • ⭐ī¸ Apply code security best practices (MAINTAIN-CODESEC)

Build for production

Run in production

  • ⭐ī¸ Production artifacts are regularly checked for vulnerabilities (PROD-AUDIT)