基于角色的访问控制 (RBAC)
基于角色的访问控制(RBAC)基于组织、团队和内部用户角色
组织是包含团队的顶级实体。团队- 团队是多个内部用户的集合。内部用户- 可以创建密钥、调用LLM API、查看LiteLLM使用情况的用户。角色定义了内部用户的权限。虚拟密钥- 密钥用于LiteLLM API的身份验证。密钥与内部用户和团队绑定。
角色
管理员角色
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组织的org_admin(来自步骤1)
具有以下角色的用户可以调用/organization/member_add
proxy_adminorg_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组织中创建了一个用户ID为ishaan@berri.ai且角色为org_admin的用户
为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组织内创建一个团队
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"}}'