Skip to content
このページは AI の支援により作成・翻訳されました。誤りがあれば、改善にご協力ください。 GitHub で編集

アイデンティティ管理

PRX のアイデンティティシステムは、すべてのエージェント操作に対してワークスペースレベルとユーザーレベルのスコープを提供します。マルチテナントデプロイメントでは、アイデンティティコンテキストが特定のセッションがアクセスできるメモリ、設定、ツール、リソースを決定します。アイデンティティモジュールはアクセス制御、監査ログ、パーソナライゼーションの基盤です。

概要

すべての PRX セッションは以下を含むアイデンティティコンテキスト内で動作します:

コンポーネント説明
ユーザーエージェントと対話する人間またはボット
ワークスペースユーザー、設定、データをグループ化する論理的な境界
セッションユーザーとエージェント間の単一の会話
プリンシパルアクセス制御の決定に使用される有効なアイデンティティ
┌─────────────────────────────────────────┐
│              Workspace: "acme"          │
│                                         │
│  ┌──────────┐  ┌──────────┐            │
│  │ User: A  │  │ User: B  │  ...       │
│  │          │  │          │            │
│  │ Sessions │  │ Sessions │            │
│  │ Memories │  │ Memories │            │
│  │ Config   │  │ Config   │            │
│  └──────────┘  └──────────┘            │
│                                         │
│  Shared: workspace config, tools, keys │
└─────────────────────────────────────────┘

設定

ワークスペースセットアップ

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

ユーザープロファイル

ユーザープロファイルはユーザーごとのプリファレンスとメタデータを保存します:

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

ワークスペース設定

各ワークスペースは独自の設定オーバーレイを持つことができます:

toml
# 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"

アイデンティティコンテキスト

IdentityContext 構造体はリクエストパイプライン全体を通じて伝播されます。含まれるフィールド: user_iddisplay_nameworkspace_idsession_idrole(Owner/Admin/Member/Guest)、channel、任意の metadata

アイデンティティコンテキストはすべてのレイヤーを通じて伝播します: ゲートウェイが受信リクエストからコンテキストを抽出し、エージェントループがメモリとツールアクセスのスコープに使用し、メモリシステムがワークスペースとユーザーでデータをネームスペース化し、コスト追跡が使用量を帰属させ、監査ログがアクターを記録します。

マルチテナンシー

PRX は複数の組織が単一の PRX インスタンスを共有するマルチテナントデプロイメントをサポートします。テナント境界はワークスペースレベルで強制されます:

データ分離

リソース分離レベル
メモリワークスペースごと + ユーザーごと
設定グローバルデフォルト上のワークスペースごとオーバーレイ
ツールポリシーワークスペースごとのオーバーライド
シークレットワークスペースごとの vault
コスト予算ワークスペースごとの制限
監査ログワークスペースごとのフィルタリング

クロスワークスペースアクセス

デフォルトでは、ユーザーは自分のワークスペース内のリソースのみアクセスできます。クロスワークスペースアクセスには明示的な設定が必要です:

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"

ユーザー解決

PRX は通信チャネルに応じて異なる方法でユーザーアイデンティティを解決します:

チャネルアイデンティティソースユーザー ID 形式
TelegramTelegram ユーザー IDtelegram:<user_id>
DiscordDiscord ユーザー IDdiscord:<user_id>
SlackSlack ユーザー IDslack:<workspace_id>:<user_id>
CLIシステムユーザー名cli:<username>
API/GatewayBearer トークン / API キーapi:<key_hash>
WeChatWeChat OpenIDwechat:<open_id>
QQQQ 番号qq:<qq_number>

初回接触登録

新しいユーザーが PRX と初めて対話すると、アイデンティティレコードが自動的に作成されます: チャネルアダプターがユーザー識別子を抽出し、デフォルト設定でプロファイルを作成し、Member ロールで default_workspace にユーザーを割り当てます。

手動ユーザー管理

bash
# 既知の全ユーザーを一覧
prx identity list

# ユーザーの詳細を表示
prx identity info telegram:123456

# ユーザーをワークスペースに割り当て
prx identity assign telegram:123456 --workspace acme --role admin

# ワークスペースからユーザーを削除
prx identity remove telegram:123456 --workspace acme

# ユーザーメタデータを設定
prx identity set telegram:123456 --key language --value en

ワークスペース管理

bash
# 全ワークスペースを一覧
prx workspace list

# 新しいワークスペースを作成
prx workspace create acme --display-name "ACME Corp"

# ワークスペースの詳細を表示
prx workspace info acme

# ワークスペース設定を変更
prx workspace config acme --set default_provider=anthropic

# ワークスペースを削除(確認が必要)
prx workspace delete acme --confirm

ユーザープロファイル

ユーザープロファイルはエージェントの動作をパーソナライズするプリファレンスを保存します:

フィールド説明
user_idstring一意の識別子
display_namestring人が読める名前
languagestring優先言語(ISO 639-1)
timezonestring優先タイムゾーン(IANA 形式)
roleenumワークスペースロール(owner、admin、member、guest)
preferencesmapキーバリュープリファレンス(モデル、冗長度など)
created_atdatetime初回対話のタイムスタンプ
last_seen_atdatetime最新の対話タイムスタンプ

システムプロンプトでのプロファイルアクセス

エージェントのシステムプロンプトにはテンプレート変数を通じてユーザープロファイル情報を含めることができます(例: {{identity.display_name}}{{identity.language}})。これらはプロンプトが LLM に送信される前にアイデンティティコンテキストから解決されます。

ロールベースアクセス制御

ワークスペースロールはユーザーが実行できるアクションを決定します:

権限OwnerAdminMemberGuest
エージェント利用(チャット)
メモリ保存不可
ツール設定不可不可
ユーザー管理不可不可
ワークスペース管理不可不可不可
監査ログ閲覧不可不可

統合ポイント

identity.enabled = true の場合、すべてのメモリ操作は workspace:{workspace_id}:user:{user_id}:{key} でスコープされ、データ分離を保証します。ツールポリシーはワークスペースごとにオーバーライドでき、トークン使用量はユーザーごとのコスト報告のためにアイデンティティコンテキストに帰属されます。

セキュリティノート

  • アイデンティティ偽装 -- アイデンティティシステムはチャネルアダプターがユーザーを正しく識別することを信頼します。チャネル認証が適切に設定されていることを確認してください(ボットトークン、OAuth など)。
  • ワークスペース分離 -- ワークスペース境界はアプリケーションロジックで強制されます。基盤となるストレージ(SQLite、Postgres)はデータベースレベルの分離を提供しません。スコープロジックのバグはデータ漏洩の可能性があります。
  • ゲストアクセス -- ゲストはデフォルトで最小限の権限を持ちます。公開エージェントを有効にする場合はゲストロールの設定を確認してください。
  • プロファイルデータ -- ユーザープロファイルには個人情報が含まれる場合があります。プライバシーポリシーと適用される規制に従って取り扱ってください。
  • クロスワークスペース付与 -- クロスワークスペースアクセスは控えめに付与してください。各付与は侵害されたアカウントの影響範囲を拡大します。

関連ページ

Released under the Apache-2.0 License.