UpdatePolicy 更新策略
(policy *SecurityPolicy)
| 487 | |
| 488 | // UpdatePolicy 更新策略 |
| 489 | func (bpe *BasicPolicyEngine) UpdatePolicy(policy *SecurityPolicy) error { |
| 490 | bpe.mu.Lock() |
| 491 | defer bpe.mu.Unlock() |
| 492 | |
| 493 | if policy.ID == "" { |
| 494 | return errors.New("policy ID is required") |
| 495 | } |
| 496 | |
| 497 | existing, exists := bpe.policies[policy.ID] |
| 498 | if !exists { |
| 499 | return fmt.Errorf("policy %s not found", policy.ID) |
| 500 | } |
| 501 | |
| 502 | // 更新时间戳 |
| 503 | policy.UpdatedAt = time.Now() |
| 504 | policy.CreatedAt = existing.CreatedAt // 保持创建时间 |
| 505 | policy.CreatedBy = existing.CreatedBy // 保持创建者 |
| 506 | |
| 507 | bpe.policies[policy.ID] = policy |
| 508 | |
| 509 | // 记录审计日志 |
| 510 | if bpe.config.EnableAudit && bpe.auditLog != nil { |
| 511 | _ = bpe.auditLog.LogEvent(AuditEvent{ |
| 512 | Type: AuditTypePolicyUpdated, |
| 513 | UserID: policy.UpdatedBy, |
| 514 | Timestamp: time.Now(), |
| 515 | Message: fmt.Sprintf("Policy %s (%s) updated", policy.ID, policy.Name), |
| 516 | Metadata: map[string]any{ |
| 517 | "policy_id": policy.ID, |
| 518 | "policy_name": policy.Name, |
| 519 | "policy_version": policy.Version, |
| 520 | }, |
| 521 | }) |
| 522 | } |
| 523 | |
| 524 | return nil |
| 525 | } |
| 526 | |
| 527 | // DeletePolicy 删除策略 |
| 528 | func (bpe *BasicPolicyEngine) DeletePolicy(policyID string) error { |