mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-02 11:29:17 +00:00
3cfe867dff
* feat(kms): add a disaster-recovery drill harness for the Local backend Rehearse the full backup/restore loop offline and return machine-readable evidence: seed a sandbox deployment, seal sample objects through the production encryption path, export a bundle, destroy the persistence layer, preflight, restore, and decrypt every pre-disaster object again. The evidence records the measured recovery point (one key is written past the snapshot fence and must stay unrecoverable), the recovery time by phase, the manifest digest before and after, and whether the restore treated its bundle as read-only. * test(kms): drill the Local disaster matrix and the interrupted cutover Runs the harness against total key-directory loss, salt loss, and a torn key record, asserting every pre-disaster object decrypts again while work past the snapshot fence stays lost. Two further legs crash a restore exactly at its commit point and prove the published marker names the bundle and the files it still owes, then that re-running rolls forward and aborting rolls back. The Vault leg needs a real server and is ignored by default: a Vault bundle never carries the non-exportable Transit root, so what it drills is the refusal to proceed before the operator has restored it natively. * feat(kms): add an operator entry point for the disaster-recovery drill Runs one rehearsal from environment configuration and writes the evidence bundle, exiting non-zero on a failed verdict so a scheduled drill fails its job instead of filing a bad report. It reads the same backup-KEK variables as the admin backup API: drilling with the KEK real bundles are sealed under is what proves that KEK is still retrievable. * docs(kms): add the disaster-recovery drill runbook Documents the procedure the harness automates: what a drill measures and why the object probe rather than the manifest digest is the acceptance criterion, the per-backend responsibility split, the disaster matrix, how to read the evidence bundle, the two interrupted-cutover outcomes, and the Vault variant whose cryptographic root comes back through Vault's own flow. * chore(typos): accept RTO as a disaster-recovery term
56 lines
1.7 KiB
TOML
56 lines
1.7 KiB
TOML
[default]
|
|
# # Ignore specific spell checking patterns
|
|
# extend-ignore-identifiers-re = [
|
|
# # Ignore common patterns in base64 encoding and hash values
|
|
# "[A-Za-z0-9+/]{8,}={0,2}", # base64 encoding
|
|
# "[A-Fa-f0-9]{8,}", # hexadecimal hash
|
|
# "[A-Za-z0-9_-]{20,}", # long random strings
|
|
# ]
|
|
|
|
# # Ignore specific regex patterns in content
|
|
# extend-ignore-re = [
|
|
# # Ignore hash values and encoded strings (base64 patterns)
|
|
# "(?i)[A-Za-z0-9+/]{8,}={0,2}",
|
|
# # Ignore long strings in quotes (usually hash or base64)
|
|
# '"[A-Za-z0-9+/=_-]{8,}"',
|
|
# # Ignore IV values and similar cryptographic strings
|
|
# '"[A-Za-z0-9+/=]{12,}"',
|
|
# # Ignore cryptographic signatures and keys (including partial strings)
|
|
# "[A-Za-z0-9+/]{6,}[A-Za-z0-9+/=]*",
|
|
# # Ignore base64-like strings in comments (common in examples)
|
|
# "//.*[A-Za-z0-9+/]{8,}[A-Za-z0-9+/=]*",
|
|
# ]
|
|
extend-ignore-re = [
|
|
# Ignore long strings in quotes (usually hash or base64)
|
|
'"[A-Za-z0-9+/=_-]{32,}"',
|
|
# Ignore IV values and similar cryptographic strings
|
|
'"[A-Za-z0-9+/=]{12,}"',
|
|
# Ignore cryptographic signatures and keys (including partial strings)
|
|
"[A-Za-z0-9+/]{16,}[A-Za-z0-9+/=]*",
|
|
]
|
|
|
|
[default.extend-words]
|
|
bui = "bui"
|
|
typ = "typ"
|
|
clen = "clen"
|
|
datas = "datas"
|
|
bre = "bre"
|
|
abd = "abd"
|
|
mak = "mak"
|
|
gae = "gae"
|
|
GAE = "GAE"
|
|
thr = "thr"
|
|
# s3-tests original test names (cannot be changed)
|
|
nonexisted = "nonexisted"
|
|
consts = "consts"
|
|
# Swift API - company/product names
|
|
Hashi = "Hashi" # HashiCorp
|
|
# Accept alternate spelling used in parser/XML comments.
|
|
unparseable = "unparseable"
|
|
# Disaster-recovery objectives: recovery time and recovery point.
|
|
RTO = "RTO"
|
|
rto = "rto"
|
|
|
|
[files]
|
|
extend-exclude = []
|