Zum Hauptinhalt springen

Rollentaspektorientierte Zugriffskontrollen (RBAC)

Rollenbasierte Zugriffskontrolle (RBAC) basiert auf Organisationen, Teams und internen Benutzerrollen

  • Organisationen sind die obersten Entitäten, die Teams enthalten.
  • Team - Ein Team ist eine Sammlung mehrerer interner Benutzer
  • Interne Benutzer - Benutzer, die Schlüssel erstellen, LLM-API-Aufrufe tätigen und die Nutzung von LiteLLM anzeigen können
  • Rollen definieren die Berechtigungen eines internen Benutzers
  • Virtuelle Schlüssel - Schlüssel werden zur Authentifizierung bei der LiteLLM-API verwendet. Schlüssel sind mit einem internen Benutzer und einem Team verknüpft

Rollen

RollentypRollennameBerechtigungen
Adminproxy_adminAdmin über die Plattform
proxy_admin_viewerKann sich anmelden, alle Schlüssel anzeigen, den gesamten Verbrauch anzeigen. Kann keine Schlüssel erstellen/löschen/neue Benutzer hinzufügen
Organisationorg_adminAdmin über die Organisation. Kann Teams und Benutzer innerhalb ihrer Organisation erstellen
Interner Benutzerinternal_userKann sich anmelden, eigene Schlüssel anzeigen/erstellen/löschen, den eigenen Verbrauch anzeigen. Kann keine neuen Benutzer hinzufügen
internal_user_viewerKann sich anmelden, eigene Schlüssel anzeigen, den eigenen Verbrauch anzeigen. Kann keine Schlüssel erstellen/löschen, keine neuen Benutzer hinzufügen

Onboarding-Organisationen

1. Erstellen einer neuen Organisation

Jeder Benutzer mit der Rolle proxy_admin kann eine neue Organisation erstellen

Verwendung

API-Referenz für /organization/new

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

Erwartete Antwort

{
"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. Hinzufügen eines org_admin zu einer Organisation

Erstellen Sie einen Benutzer (ishaan@berri.ai) als org_admin für die Organisation marketing_department (aus Schritt 1)

Benutzer mit den folgenden Rollen können /organization/member_add aufrufen

  • proxy_admin
  • org_admin nur innerhalb ihrer eigenen Organisation
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"}}'

Nun wurde ein Benutzer mit user_id = ishaan@berri.ai und role = org_admin in der Organisation marketing_department erstellt

Erstellen Sie einen virtuellen Schlüssel für user_id = ishaan@berri.ai. Der Benutzer kann dann den virtuellen Schlüssel für seine Organisations-Admin-Operationen verwenden

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

Erwartete Antwort

{
"models": [],
"user_id": "ishaan@berri.ai",
"key": "sk-7shH8TGMAofR4zQpAAo6kQ",
"key_name": "sk-...o6kQ",
}

3. Organisations-Admin - Erstellen eines Teams

Der Organisations-Admin verwendet den virtuellen Schlüssel, der in Schritt 2 erstellt wurde, um ein Team innerhalb der Organisation marketing_department zu erstellen

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

Dadurch wird das Team engineering_team innerhalb der Organisation marketing_department erstellt

Erwartete Antwort

{
"team_alias": "engineering_team",
"team_id": "01044ee8-441b-45f4-be7d-c70e002722d8",
"organization_id": "ad15e8ca-12ae-46f4-8659-d02debef1b23",
}

Organisations-Admin - Hinzufügen eines internen Benutzers

Der Organisations-Admin verwendet den virtuellen Schlüssel, der in Schritt 2 erstellt wurde, um einen internen Benutzer zum Team engineering_team hinzuzufügen.

  • Wir weisen die Rolle internal_user zu, damit der Benutzer selbst virtuelle Schlüssel erstellen kann
  • team_id stammt aus Schritt 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"}}'