mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-11 07:36:53 +00:00
cd327c81f5
Addresses security/correctness audit findings in the target-plugin control plane, TLS reload coordinator, and runtime extension registries. control_plane (backlog#977): - Install now preserves the currently installed revision as previous_revision so Rollback actually restores the prior version instead of a no-op. - Split the gate: circuit-breaker and runtime-activation checks apply only to Install/Enable; Disable and Rollback stay available as break-glass remediation while the breaker is open. - Enforce the sidecar runtime protocol version for every external transport (previously skippable by declaring a non-gRPC transport) and validate the plugin api_compatibility_version at planning time. - Download/signature/provenance host allowlisting now matches the full host authority, so an allowlisted host never implicitly authorizes a different host:port. TLS reload coordinator/validate (backlog#981, #970-coordinator): - Compute the fingerprint before building material in register() to remove the TOCTOU that could permanently pin an old certificate; rotation self-heals. - Always start a detection loop when reload is enabled; Watch mode no longer returns success without any loop. - validate_cert_key_pairing now verifies the private key matches the certificate's public key instead of only parsing both files. - Normalize a zero poll interval to a positive minimum to avoid a panic that silently killed the poll loop. - Serialize reload cycles with a per-target mutex; a first-step fingerprint read failure now records last_error and a failure metric. - Duplicate label registration stops and joins the previous loop before publishing the replacement (stop-before-start), preventing orphaned loops. runtime extension points (backlog#983 runtime subset): - ops_profiler/ops_diagnostics authorize before probing the registry so an unauthorized caller cannot learn whether a backend/surface exists. - s3_hooks dispatch_post_auth actually traverses the registered hooks for the point instead of unconditionally returning Continue. - sidecar send_with_timeout redacts errors and uses the configurable failure threshold via policy, and a successful send resets the breaker accounting. Relates to rustfs/backlog#977 Relates to rustfs/backlog#981 Relates to rustfs/backlog#970 Relates to rustfs/backlog#983 Co-authored-by: heihutu <heihutu@gmail.com>
66 lines
2.2 KiB
TOML
66 lines
2.2 KiB
TOML
[package]
|
|
name = "rustfs-targets"
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
repository.workspace = true
|
|
rust-version.workspace = true
|
|
version.workspace = true
|
|
homepage.workspace = true
|
|
description = "Notification target abstraction and implementations for RustFS"
|
|
keywords = ["file-system", "notification", "target", "rustfs", "Minio"]
|
|
categories = ["web-programming", "development-tools", "filesystem"]
|
|
documentation = "https://docs.rs/rustfs-targets/latest/rustfs_targets/"
|
|
|
|
[dependencies]
|
|
rustfs-config = { workspace = true, features = ["notify", "constants", "audit", "server-config-model"] }
|
|
rustfs-extension-schema = { workspace = true }
|
|
rustfs-tls-runtime = { workspace = true }
|
|
rustfs-s3-types = { workspace = true }
|
|
rustfs-utils = { workspace = true, features = ["egress"] }
|
|
async-trait = { workspace = true }
|
|
async-nats = { workspace = true }
|
|
deadpool-postgres = { workspace = true }
|
|
hyper = { workspace = true }
|
|
hyper-rustls = { workspace = true }
|
|
lapin = { workspace = true }
|
|
libc = { workspace = true }
|
|
pulsar = { workspace = true }
|
|
regex = { workspace = true }
|
|
reqwest = { workspace = true }
|
|
rumqttc = { workspace = true }
|
|
redis = { workspace = true }
|
|
rustls = { workspace = true }
|
|
rustls-native-certs = { workspace = true }
|
|
s3s = { workspace = true }
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
snap = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
tokio = { workspace = true, features = ["fs", "rt-multi-thread", "sync", "time"] }
|
|
tokio-postgres = { workspace = true }
|
|
tokio-postgres-rustls = { workspace = true }
|
|
tracing = { workspace = true }
|
|
url = { workspace = true }
|
|
urlencoding = { workspace = true }
|
|
uuid = { workspace = true, features = ["v4", "serde"] }
|
|
sysinfo = { workspace = true, features = ["multithread"] }
|
|
rustfs-kafka-async = { workspace = true }
|
|
mysql_async = { workspace = true }
|
|
chrono = { workspace = true }
|
|
parking_lot = { workspace = true }
|
|
hashbrown = { workspace = true }
|
|
arc-swap = { workspace = true }
|
|
metrics = { workspace = true }
|
|
|
|
[dev-dependencies]
|
|
criterion = { workspace = true }
|
|
tempfile = { workspace = true }
|
|
rcgen = { workspace = true }
|
|
|
|
[[bench]]
|
|
name = "queue_store_benchmark"
|
|
harness = false
|
|
|
|
[lints]
|
|
workspace = true
|