概要 ― Weaviateにおける AuthN / AuthZ
Weaviate は API キー と OpenID Connect (OIDC) の 2 つの認証方式を備え、さらにバージョン 1.29 以降は RBAC によるきめ細かなアクセス制御を組み合わせることができます。開発用途を除き anonymous access は無効化 するのが推奨です。weaviate.io
1. OIDC 認証の仕組み
-
外部 IdP がユーザーを認証し、JWT アクセストークンを発行
-
クライアントはリクエストの
Authorization: Bearer <token>ヘッダーにトークンを付与 -
Weaviate は
/.well-known/openid-configurationで取得した IdP の公開鍵経由で署名を検証し、
issuer/aud/exp 等のクレームをチェックしてユーザーを特定 -
検証が通れば AuthN が成立し、その後 Admin-list / RBAC で権限を決定 (AuthZ)weaviate.ioweaviate.io
トークン取得フロー例
| フロー | 概要 | 主な用途 |
|---|---|---|
| Resource Owner Password | ユーザー名・パスワードを直接 IdP の /token に POST |
バッチ・CLI |
| Authorization Code (Hybrid) | ブラウザで IdP にリダイレクト → code 取得 → トークン交換 |
Web UI |
2. Docker Compose での OIDC 設定例
*AUTHENTICATION_OIDC_* が OIDC 認証に必須/任意の環境変数です。Issuer URL は OIDC Discovery に対応したエンドポイントである必要があります。また Admin-list を併用すると、特定ユーザーに管理者権限を付与できます。weaviate.io
3. Kubernetes (Helm) での指定ポイント
values.yaml の authentication.oidc セクションに同一キーを配置します。環境変数を同時に設定すると 環境変数が優先 されるため注意してください。weaviate.io
4. RBAC との連携ポイント (v1.29+)
| 変数 | 目的 |
|---|---|
AUTHORIZATION_RBAC_ENABLED |
RBAC を有効化 |
AUTHORIZATION_RBAC_ROOT_USERS |
起動時に root 権限を持つユーザーを登録 |
AUTHENTICATION_DB_USERS_ENABLED |
ランタイムでユーザー/ロールを追加する API を利用可 |
OIDC で認証されたユーザーは Viewer ロールが既定ですが、User Management API で任意ロールに変更可能です。weaviate.io
5. 運用上のベストプラクティス
| 項目 | 推奨設定・留意点 |
|---|---|
| 通信経路の保護 | OIDC 導入時は必ず HTTPS を使用し、トークンを平文で流さない |
| トークン寿命 | IdP 側で短めにし、リフレッシュトークンや ROPC フローの利用可否を検討 |
| スコープ/グループ | AUTHENTICATION_OIDC_GROUPS_CLAIM でグループを抽出し、RBAC ロール割当てに活用 |
| クライアント実装 | Python/JS クライアントは AuthBearerToken AuthClientPassword 等のヘルパを用意 |
| スタートアップ確認 | /v1/.well-known/openid-configuration で Weaviate 側の OIDC メタデータを確認し、署名鍵や clientId 誤設定を防止weaviate.io |
まとめ
-
Weaviate では OIDC による外部 IdP 連携 を用いて安全にサービスを公開できる
-
環境変数で簡潔に切り替え られ、Docker / Kubernetes / WCS いずれの形態でも同一キー名を使用
-
認証後は Admin-list あるいは RBAC で粒度の細かいアクセス制御を実装可能
これらを組み合わせることで、クラスタ全体のセキュリティを確保しつつ、ユーザー/アプリケーションごとに最適な権限モデルを構築できます。
ChatGPT4o 生成日:2025/06/20