Zum Hauptinhalt springen

[BETA]OpenID Connect (OIDC)

LiteLLM unterstützt die Verwendung von OpenID Connect (OIDC) zur Authentifizierung bei Upstream-Diensten. Dies ermöglicht es Ihnen, sensible Anmeldeinformationen nicht in Ihren Konfigurationsdateien speichern zu müssen.

Info

Diese Funktion befindet sich in der Beta-Version

OIDC Identity Provider (IdP)

LiteLLM unterstützt die folgenden OIDC Identity Provider:

AnbieterKonfigurationsnameBenutzerdefinierte Zielgruppen
Google Cloud RungoogleJa
CircleCI v1circleciNein
CircleCI v2circleci_v2Nein
GitHub ActionsgithubJa
Azure Kubernetes ServiceazureNein
DateifileNein
UmgebungsvariableenvNein
Umgebungspfadenv_pathNein

Wenn Sie einen anderen OIDC-Provider verwenden möchten, eröffnen Sie bitte ein Issue auf GitHub.

Tipp

Verwenden Sie die Provider file, env oder env_path nicht, es sei denn, Sie wissen genau, was Sie tun, und sind sicher, dass keiner der anderen Provider für Ihren Anwendungsfall funktioniert. Hinweis: wahrscheinlich werden sie das.

OIDC Connect Relying Party (RP)

LiteLLM unterstützt die folgenden OIDC Relying Parties / Clients:

  • Amazon Bedrock
  • Azure OpenAI
  • (Kommt bald) Google Cloud Vertex AI

OIDC konfigurieren

Wo immer ein Geheimschlüssel verwendet werden kann, kann OIDC anstelle davon verwendet werden. Das allgemeine Format ist

oidc/config_name_here/audience_here

Für Provider, die den Parameter audience nicht verwenden, können (und sollten) Sie ihn weglassen

oidc/config_name_here/

Für den inoffiziellen Provider file können Sie das folgende Format verwenden:

oidc/file/home/user/dave/this_is_a_file_with_a_token.txt

Für die inoffiziellen Provider env verwenden Sie das folgende Format, wobei SECRET_TOKEN der Name der Umgebungsvariable ist, die das Token enthält:

oidc/env/SECRET_TOKEN

Für die inoffiziellen Provider env_path verwenden Sie das folgende Format, wobei SECRET_TOKEN der Name der Umgebungsvariable ist, die den Pfad zur Datei mit dem Token enthält:

oidc/env_path/SECRET_TOKEN
Tipp

Wenn Sie versucht sind, oidc/env_path/AZURE_FEDERATED_TOKEN_FILE zu verwenden, tun Sie das nicht. Verwenden Sie stattdessen oidc/azure/, da dies die fortlaufende Unterstützung von LiteLLM gewährleistet, falls Azure seine OIDC-Konfiguration ändert und/oder neue Funktionen hinzufügt.

Beispiele

Google Cloud Run -> Amazon Bedrock

model_list:
- model_name: claude-3-haiku-20240307
litellm_params:
model: bedrock/anthropic.claude-3-haiku-20240307-v1:0
aws_region_name: us-west-2
aws_session_name: "litellm"
aws_role_name: "arn:aws:iam::YOUR_THING_HERE:role/litellm-google-demo"
aws_web_identity_token: "oidc/google/https://example.com"

CircleCI v2 -> Amazon Bedrock

model_list:
- model_name: command-r
litellm_params:
model: bedrock/cohere.command-r-v1:0
aws_region_name: us-west-2
aws_session_name: "my-test-session"
aws_role_name: "arn:aws:iam::335785316107:role/litellm-github-unit-tests-circleci"
aws_web_identity_token: "oidc/circleci_v2/"

Amazon IAM Rollenkonfiguration für CircleCI v2 -> Bedrock

Die folgende Konfiguration ist nur ein Beispiel. Sie sollten die Berechtigungen und Vertrauensbeziehungen an Ihren spezifischen Anwendungsfall anpassen.

Berechtigungen

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"bedrock:InvokeModel",
"bedrock:InvokeModelWithResponseStream"
],
"Resource": [
"arn:aws:bedrock:*::foundation-model/anthropic.claude-3-haiku-20240307-v1:0",
"arn:aws:bedrock:*::foundation-model/cohere.command-r-v1:0"
]
}
]
}

Weitere Beispiele finden Sie unter https://docs.aws.amazon.com/bedrock/latest/userguide/security_iam_id-based-policy-examples.html.

Vertrauensbeziehung

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::335785316107:oidc-provider/oidc.circleci.com/org/c5a99188-154f-4f69-8da2-b442b1bf78dd"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"oidc.circleci.com/org/c5a99188-154f-4f69-8da2-b442b1bf78dd:aud": "c5a99188-154f-4f69-8da2-b442b1bf78dd"
},
"ForAnyValue:StringLike": {
"oidc.circleci.com/org/c5a99188-154f-4f69-8da2-b442b1bf78dd:sub": [
"org/c5a99188-154f-4f69-8da2-b442b1bf78dd/project/*/user/*/vcs-origin/github.com/BerriAI/litellm/vcs-ref/refs/heads/main",
"org/c5a99188-154f-4f69-8da2-b442b1bf78dd/project/*/user/*/vcs-origin/github.com/BerriAI/litellm/vcs-ref/refs/heads/litellm_*"
]
}
}
}
]
}

Diese Vertrauensbeziehung beschränkt CircleCI so, dass die Rolle nur im Hauptzweig und in Zweigen, die mit litellm_ beginnen, übernommen werden kann.

Für CircleCI (v1 und v2) müssen Sie außerdem den OIDC-Provider Ihrer Organisation in Ihren AWS IAM-Einstellungen hinzufügen. Weitere Informationen finden Sie unter https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_oidc.html.

Tipp

Sie sollten niemals einen IAM-Benutzer erstellen müssen. Wenn Sie dies getan haben, verwenden Sie OIDC nicht korrekt. Sie sollten nur eine Rolle mit Berechtigungen und einer Vertrauensbeziehung zu Ihrem OIDC-Provider erstellen.

Google Cloud Run -> Azure OpenAI

model_list:
- model_name: gpt-4o-2024-05-13
litellm_params:
model: azure/gpt-4o-2024-05-13
azure_ad_token: "oidc/google/https://example.com"
api_version: "2024-06-01"
api_base: "https://demo-here.openai.azure.com"
model_info:
base_model: azure/gpt-4o-2024-05-13

Für Azure OpenAI müssen Sie AZURE_CLIENT_ID, AZURE_TENANT_ID und optional AZURE_AUTHORITY_HOST in Ihrer Umgebung definieren.

export AZURE_CLIENT_ID="91a43c21-cf21-4f34-9085-331015ea4f91" # Azure AD Application (Client) ID
export AZURE_TENANT_ID="f3b1cf79-eba8-40c3-8120-cb26aca169c2" # Will be the same across of all your Azure AD applications
export AZURE_AUTHORITY_HOST="https://login.microsoftonline.com" # 👈 Optional, defaults to "https://login.microsoftonline.com"
Tipp

Sie finden AZURE_CLIENT_ID, indem Sie https://login.microsoftonline.com/IHRE_DOMAIN_HIER/v2.0/.well-known/openid-configuration besuchen und nach der UUID im Feld issuer suchen.

Tipp

Setzen Sie AZURE_AUTHORITY_HOST nicht in Ihrer Umgebung, es sei denn, Sie müssen den Standardwert überschreiben. Auf diese Weise müssen Sie Ihre Umgebung nicht aktualisieren, wenn sich der Standardwert in Zukunft ändert.

Tipp

Standardmäßig verwenden Azure AD-Anwendungen die Zielgruppe api://AzureADTokenExchange. Wir empfehlen, die Zielgruppe auf etwas Spezifischeres für Ihre Anwendung festzulegen.

Azure AD Anwendungs­konfiguration

Leider ist die Einrichtung von Azure komplizierter als bei anderen OIDC Relying Parties wie AWS. Grundsätzlich müssen Sie:

  1. Eine Azure-Anwendung erstellen.
  2. Eine föderierte Anmeldeinformation für den verwendeten OIDC IdP hinzufügen (z. B. Google Cloud Run).
  3. Die Azure-Anwendung zur Ressourcengruppe hinzufügen, die die Azure OpenAI-Ressource(n) enthält.
  4. Der Azure-Anwendung die erforderliche Rolle zuweisen, um auf die Azure OpenAI-Ressource(n) zugreifen zu können.

Die benutzerdefinierte Rolle unten sind die empfohlenen Mindestberechtigungen für die Azure-Anwendung, um auf Azure OpenAI-Ressourcen zugreifen zu können. Sie sollten die Berechtigungen an Ihren spezifischen Anwendungsfall anpassen.

{
"id": "/subscriptions/24ebb700-ec2f-417f-afad-78fe15dcc91f/providers/Microsoft.Authorization/roleDefinitions/baf42808-99ff-466d-b9da-f95bb0422c5f",
"properties": {
"roleName": "invoke-only",
"description": "",
"assignableScopes": [
"/subscriptions/24ebb700-ec2f-417f-afad-78fe15dcc91f/resourceGroups/your-openai-group-name"
],
"permissions": [
{
"actions": [],
"notActions": [],
"dataActions": [
"Microsoft.CognitiveServices/accounts/OpenAI/deployments/audio/action",
"Microsoft.CognitiveServices/accounts/OpenAI/deployments/search/action",
"Microsoft.CognitiveServices/accounts/OpenAI/deployments/completions/action",
"Microsoft.CognitiveServices/accounts/OpenAI/deployments/chat/completions/action",
"Microsoft.CognitiveServices/accounts/OpenAI/deployments/extensions/chat/completions/action",
"Microsoft.CognitiveServices/accounts/OpenAI/deployments/embeddings/action",
"Microsoft.CognitiveServices/accounts/OpenAI/images/generations/action"
],
"notDataActions": []
}
]
}
}

Hinweis: Ihre UUIDs werden anders sein.

Kontaktieren Sie uns für kostenpflichtigen Enterprise-Support, wenn Sie Hilfe bei der Einrichtung von Azure AD-Anwendungen benötigen.