1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
[]
# Check the full target graph (no target filtering).
= false
[]
= ["https://github.com/rustsec/advisory-db"]
# Fail the build on any active advisory or yanked dep. Use `ignore` to
# pin specific advisory IDs after a documented decision.
= "deny"
= [
# RUSTSEC-2023-0071 — rsa 0.9.x Marvin timing sidechannel (medium 5.9).
# Transitive via kunobi-auth (ssh-key, openidconnect). No fixed `rsa`
# release exists ("Solution: No fixed
# upgrade is available!"). Re-evaluate when rsa >= 0.10 ships a
# constant-time implementation. NOTE: only reachable through
# `kache-service`, so cargo-deny must be run per workspace member (a
# root-only invocation graphs the `kache` bin alone and misses it).
"RUSTSEC-2023-0071",
]
[]
# Multiple versions of the same crate inflate binary size and signal
# upgrade churn. Warn (not deny) — perfect uniqueness is impractical in a
# graph this size (aws-sdk + kube pull wide trees).
= "warn"
= "deny"
# kache-service's path dep (kache-core) and first-party git deps
# (kunobi-auth, kunobi-ha) carry no version req, which cargo-deny counts
# as a wildcard. Permit wildcards for path/git deps of unpublished crates
# only; registry wildcards stay denied.
= true
= []
= []
= []
[]
# Permissive licenses we're happy to ship under Apache-2.0.
= [
"Apache-2.0",
"Apache-2.0 WITH LLVM-exception",
"MIT",
"MIT-0",
"BSD-2-Clause",
"BSD-3-Clause",
"ISC",
"Zlib",
"Unicode-3.0",
"Unicode-DFS-2016",
"CC0-1.0",
"MPL-2.0",
"NCSA", # libfuzzer-sys
"Unlicense",
# kache's larger tree pulls these permissive licenses that the kunobi
# repos' smaller graphs never reach:
"0BSD", # doctest-file, recvmsg (via interprocess)
"CDLA-Permissive-2.0", # webpki-root-certs (via reqwest -> rustls-platform-verifier)
]
= 0.93
# No exceptions. The planner used to embed surrealdb, whose crates ship under
# the Business Source License rather than an OSI-permissive one and needed a
# per-crate BUSL-1.1 carve-out here. Moving the planner to SQLite took the
# whole tree back to the permissive list above; keep it that way.
= []
[]
= "deny"
= "deny"
= ["https://github.com/rust-lang/crates.io-index"]
# First-party dependencies.
= [
"https://github.com/kunobi-ninja/kunobi-ha.git",
]