✨ 审计日志
作为代理管理员,您可以查看实体(密钥、团队、用户、模型)是在何时创建、更新、删除或重新生成的,以及是谁执行了这些操作。这对于审计和合规性非常有用。
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_callbacks 和 s3_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: true 和 audit_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_TeamTable、LiteLLM_UserTable、LiteLLM_VerificationToken
object_id
- 类型:
String - 描述: 此字段存储受审计操作影响的对象 ID。可以是密钥 ID、团队 ID 或用户 ID
before_value
- 类型:
Json? - 描述: 此字段存储执行审计操作前该行的值。它是可选的,可以为 null。
updated_values
- 类型:
Json? - 描述: 此字段存储执行审计操作后该行更新后的值