Documentation
¶
Overview ¶
Package audit 提供 Hexagon AI Agent 框架的审计日志
支持操作审计记录、敏感操作监控、审计日志查询等功能。
Index ¶
- func ContextWithAuditLogger(ctx context.Context, logger *AuditLogger) context.Context
- func LogFromContext(ctx context.Context, event *AuditEvent)
- type ActionStats
- type Actor
- type ActorStats
- type AuditConfig
- type AuditEvent
- type AuditLevel
- type AuditLogger
- func (l *AuditLogger) AddFilter(filter EventFilter)
- func (l *AuditLogger) AddHook(hook EventHook)
- func (l *AuditLogger) AddWriter(w io.Writer)
- func (l *AuditLogger) GenerateReport(ctx context.Context, start, end time.Time) (*AuditReport, error)
- func (l *AuditLogger) GetBufferOverflowCount() int64
- func (l *AuditLogger) GetStoreFailCount() int64
- func (l *AuditLogger) Log(event *AuditEvent)
- func (l *AuditLogger) LogAgent(actor *Actor, target *Target, action string, result EventResult, ...)
- func (l *AuditLogger) LogAuth(actor *Actor, action string, result EventResult, details map[string]any)
- func (l *AuditLogger) LogError(category EventCategory, actor *Actor, action string, err error, ...)
- func (l *AuditLogger) LogLLM(actor *Actor, provider, model string, result EventResult, ...)
- func (l *AuditLogger) LogSecurity(level AuditLevel, actor *Actor, action string, result EventResult, ...)
- func (l *AuditLogger) LogTool(actor *Actor, toolName string, result EventResult, duration time.Duration, ...)
- func (l *AuditLogger) SetStore(store AuditStore)
- func (l *AuditLogger) Start(ctx context.Context)
- func (l *AuditLogger) Stop()
- type AuditOption
- type AuditQuery
- type AuditReport
- type AuditStore
- type EventCategory
- type EventFilter
- type EventHook
- type EventResult
- type MemoryAuditStore
- func (s *MemoryAuditStore) Cleanup(ctx context.Context, before time.Time) (int64, error)
- func (s *MemoryAuditStore) Count(ctx context.Context, query AuditQuery) (int64, error)
- func (s *MemoryAuditStore) Delete(ctx context.Context, ids []string) error
- func (s *MemoryAuditStore) Query(ctx context.Context, query AuditQuery) ([]*AuditEvent, error)
- func (s *MemoryAuditStore) Save(ctx context.Context, event *AuditEvent) error
- type RequestInfo
- type ResponseInfo
- type Target
- type TimeRange
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ContextWithAuditLogger ¶
func ContextWithAuditLogger(ctx context.Context, logger *AuditLogger) context.Context
ContextWithAuditLogger 将审计日志添加到 context
func LogFromContext ¶
func LogFromContext(ctx context.Context, event *AuditEvent)
LogFromContext 从 context 记录审计事件
Types ¶
type ActionStats ¶
ActionStats 操作统计
type Actor ¶
type Actor struct {
// Type 类型(user/agent/system)
Type string `json:"type"`
// ID 标识
ID string `json:"id"`
// Name 名称
Name string `json:"name"`
// IP IP 地址
IP string `json:"ip,omitempty"`
// UserAgent 用户代理
UserAgent string `json:"user_agent,omitempty"`
// Roles 角色
Roles []string `json:"roles,omitempty"`
}
Actor 执行者
type ActorStats ¶
type ActorStats struct {
ActorID string `json:"actor_id"`
ActorName string `json:"actor_name"`
Count int64 `json:"count"`
}
ActorStats 执行者统计
type AuditConfig ¶
type AuditConfig struct {
// Enabled 是否启用
Enabled bool
// BufferSize 缓冲区大小
BufferSize int
// FlushInterval 刷新间隔
FlushInterval time.Duration
// RetentionDays 保留天数
RetentionDays int
// LogLevel 日志级别
LogLevel AuditLevel
// SensitiveFields 敏感字段(需要脱敏)
SensitiveFields []string
// IncludeDetails 是否包含详细信息
IncludeDetails bool
}
AuditConfig 审计配置
type AuditEvent ¶
type AuditEvent struct {
// ID 事件 ID
ID string `json:"id"`
// Timestamp 时间戳
Timestamp time.Time `json:"timestamp"`
// Level 级别
Level AuditLevel `json:"level"`
// Category 类别
Category EventCategory `json:"category"`
// Action 操作
Action string `json:"action"`
// Actor 执行者
Actor *Actor `json:"actor"`
// Target 目标
Target *Target `json:"target,omitempty"`
// Result 结果
Result EventResult `json:"result"`
// Details 详细信息
Details map[string]any `json:"details,omitempty"`
// Request 请求信息
Request *RequestInfo `json:"request,omitempty"`
// Response 响应信息
Response *ResponseInfo `json:"response,omitempty"`
// Duration 耗时
Duration time.Duration `json:"duration,omitempty"`
// TraceID 追踪 ID
TraceID string `json:"trace_id,omitempty"`
// SpanID Span ID
SpanID string `json:"span_id,omitempty"`
// Tags 标签
Tags []string `json:"tags,omitempty"`
// Metadata 元数据
Metadata map[string]any `json:"metadata,omitempty"`
}
AuditEvent 审计事件
type AuditLevel ¶
type AuditLevel string
AuditLevel 审计级别
const ( LevelDebug AuditLevel = "debug" LevelInfo AuditLevel = "info" LevelWarning AuditLevel = "warning" LevelError AuditLevel = "error" LevelCritical AuditLevel = "critical" )
type AuditLogger ¶
type AuditLogger struct {
// contains filtered or unexported fields
}
AuditLogger 审计日志记录器
func AuditLoggerFromContext ¶
func AuditLoggerFromContext(ctx context.Context) *AuditLogger
AuditLoggerFromContext 从 context 获取审计日志
func NewAuditLogger ¶
func NewAuditLogger(opts ...AuditOption) *AuditLogger
NewAuditLogger 创建审计日志记录器
func (*AuditLogger) GenerateReport ¶
func (l *AuditLogger) GenerateReport(ctx context.Context, start, end time.Time) (*AuditReport, error)
GenerateReport 生成审计报告
func (*AuditLogger) GetBufferOverflowCount ¶
func (l *AuditLogger) GetBufferOverflowCount() int64
GetBufferOverflowCount 获取缓冲区溢出次数
可用于监控审计系统的健康状态
func (*AuditLogger) GetStoreFailCount ¶
func (l *AuditLogger) GetStoreFailCount() int64
GetStoreFailCount 获取存储写入失败次数
与 GetBufferOverflowCount 对称, 可用于监控审计日志落库丢失情况。 storeFailCount 在溢出同步写入 store 失败时累加。
func (*AuditLogger) LogAgent ¶
func (l *AuditLogger) LogAgent(actor *Actor, target *Target, action string, result EventResult, duration time.Duration, details map[string]any)
LogAgent 记录 Agent 事件
func (*AuditLogger) LogAuth ¶
func (l *AuditLogger) LogAuth(actor *Actor, action string, result EventResult, details map[string]any)
LogAuth 记录认证事件
func (*AuditLogger) LogError ¶
func (l *AuditLogger) LogError(category EventCategory, actor *Actor, action string, err error, details map[string]any)
LogError 记录错误事件
func (*AuditLogger) LogLLM ¶
func (l *AuditLogger) LogLLM(actor *Actor, provider, model string, result EventResult, duration time.Duration, tokenUsage map[string]int)
LogLLM 记录 LLM 调用事件
func (*AuditLogger) LogSecurity ¶
func (l *AuditLogger) LogSecurity(level AuditLevel, actor *Actor, action string, result EventResult, details map[string]any)
LogSecurity 记录安全事件
func (*AuditLogger) LogTool ¶
func (l *AuditLogger) LogTool(actor *Actor, toolName string, result EventResult, duration time.Duration, details map[string]any)
LogTool 记录工具调用事件
func (*AuditLogger) Stop ¶
func (l *AuditLogger) Stop()
Stop 停止审计日志
在锁内同时设置 running=false 和关闭 buffer,确保原子性。 这样 Log() 方法在检查 running 状态时不会向已关闭的 channel 发送。
type AuditQuery ¶
type AuditQuery struct {
// StartTime 开始时间
StartTime time.Time
// EndTime 结束时间
EndTime time.Time
// Categories 类别
Categories []EventCategory
// Levels 级别
Levels []AuditLevel
// ActorID 执行者 ID
ActorID string
// TargetID 目标 ID
TargetID string
// Action 操作
Action string
// Result 结果
Result EventResult
// TraceID 追踪 ID
TraceID string
// Tags 标签
Tags []string
// Limit 限制
Limit int
// Offset 偏移
Offset int
// OrderBy 排序
OrderBy string
// OrderDesc 降序
OrderDesc bool
}
AuditQuery 审计查询
type AuditReport ¶
type AuditReport struct {
// Period 时间段
Period TimeRange `json:"period"`
// TotalEvents 总事件数
TotalEvents int64 `json:"total_events"`
// ByCategory 按类别统计
ByCategory map[EventCategory]int64 `json:"by_category"`
// ByLevel 按级别统计
ByLevel map[AuditLevel]int64 `json:"by_level"`
// ByResult 按结果统计
ByResult map[EventResult]int64 `json:"by_result"`
// TopActors 最活跃执行者
TopActors []ActorStats `json:"top_actors"`
// TopActions 最常见操作
TopActions []ActionStats `json:"top_actions"`
// Errors 错误列表
Errors []*AuditEvent `json:"errors,omitempty"`
// GeneratedAt 生成时间
GeneratedAt time.Time `json:"generated_at"`
}
AuditReport 审计报告
type AuditStore ¶
type AuditStore interface {
// Save 保存事件
Save(ctx context.Context, event *AuditEvent) error
// Query 查询事件
Query(ctx context.Context, query AuditQuery) ([]*AuditEvent, error)
// Count 统计事件数量
Count(ctx context.Context, query AuditQuery) (int64, error)
// Delete 删除事件
Delete(ctx context.Context, ids []string) error
// Cleanup 清理过期事件
Cleanup(ctx context.Context, before time.Time) (int64, error)
}
AuditStore 审计存储接口
type EventCategory ¶
type EventCategory string
EventCategory 事件类别
const ( CategoryAuth EventCategory = "auth" CategoryAgent EventCategory = "agent" CategoryTool EventCategory = "tool" CategoryLLM EventCategory = "llm" CategoryMemory EventCategory = "memory" CategoryWorkflow EventCategory = "workflow" CategoryNetwork EventCategory = "network" CategorySecurity EventCategory = "security" CategoryConfig EventCategory = "config" CategoryAdmin EventCategory = "admin" )
type EventFilter ¶
type EventFilter func(*AuditEvent) bool
EventFilter 事件过滤器
func FilterByCategory ¶
func FilterByCategory(categories ...EventCategory) EventFilter
FilterByCategory 按类别过滤
type EventResult ¶
type EventResult string
EventResult 事件结果
const ( ResultSuccess EventResult = "success" ResultFailure EventResult = "failure" ResultDenied EventResult = "denied" ResultError EventResult = "error" )
type MemoryAuditStore ¶
type MemoryAuditStore struct {
// contains filtered or unexported fields
}
MemoryAuditStore 内存审计存储
func (*MemoryAuditStore) Count ¶
func (s *MemoryAuditStore) Count(ctx context.Context, query AuditQuery) (int64, error)
Count 统计数量
func (*MemoryAuditStore) Delete ¶
func (s *MemoryAuditStore) Delete(ctx context.Context, ids []string) error
Delete 删除事件
func (*MemoryAuditStore) Query ¶
func (s *MemoryAuditStore) Query(ctx context.Context, query AuditQuery) ([]*AuditEvent, error)
Query 查询事件
func (*MemoryAuditStore) Save ¶
func (s *MemoryAuditStore) Save(ctx context.Context, event *AuditEvent) error
Save 保存事件
type RequestInfo ¶
type RequestInfo struct {
// Method 方法
Method string `json:"method,omitempty"`
// Path 路径
Path string `json:"path,omitempty"`
// Query 查询参数
Query map[string]string `json:"query,omitempty"`
// Headers 请求头
Headers map[string]string `json:"headers,omitempty"`
// Body 请求体(脱敏后)
Body any `json:"body,omitempty"`
}
RequestInfo 请求信息
type ResponseInfo ¶
type ResponseInfo struct {
// StatusCode 状态码
StatusCode int `json:"status_code,omitempty"`
// Body 响应体(脱敏后)
Body any `json:"body,omitempty"`
// Error 错误信息
Error string `json:"error,omitempty"`
}
ResponseInfo 响应信息