Secrets Management

参照元: LiveKit Agents Documentation ロードマップ: 学習ロードマップ

What(何についてか)

Agentが使用する機密情報(API key、DB credentials、auth token等)の管理。LiveKit Cloudが暗号化して保存し、ランタイム時にコンテナに安全に注入する。

Why(なぜ必要か)

Agentは外部サービス(LLM provider、DB等)と通信するためにAPI key等の機密情報を必要とする。これらをソースコードやGitに含めることはセキュリティリスクになる。LiveKit Cloudは書き込み専用の暗号化ストアを提供し、ランタイム時のみ平文としてAgentに提供する。

How(どう動くか)

Secretの基本モデル

Secretは暗号化されてCloud側に保存され、Agentコンテナ起動時に環境変数として注入される。値はCLIやDashboardから取り出せない(書き込み専用)。これにより誤って値が漏洩するリスクを排除している。

設定方法

3つのパターンがある。

1. Secrets file(ファイルからの読み込み)

CLIは引数なしの場合、自動的に .env / .env.local / .env.production を探す。明示指定も可能:

lk agent create --secrets-file=path/to/secrets.env

ファイルは KEY=value 形式で1行に1つ。LiveKit Cloud credentials(LIVEKIT_URL 等)は除外される。

2. Secrets flag(個別指定)

lk agent update-secrets --secrets "SECRET_A=foo" --secrets "SECRET_B=bar"

複数なら --secrets フラグを複数渡す。デフォルトは「既存を保持しつつ追加・更新」。

3. 上書きモード

全入れ替えの場合:

lk agent update-secrets --secrets-file=new-secrets.env --overwrite

--overwrite で既存secretを全削除してから新しいものを設定。

Secret更新時の挙動

Secretの更新は rolling restart をトリガーする。新しいセッションから更新されたsecretが使われる。既存セッションは旧インスタンスで継続(Deployment ManagementのGraceful shutdownと同じ仕組み)。

一覧確認

lk agent secrets で名前・作成日・更新日を表示。値は表示されない。

LiveKit Cloud自動提供

LiveKit Cloudは以下の環境変数を自動的にAgentに注入する。ユーザーが設定・変更する必要はない。

  • LIVEKIT_URL — Cloud server URL
  • LIVEKIT_API_KEY — projectのAPI key
  • LIVEKIT_API_SECRET — projectのAPI secret

File-mounted secrets

環境変数ではなくファイルとしてマウントする仕組み。GoogleのJSON認証ファイル等で必要。

lk agent update-secrets --secret-mount ./google-application-credentials.json

コンテナ内に /etc/secrets/<filename> としてマウントされる。

Key Concepts

用語説明
Secret暗号化された環境変数。ランタイム時にコンテナに注入
--secrets-file.envファイルからsecretを読み込む
--secrets個別にsecretを指定(複数可)
--overwrite既存secretを全削除してから新しいものを設定
--secret-mountファイルを /etc/secrets/ にマウント
Rolling restartSecret更新時にトリガー。新セッションから新secretが有効

制約事項

  • Secret name: 英字・数字・アンダースコアのみ、最大70文字、大文字小文字区別あり
  • Secret value: 最大16KB、暗号化保存、取り出し不可
  • LiveKit credentials: 自動注入、ユーザー設定不可

一言まとめ

LiveKit CloudのSecret管理は書き込み専用の暗号化ストア。.env ファイル、--secrets フラグ、--secret-mount の3パターンで設定可能。値はCLI/Dashboardから取り出せず、ランタイム時のみ環境変数として提供される。更新時はrolling restartで安全に反映。