跳至主要内容

✨ 审计日志

作为代理管理员,您可以查看实体(密钥、团队、用户、模型)是在何时创建、更新、删除或重新生成的,以及是谁执行了这些操作。这对于审计和合规性非常有用。

LiteLLM 会追踪以下实体和操作的变更

  • 实体: 密钥 (Keys)、团队 (Teams)、用户 (Users)、模型 (Models)
  • 操作: 创建 (Create)、更新 (Update)、删除 (Delete)、重新生成 (Regenerate)
提示

需要企业版许可证,请点击此处与我们联系

用法

1. 开启审计日志

store_audit_logs 添加到您的 litellm config.yaml 中,然后启动代理

litellm_settings:
store_audit_logs: true

2. 对实体进行更改

在本例中,我们将删除一个密钥。

curl -X POST 'http://0.0.0.0:4000/key/delete' \
-H 'Authorization: Bearer sk-1234' \
-H 'Content-Type: application/json' \
-d '{
"key": "d5265fc73296c8fea819b4525590c99beab8c707e465afdf60dab57e1fa145e4"
}'

3. 在 LiteLLM UI 上查看审计日志

在 LiteLLM UI 上,导航至“Logs”(日志)-> “Audit Logs”(审计日志)。您应该能看到密钥删除的审计日志。

将审计日志导出到外部存储

除了将审计日志存储在数据库中外,您还可以将其导出到外部存储后端(例如 S3)。日志会进行批处理并异步上传,因此不会阻塞您的代理请求。

S3 示例

litellm_settings 中添加 audit_log_callbackss3_callback_params

litellm_settings:
store_audit_logs: true
audit_log_callbacks: ["s3_v2"]
s3_callback_params:
s3_bucket_name: my-audit-logs-bucket # AWS Bucket Name
s3_region_name: us-west-2 # AWS Region
s3_aws_access_key_id: os.environ/AWS_ACCESS_KEY_ID
s3_aws_secret_access_key: os.environ/AWS_SECRET_ACCESS_KEY
s3_path: litellm-audit # [OPTIONAL] prefix path in the bucket

审计日志将以 JSON 文件形式写入到

s3://<bucket>/audit_logs/<YYYY-MM-DD>/<HH-MM-SS>_<audit-log-id>.json
# or, when s3_path is set:
s3://<bucket>/<s3_path>/audit_logs/<YYYY-MM-DD>/<HH-MM-SS>_<audit-log-id>.json
信息

必须同时设置 store_audit_logs: trueaudit_log_callbacks。如果未启用 store_audit_logs,回调将不会触发。

高级

用户属性管理变更

代表用户调用管理端点。(在将代理连接到您的开发平台时非常有用)。

1. 在请求头中设置 LiteLLM-Changed-By

调用管理端点时,在请求头中设置 'user_id'。查看完整列表

  • 使用主密钥更新团队预算。
  • 属性变更归属至 'krrish@berri.ai'。

👉 关键点: 传入 -H 'LiteLLM-Changed-By: krrish@berri.ai'

curl -X POST 'http://0.0.0.0:4000/team/update' \
-H 'Authorization: Bearer sk-1234' \
-H 'LiteLLM-Changed-By: krrish@berri.ai' \
-H 'Content-Type: application/json' \
-d '{
"team_id" : "8bf18b11-7f52-4717-8e1f-7c65f9d01e52",
"max_budget": 2000
}'

2. 已发出的审计日志

{
"id": "bd136c28-edd0-4cb6-b963-f35464cf6f5a",
"updated_at": "2024-06-08 23:41:14.793",
"changed_by": "krrish@berri.ai", # 👈 CHANGED BY
"changed_by_api_key": "example-api-key-123",
"action": "updated",
"table_name": "LiteLLM_TeamTable",
"object_id": "8bf18b11-7f52-4717-8e1f-7c65f9d01e52",
"before_value": {
"spend": 0,
"max_budget": 0,
},
"updated_values": {
"team_id": "8bf18b11-7f52-4717-8e1f-7c65f9d01e52",
"max_budget": 2000 # 👈 CHANGED TO
},
}

审计日志 API 规范

id

  • 类型: String
  • 描述: 每个审计日志条目的唯一标识符。默认情况下作为 UUID(通用唯一识别码)自动生成。

updated_at

  • 类型: DateTime
  • 描述: 此字段存储审计日志条目创建或更新的时间戳。默认自动设置为当前日期和时间。

changed_by

  • 类型: String
  • 描述: 执行审计操作的 user_id。如果传递了 LiteLLM-Changed-By 请求头,则 changed_by=<传递的 LiteLLM-Changed-By 请求头的值>

changed_by_api_key

  • 类型: String
  • 描述: 此字段存储用于执行审计操作的 API 密钥哈希值。如果留空,则默认为空字符串。

action

  • 类型: String
  • 描述: 所执行的操作类型。为 "create"(创建)、"update"(更新)或 "delete"(删除)之一。

table_name

  • 类型: String
  • 描述: 此字段存储受审计操作影响的表名称。可以是以下值之一:LiteLLM_TeamTableLiteLLM_UserTableLiteLLM_VerificationToken

object_id

  • 类型: String
  • 描述: 此字段存储受审计操作影响的对象 ID。可以是密钥 ID、团队 ID 或用户 ID

before_value

  • 类型: Json?
  • 描述: 此字段存储执行审计操作前该行的值。它是可选的,可以为 null。

updated_values

  • 类型: Json?
  • 描述: 此字段存储执行审计操作后该行更新后的值