[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.
Diese Funktion befindet sich in der Beta-Version
OIDC Identity Provider (IdP)
LiteLLM unterstützt die folgenden OIDC Identity Provider:
| Anbieter | Konfigurationsname | Benutzerdefinierte Zielgruppen |
|---|---|---|
| Google Cloud Run | google | Ja |
| CircleCI v1 | circleci | Nein |
| CircleCI v2 | circleci_v2 | Nein |
| GitHub Actions | github | Ja |
| Azure Kubernetes Service | azure | Nein |
| Datei | file | Nein |
| Umgebungsvariable | env | Nein |
| Umgebungspfad | env_path | Nein |
Wenn Sie einen anderen OIDC-Provider verwenden möchten, eröffnen Sie bitte ein Issue auf GitHub.
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/
Inoffizielle Provider (nicht empfohlen)
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
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.
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"
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.
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.
Standardmäßig verwenden Azure AD-Anwendungen die Zielgruppe api://AzureADTokenExchange. Wir empfehlen, die Zielgruppe auf etwas Spezifischeres für Ihre Anwendung festzulegen.
Azure AD Anwendungskonfiguration
Leider ist die Einrichtung von Azure komplizierter als bei anderen OIDC Relying Parties wie AWS. Grundsätzlich müssen Sie:
- Eine Azure-Anwendung erstellen.
- Eine föderierte Anmeldeinformation für den verwendeten OIDC IdP hinzufügen (z. B. Google Cloud Run).
- Die Azure-Anwendung zur Ressourcengruppe hinzufügen, die die Azure OpenAI-Ressource(n) enthält.
- 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.