Skip to content
Diese Seite wurde mit KI-Unterstützung erstellt und übersetzt. Falls Ihnen Ungenauigkeiten auffallen, helfen Sie gerne bei der Verbesserung. Auf GitHub bearbeiten

Identitätsverwaltung

PRXs Identitätssystem bietet Workspace- und Benutzerebenen-Scoping für alle Agentenoperationen. In mandantenfähigen Bereitstellungen bestimmt der Identitätskontext, auf welche Erinnerungen, Konfigurationen, Werkzeuge und Ressourcen eine bestimmte Sitzung zugreifen kann. Das Identitätsmodul ist die Grundlage für Zugriffskontrolle, Audit-Protokollierung und Personalisierung.

Überblick

Jede PRX-Sitzung arbeitet innerhalb eines Identitätskontexts, der Folgendes umfasst:

KomponenteBeschreibung
BenutzerDer Mensch oder Bot, der mit dem Agenten interagiert
WorkspaceEine logische Grenze, die Benutzer, Konfigurationen und Daten gruppiert
SitzungEin einzelnes Gespräch zwischen einem Benutzer und dem Agenten
PrincipalDie effektive Identität für Zugriffskontrollentscheidungen
┌─────────────────────────────────────────┐
│              Workspace: "acme"          │
│                                         │
│  ┌──────────┐  ┌──────────┐            │
│  │ User: A  │  │ User: B  │  ...       │
│  │          │  │          │            │
│  │ Sessions │  │ Sessions │            │
│  │ Memories │  │ Memories │            │
│  │ Config   │  │ Config   │            │
│  └──────────┘  └──────────┘            │
│                                         │
│  Shared: workspace config, tools, keys │
└─────────────────────────────────────────┘

Konfiguration

Workspace-Einrichtung

toml
[identity]
# Enable multi-tenant identity scoping.
enabled = true

# Default workspace for sessions that do not specify one.
default_workspace = "default"

# Allow users to create new workspaces.
allow_workspace_creation = true

# Maximum workspaces per deployment.
max_workspaces = 100

Benutzerprofile

Benutzerprofile speichern benutzerspezifische Präferenzen und Metadaten:

toml
[identity.profiles]
# Storage backend for user profiles: "memory" | "sqlite" | "postgres"
backend = "sqlite"
path = "~/.local/share/openprx/identities.db"

Workspace-Konfiguration

Jeder Workspace kann seine eigene Konfigurations-Overlay haben:

toml
# Workspace-specific overrides in config.toml
[workspaces.acme]
display_name = "ACME Corp"
default_provider = "openai"
default_model = "gpt-4o"

[workspaces.acme.memory]
backend = "postgres"

[workspaces.acme.security.tool_policy]
default = "supervised"

Identitätskontext

Das IdentityContext-Struct wird durch die gesamte Anfrage-Pipeline gereicht. Es enthält: user_id, display_name, workspace_id, session_id, role (Owner/Admin/Member/Guest), channel und beliebige metadata.

Der Identitätskontext propagiert durch jede Schicht: das Gateway extrahiert ihn aus eingehenden Anfragen, die Agenten-Schleife verwendet ihn zum Scoping von Gedächtnis und Werkzeugzugriff, das Gedächtnissystem namensräumt Daten nach Workspace und Benutzer, Kostenverfolgung ordnet Nutzung zu, und das Audit-Log protokolliert den Akteur.

Mandantenfähigkeit

PRX unterstützt mandantenfähige Bereitstellungen, bei denen mehrere Organisationen eine einzelne PRX-Instanz teilen. Mandantengrenzen werden auf Workspace-Ebene erzwungen:

Datenisolierung

RessourceIsolierungsebene
ErinnerungenPro Workspace + pro Benutzer
KonfigurationPro-Workspace-Overlay auf globalen Standards
WerkzeugrichtlinienPro-Workspace-Überschreibungen
GeheimnissePro-Workspace-Tresor
KostenbudgetsPro-Workspace-Limits
Audit-LogsPro-Workspace-Filterung

Workspace-übergreifender Zugriff

Standardmäßig können Benutzer nur auf Ressourcen innerhalb ihres Workspaces zugreifen. Workspace-übergreifender Zugriff erfordert explizite Konfiguration:

toml
[identity.cross_workspace]
# Allow workspace admins to access other workspaces.
admin_cross_access = false

# Allow specific users to access multiple workspaces.
[[identity.cross_workspace.grants]]
user_id = "shared-bot"
workspaces = ["acme", "beta-corp"]
role = "member"

Benutzerauflösung

PRX löst die Benutzeridentität je nach Kommunikationskanal unterschiedlich auf:

KanalIdentitätsquelleBenutzer-ID-Format
TelegramTelegram-Benutzer-IDtelegram:<user_id>
DiscordDiscord-Benutzer-IDdiscord:<user_id>
SlackSlack-Benutzer-IDslack:<workspace_id>:<user_id>
CLISystem-Benutzernamecli:<username>
API/GatewayBearer-Token / API-Schlüsselapi:<key_hash>
WeChatWeChat-OpenIDwechat:<open_id>
QQQQ-Nummerqq:<qq_number>

Erstkontakt-Registrierung

Wenn ein neuer Benutzer zum ersten Mal mit PRX interagiert, wird automatisch ein Identitätsdatensatz erstellt: der Kanaladapter extrahiert die Benutzerkennung, erstellt ein Profil mit Standardeinstellungen und weist den Benutzer dem default_workspace mit der Rolle Member zu.

Manuelle Benutzerverwaltung

bash
# List all known users
prx identity list

# Show user details
prx identity info telegram:123456

# Assign a user to a workspace
prx identity assign telegram:123456 --workspace acme --role admin

# Remove a user from a workspace
prx identity remove telegram:123456 --workspace acme

# Set user metadata
prx identity set telegram:123456 --key language --value en

Workspace-Verwaltung

bash
# List all workspaces
prx workspace list

# Create a new workspace
prx workspace create acme --display-name "ACME Corp"

# Show workspace details
prx workspace info acme

# Set workspace configuration
prx workspace config acme --set default_provider=anthropic

# Delete a workspace (requires confirmation)
prx workspace delete acme --confirm

Benutzerprofile

Benutzerprofile speichern Präferenzen, die das Verhalten des Agenten personalisieren:

FeldTypBeschreibung
user_idStringEindeutiger Identifikator
display_nameStringFür Menschen lesbarer Name
languageStringBevorzugte Sprache (ISO 639-1)
timezoneStringBevorzugte Zeitzone (IANA-Format)
roleEnumWorkspace-Rolle (Owner, Admin, Member, Guest)
preferencesMapSchlüssel-Wert-Präferenzen (Modell, Ausführlichkeit usw.)
created_atDatetimeZeitstempel der ersten Interaktion
last_seen_atDatetimeZeitstempel der letzten Interaktion

Profilzugriff in System-Prompts

Der System-Prompt des Agenten kann Benutzerprofilinformationen über Template-Variablen einbinden (z.B. {{identity.display_name}}, {{identity.language}}), die aus dem Identitätskontext aufgelöst werden, bevor der Prompt an das LLM gesendet wird.

Rollenbasierte Zugriffskontrolle

Workspace-Rollen bestimmen, welche Aktionen ein Benutzer durchführen kann:

BerechtigungOwnerAdminMemberGuest
Agent nutzen (Chat)JaJaJaJa
Erinnerungen speichernJaJaJaNein
Werkzeuge konfigurierenJaJaNeinNein
Benutzer verwaltenJaJaNeinNein
Workspace verwaltenJaNeinNeinNein
Audit-Logs einsehenJaJaNeinNein

Integrationspunkte

Wenn identity.enabled = true, werden alle Gedächtnisoperationen nach workspace:{workspace_id}:user:{user_id}:{key} gescopted, was Datenisolierung gewährleistet. Werkzeugrichtlinien können pro Workspace überschrieben werden, und Token-Verbrauch wird dem Identitätskontext für benutzerspezifische Kostenberichte zugeordnet.

Sicherheitshinweise

  • Identitäts-Spoofing -- das Identitätssystem vertraut dem Kanaladapter bei der korrekten Benutzeridentifikation. Stellen Sie sicher, dass die Kanalauthentifizierung korrekt konfiguriert ist (Bot-Tokens, OAuth usw.).
  • Workspace-Isolierung -- Workspace-Grenzen werden in der Anwendungslogik erzwungen. Der zugrunde liegende Speicher (SQLite, Postgres) bietet keine Datenbank-Level-Isolierung. Ein Fehler in der Scoping-Logik könnte Daten preisgeben.
  • Gastzugriff -- Gäste haben standardmäßig minimale Berechtigungen. Überprüfen Sie die Gastrollenkonfiguration bei der Aktivierung öffentlich zugänglicher Agenten.
  • Profildaten -- Benutzerprofile können personenbezogene Daten enthalten. Behandeln Sie diese gemäß Ihrer Datenschutzrichtlinie und geltenden Vorschriften.
  • Workspace-übergreifende Berechtigungen -- gewähren Sie workspace-übergreifenden Zugriff sparsam. Jede Berechtigung erweitert den Schadensradius eines kompromittierten Kontos.

Verwandte Seiten

Released under the Apache-2.0 License.