跳至主要内容

基于角色的访问控制 (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 的用户都可以创建新组织

用法

/organization/new 的 API 参考

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"}}'