RustFS rustfs-audit Complete Implementation with Enterprise Observability (#557)

* Initial plan

* Implement core audit system with multi-target fan-out and configuration management

Co-authored-by: houseme <4829346+houseme@users.noreply.github.com>

* Changes before error encountered

Co-authored-by: houseme <4829346+houseme@users.noreply.github.com>

* Complete audit system with comprehensive observability and test coverage

Co-authored-by: houseme <4829346+houseme@users.noreply.github.com>

* improve code

* fix

* improve code

* fix test

* fix test

* fix

* add `rustfs-audit` to `rustfs`

* upgrade crate version

* fmt

* fmt

* fix

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: houseme <4829346+houseme@users.noreply.github.com>
Co-authored-by: houseme <housemecn@gmail.com>
This commit is contained in:
Copilot
2025-09-24 08:23:46 +08:00
committed by GitHub
parent 08aeca89ef
commit 29b0935be7
45 changed files with 4139 additions and 313 deletions
Generated
+88 -82
View File
@@ -217,9 +217,9 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
[[package]]
name = "arrow"
version = "56.1.0"
version = "56.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c26b57282a08ae92f727497805122fec964c6245cfa0e13f0e75452eaf3bc41f"
checksum = "6e833808ff2d94ed40d9379848a950d995043c7fb3e81a30b383f4c6033821cc"
dependencies = [
"arrow-arith",
"arrow-array",
@@ -238,9 +238,9 @@ dependencies = [
[[package]]
name = "arrow-arith"
version = "56.1.0"
version = "56.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cebf38ca279120ff522f4954b81a39527425b6e9f615e6b72842f4de1ffe02b8"
checksum = "ad08897b81588f60ba983e3ca39bda2b179bdd84dced378e7df81a5313802ef8"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -252,9 +252,9 @@ dependencies = [
[[package]]
name = "arrow-array"
version = "56.1.0"
version = "56.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "744109142cdf8e7b02795e240e20756c2a782ac9180d4992802954a8f871c0de"
checksum = "8548ca7c070d8db9ce7aa43f37393e4bfcf3f2d3681df278490772fd1673d08d"
dependencies = [
"ahash",
"arrow-buffer",
@@ -263,15 +263,15 @@ dependencies = [
"chrono",
"chrono-tz",
"half",
"hashbrown 0.15.5",
"hashbrown 0.16.0",
"num",
]
[[package]]
name = "arrow-buffer"
version = "56.1.0"
version = "56.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "601bb103c4c374bcd1f62c66bcea67b42a2ee91a690486c37d4c180236f11ccc"
checksum = "e003216336f70446457e280807a73899dd822feaf02087d31febca1363e2fccc"
dependencies = [
"bytes",
"half",
@@ -280,9 +280,9 @@ dependencies = [
[[package]]
name = "arrow-cast"
version = "56.1.0"
version = "56.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eed61d9d73eda8df9e3014843def37af3050b5080a9acbe108f045a316d5a0be"
checksum = "919418a0681298d3a77d1a315f625916cb5678ad0d74b9c60108eb15fd083023"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -301,9 +301,9 @@ dependencies = [
[[package]]
name = "arrow-csv"
version = "56.1.0"
version = "56.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fa95b96ce0c06b4d33ac958370db8c0d31e88e54f9d6e08b0353d18374d9f991"
checksum = "bfa9bf02705b5cf762b6f764c65f04ae9082c7cfc4e96e0c33548ee3f67012eb"
dependencies = [
"arrow-array",
"arrow-cast",
@@ -316,9 +316,9 @@ dependencies = [
[[package]]
name = "arrow-data"
version = "56.1.0"
version = "56.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "43407f2c6ba2367f64d85d4603d6fb9c4b92ed79d2ffd21021b37efa96523e12"
checksum = "a5c64fff1d142f833d78897a772f2e5b55b36cb3e6320376f0961ab0db7bd6d0"
dependencies = [
"arrow-buffer",
"arrow-schema",
@@ -328,9 +328,9 @@ dependencies = [
[[package]]
name = "arrow-ipc"
version = "56.1.0"
version = "56.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e4b0487c4d2ad121cbc42c4db204f1509f8618e589bc77e635e9c40b502e3b90"
checksum = "1d3594dcddccc7f20fd069bc8e9828ce37220372680ff638c5e00dea427d88f5"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -344,9 +344,9 @@ dependencies = [
[[package]]
name = "arrow-json"
version = "56.1.0"
version = "56.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "26d747573390905905a2dc4c5a61a96163fe2750457f90a04ee2a88680758c79"
checksum = "88cf36502b64a127dc659e3b305f1d993a544eab0d48cce704424e62074dc04b"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -366,9 +366,9 @@ dependencies = [
[[package]]
name = "arrow-ord"
version = "56.1.0"
version = "56.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c142a147dceb59d057bad82400f1693847c80dca870d008bf7b91caf902810ae"
checksum = "3c8f82583eb4f8d84d4ee55fd1cb306720cddead7596edce95b50ee418edf66f"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -379,9 +379,9 @@ dependencies = [
[[package]]
name = "arrow-row"
version = "56.1.0"
version = "56.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dac6620667fccdab4204689ca173bd84a15de6bb6b756c3a8764d4d7d0c2fc04"
checksum = "9d07ba24522229d9085031df6b94605e0f4b26e099fb7cdeec37abd941a73753"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -392,9 +392,9 @@ dependencies = [
[[package]]
name = "arrow-schema"
version = "56.1.0"
version = "56.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dfa93af9ff2bb80de539e6eb2c1c8764abd0f4b73ffb0d7c82bf1f9868785e66"
checksum = "b3aa9e59c611ebc291c28582077ef25c97f1975383f1479b12f3b9ffee2ffabe"
dependencies = [
"serde",
"serde_json",
@@ -402,9 +402,9 @@ dependencies = [
[[package]]
name = "arrow-select"
version = "56.1.0"
version = "56.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "be8b2e0052cd20d36d64f32640b68a5ab54d805d24a473baee5d52017c85536c"
checksum = "8c41dbbd1e97bfcaee4fcb30e29105fb2c75e4d82ae4de70b792a5d3f66b2e7a"
dependencies = [
"ahash",
"arrow-array",
@@ -416,9 +416,9 @@ dependencies = [
[[package]]
name = "arrow-string"
version = "56.1.0"
version = "56.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2155e26e17f053c8975c546fc70cf19c00542f9abf43c23a88a46ef7204204f"
checksum = "53f5183c150fbc619eede22b861ea7c0eebed8eaac0333eaa7f6da5205fd504d"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -1552,11 +1552,12 @@ checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75"
[[package]]
name = "comfy-table"
version = "7.2.1"
version = "7.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b03b7db8e0b4b2fdad6c551e634134e99ec000e5c8c3b6856c65e8bbaded7a3b"
checksum = "e0d05af1e006a2407bedef5af410552494ce5be9090444dbbcb57258c1af3d56"
dependencies = [
"unicode-segmentation",
"strum 0.26.3",
"strum_macros 0.26.4",
"unicode-width",
]
@@ -3136,9 +3137,9 @@ dependencies = [
[[package]]
name = "flexi_logger"
version = "0.31.2"
version = "0.31.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "759bfa52db036a2db54f0b5f0ff164efa249b3014720459c5ea4198380c529bc"
checksum = "ff38b61724dd492b5171d5dbb0921dfc8e859022c5993b22f80f74e9afe6d573"
dependencies = [
"chrono",
"crossbeam-channel",
@@ -3302,20 +3303,6 @@ dependencies = [
"slab",
]
[[package]]
name = "generator"
version = "0.8.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "605183a538e3e2a9c1038635cc5c2d194e2ee8fd0d1b66b8349fad7dbacce5a2"
dependencies = [
"cc",
"cfg-if",
"libc",
"log",
"rustversion",
"windows",
]
[[package]]
name = "generic-array"
version = "0.14.7"
@@ -4202,9 +4189,9 @@ checksum = "2c4a545a15244c7d945065b5d392b2d2d7f21526fba56ce51467b06ed445e8f7"
[[package]]
name = "libc"
version = "0.2.175"
version = "0.2.176"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543"
checksum = "58f929b4d672ea937a23a1ab494143d968337a5f47e56d0815df1e0890ddf174"
[[package]]
name = "libloading"
@@ -4332,19 +4319,6 @@ dependencies = [
"value-bag",
]
[[package]]
name = "loom"
version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca"
dependencies = [
"cfg-if",
"generator",
"scoped-tls",
"tracing",
"tracing-subscriber",
]
[[package]]
name = "lru"
version = "0.12.5"
@@ -4518,23 +4492,22 @@ dependencies = [
[[package]]
name = "moka"
version = "0.12.10"
version = "0.12.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a9321642ca94a4282428e6ea4af8cc2ca4eac48ac7a6a4ea8f33f76d0ce70926"
checksum = "8261cd88c312e0004c1d51baad2980c66528dfdb2bee62003e643a4d8f86b077"
dependencies = [
"async-lock",
"crossbeam-channel",
"crossbeam-epoch",
"crossbeam-utils",
"equivalent",
"event-listener",
"futures-util",
"loom",
"parking_lot",
"portable-atomic",
"rustc_version",
"smallvec",
"tagptr",
"thiserror 1.0.69",
"uuid",
]
@@ -4904,9 +4877,9 @@ dependencies = [
[[package]]
name = "object_store"
version = "0.12.3"
version = "0.12.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "efc4f07659e11cd45a341cd24d71e683e3be65d9ff1f8150061678fe60437496"
checksum = "4c1be0c6c22ec0817cdc77d3842f721a17fd30ab6965001415b5402a74e6b740"
dependencies = [
"async-trait",
"bytes",
@@ -5115,9 +5088,9 @@ dependencies = [
[[package]]
name = "parquet"
version = "56.1.0"
version = "56.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "89b56b41d1bd36aae415e42f91cae70ee75cf6cba74416b14dce3e958d5990ec"
checksum = "f0dbd48ad52d7dccf8ea1b90a3ddbfaea4f69878dd7683e51c507d4bc52b5b27"
dependencies = [
"ahash",
"arrow-array",
@@ -5134,7 +5107,7 @@ dependencies = [
"flate2",
"futures",
"half",
"hashbrown 0.15.5",
"hashbrown 0.16.0",
"lz4_flex",
"num",
"num-bigint",
@@ -6242,6 +6215,7 @@ dependencies = [
"rust-embed",
"rustfs-ahm",
"rustfs-appauth",
"rustfs-audit",
"rustfs-common",
"rustfs-config",
"rustfs-ecstore",
@@ -6326,6 +6300,25 @@ dependencies = [
"serde_json",
]
[[package]]
name = "rustfs-audit"
version = "0.0.5"
dependencies = [
"chrono",
"futures",
"once_cell",
"rumqttc",
"rustfs-config",
"rustfs-ecstore",
"rustfs-targets",
"serde",
"serde_json",
"thiserror 2.0.16",
"tokio",
"tracing",
"url",
]
[[package]]
name = "rustfs-checksums"
version = "0.0.5"
@@ -6662,7 +6655,7 @@ dependencies = [
"rustfs-crypto",
"serde",
"serde_json",
"strum",
"strum 0.27.2",
"test-case",
"thiserror 2.0.16",
"time",
@@ -7157,12 +7150,6 @@ dependencies = [
"syn 2.0.106",
]
[[package]]
name = "scoped-tls"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"
[[package]]
name = "scopeguard"
version = "1.2.0"
@@ -7733,13 +7720,32 @@ version = "0.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
[[package]]
name = "strum"
version = "0.26.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06"
[[package]]
name = "strum"
version = "0.27.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf"
dependencies = [
"strum_macros",
"strum_macros 0.27.2",
]
[[package]]
name = "strum_macros"
version = "0.26.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be"
dependencies = [
"heck",
"proc-macro2",
"quote",
"rustversion",
"syn 2.0.106",
]
[[package]]
@@ -7981,9 +7987,9 @@ dependencies = [
[[package]]
name = "tempfile"
version = "3.22.0"
version = "3.23.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "84fa4d11fadde498443cca10fd3ac23c951f0dc59e080e9f4b93d4df4e4eea53"
checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16"
dependencies = [
"fastrand",
"getrandom 0.3.3",