Documentation
¶
Overview ¶
Package audit 提供操作审计日志:结构化记录"谁在何时对什么资源做了什么操作", 仅记录成功的请求(失败请求走普通日志),用于合规与运维审计。
设计要点:
- gRPC/HTTP 拦截器在 handler 成功后写一条 AuditEntry;
- Entry 含 Resource + Action 枚举 + UserID + 结构化 Metadata;
- 仅 err==nil 且状态码 < 500 才记(失败由 logger 负责);
- 异步写入 Sink(如 DB/文件),不阻塞响应。
与 pkg/logger 的区别:logger 记运行时事件(含错误),audit 只记"成功的敏感操作" 且字段固定(Resource/Action),便于按操作类型检索与合规导出。
零值不可用,用 New 构造。Audit 并发安全。
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func UserIDFromCtx ¶
UserIDFromCtx 从 ctx 读出 WithUserID 注入的 userID。无则返回空串。
Types ¶
type Audit ¶
type Audit struct {
// contains filtered or unexported fields
}
Audit 管理审计条目的收集与异步分发。
func (*Audit) HTTPMiddleware ¶
func (a *Audit) HTTPMiddleware(resolver func(*http.Request) (Resource, string, string)) func(http.Handler) http.Handler
HTTPMiddleware 返回 HTTP 中间件:仅在响应状态码 < 500 时记一条审计。 resource/resourceID 由 resolver 从请求中提取;resolver 为 nil 则不记录。
type Entry ¶
type Entry struct {
ID int64 // 单调递增
Time time.Time // 操作发生时间
UserID string // 操作者
Resource Resource // 被操作资源类型
ResourceID string // 被操作资源 ID(如用户 ID、配置名)
Action Action // 操作类型
Method string // HTTP 方法 / gRPC 方法
Path string // HTTP 路径 / gRPC FullMethod
Status int // HTTP 状态码 / gRPC OK=0
Metadata string // 业务自定义 JSON 等编码
}
Entry 是一条审计记录。创建后不可变。
type Option ¶
type Option func(*config)
Option 配置 Audit。
func WithQueueSize ¶
WithQueueSize 设置异步队列长度。满时丢弃最旧条目并记一条丢弃计数(默认 1024)。
Click to show internal directories.
Click to hide internal directories.