基于角色的访问控制 (RBAC)
基于角色的访问控制 (RBAC) 基于组织 (Organizations)、团队 (Teams) 和内部用户角色 (Internal User Roles)
组织 (Organizations)
是包含团队的顶层实体。团队 (Team)
- 团队是多个内部用户 (Internal Users)
的集合内部用户 (Internal Users)
- 可以在 LiteLLM 上创建密钥、发出 LLM API 调用、查看使用情况的用户角色 (Roles)
定义了内部用户 (Internal User)
的权限虚拟密钥 (Virtual Keys)
- 密钥用于 LiteLLM API 的认证。密钥与内部用户 (Internal User)
和团队 (Team)
关联
角色
角色类型 | 角色名称 | 权限 |
---|---|---|
管理员 | proxy_admin | 平台管理员 |
proxy_admin_viewer | 可以登录,查看所有密钥,查看所有花费。不能创建/删除密钥或添加新用户 | |
组织 | org_admin | 组织管理员。可以在其组织内创建团队和用户 |
内部用户 | internal_user | 可以登录,查看/创建/删除自己的密钥,查看自己的花费。不能添加新用户 |
internal_user_viewer | 可以登录,查看自己的密钥,查看自己的花费。不能创建/删除密钥或添加新用户 |
组织入门
1. 创建新组织
任何角色为 proxy_admin
的用户都可以创建新组织
用法
curl --location 'http://0.0.0.0:4000/organization/new' \
--header 'Authorization: Bearer sk-1234' \
--header 'Content-Type: application/json' \
--data '{
"organization_alias": "marketing_department",
"models": ["gpt-4"],
"max_budget": 20
}'
预期响应
{
"organization_id": "ad15e8ca-12ae-46f4-8659-d02debef1b23",
"organization_alias": "marketing_department",
"budget_id": "98754244-3a9c-4b31-b2e9-c63edc8fd7eb",
"metadata": {},
"models": [
"gpt-4"
],
"created_by": "109010464461339474872",
"updated_by": "109010464461339474872",
"created_at": "2024-10-08T18:30:24.637000Z",
"updated_at": "2024-10-08T18:30:24.637000Z"
}
2. 将 org_admin
添加到组织
创建一个用户 (ishaan@berri.ai) 作为 marketing_department
组织 (来自步骤 1) 的 org_admin
具有以下角色的用户可以调用 /organization/member_add
proxy_admin
org_admin
仅限于其自己的组织内
curl -X POST 'http://0.0.0.0:4000/organization/member_add' \
-H 'Authorization: Bearer sk-1234' \
-H 'Content-Type: application/json' \
-d '{"organization_id": "ad15e8ca-12ae-46f4-8659-d02debef1b23", "member": {"role": "org_admin", "user_id": "ishaan@berri.ai"}}'
现在,已在 marketing_department
组织中创建了一个 user_id 为 ishaan@berri.ai
、角色为 org_admin
的用户
为 user_id 为 ishaan@berri.ai
的用户创建一个虚拟密钥。该用户随后可以使用该虚拟密钥执行其组织管理操作
curl --location 'http://0.0.0.0:4000/key/generate' \
--header 'Authorization: Bearer sk-1234' \
--header 'Content-Type: application/json' \
--data '{
"user_id": "ishaan@berri.ai"
}'
预期响应
{
"models": [],
"user_id": "ishaan@berri.ai",
"key": "sk-7shH8TGMAofR4zQpAAo6kQ",
"key_name": "sk-...o6kQ",
}
3. 组织管理员
- 创建团队
组织管理员将使用在步骤 2 中创建的虚拟密钥在 marketing_department
组织内创建一个 团队 (Team)
curl --location 'http://0.0.0.0:4000/team/new' \
--header 'Authorization: Bearer sk-7shH8TGMAofR4zQpAAo6kQ' \
--header 'Content-Type: application/json' \
--data '{
"team_alias": "engineering_team",
"organization_id": "ad15e8ca-12ae-46f4-8659-d02debef1b23"
}'
这将在 marketing_department
组织内创建团队 engineering_team
预期响应
{
"team_alias": "engineering_team",
"team_id": "01044ee8-441b-45f4-be7d-c70e002722d8",
"organization_id": "ad15e8ca-12ae-46f4-8659-d02debef1b23",
}
组织管理员
- 添加 内部用户
组织管理员将使用在步骤 2 中创建的虚拟密钥将内部用户添加到 engineering_team
团队。
- 我们将分配角色=
internal_user
,以便用户可以为自己创建虚拟密钥 team_id
来自步骤 3
curl -X POST 'http://0.0.0.0:4000/team/member_add' \
-H 'Authorization: Bearer sk-1234' \
-H 'Content-Type: application/json' \
-d '{"team_id": "01044ee8-441b-45f4-be7d-c70e002722d8", "member": {"role": "internal_user", "user_id": "krrish@berri.ai"}}'