認証・認可の設定(OIDCなど)

概要 ― Weaviateにおける AuthN / AuthZ

Weaviate は API キーOpenID Connect (OIDC) の 2 つの認証方式を備え、さらにバージョン 1.29 以降は RBAC によるきめ細かなアクセス制御を組み合わせることができます。開発用途を除き anonymous access は無効化 するのが推奨です。weaviate.io


1. OIDC 認証の仕組み

  1. 外部 IdP がユーザーを認証し、JWT アクセストークンを発行

  2. クライアントはリクエストの Authorization: Bearer <token> ヘッダーにトークンを付与

  3. Weaviate は /.well-known/openid-configuration で取得した IdP の公開鍵経由で署名を検証し、
    issueraudexp 等のクレームをチェックしてユーザーを特定

  4. 検証が通れば 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 設定例

yaml
services: weaviate: image: semitechnologies/weaviate:latest environment: # 認証 AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'false' AUTHENTICATION_OIDC_ENABLED: 'true' AUTHENTICATION_OIDC_ISSUER: 'https://idp.example.com/realms/demo' AUTHENTICATION_OIDC_CLIENT_ID: 'weaviate-client' AUTHENTICATION_OIDC_USERNAME_CLAIM: 'email' # 任意 AUTHENTICATION_OIDC_SCOPES: 'openid,profile' AUTHENTICATION_OIDC_SKIP_CLIENT_ID_CHECK: 'false' # 権限 (例: Admin-list を併用) AUTHORIZATION_ADMINLIST_ENABLED: 'true' AUTHORIZATION_ADMINLIST_USERS: 'admin@example.com'

*AUTHENTICATION_OIDC_* が OIDC 認証に必須/任意の環境変数です。Issuer URL は OIDC Discovery に対応したエンドポイントである必要があります。また Admin-list を併用すると、特定ユーザーに管理者権限を付与できます。weaviate.io


3. Kubernetes (Helm) での指定ポイント

values.yamlauthentication.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