LiteLLM 1.84.0-dev.1、Dockerイメージ署名検証の話

鈴木 蓮
鈴木 蓮 20代・ ソフトウェアエンジニア
最近LiteLLMのリリースノートをちゃんと追うようにしているんだけど、1.84.0-dev.1を見て「あ、これ自分の環境で考えたことなかったやつだ」と思った。

GitHub Actions経由で自動リリースされるこのバージョン、変更内容よりも冒頭のDockerイメージ署名検証の記述が気になった。cosignというツールを使って全イメージに署名していて、検証用の公開鍵はコミットハッシュ`0112e53`で固定されている。

コミットハッシュで鍵を固定する意味



タグじゃなくてコミットハッシュで鍵を参照するの、最初は「なんでわざわざ?」と思った。でも考えてみると、タグは後から動かせる。コミットハッシュは変えられない。ここの差は本番環境でサプライチェーン攻撃を防ぎたいときに地味に効いてくる。

cosign verify \
  --key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub \
  ghcr.io/berriai/litellm:1.84.0-dev.1

このコマンドを実際に手元で叩いたら、ちゃんと署名が通った。自分はこれまでLiteLLMのイメージをComposeでpullするだけで署名確認なんてしてなかった。今後はCIに組み込もうと思っている。

今回の変更で自分のコードに直結する部分



バグ修正の中でひとつ刺さったのが`fix(redis): cache GCP IAM token to prevent async event loop blocking`という変更。GCPでLiteLLM Proxyを動かしてRedisキャッシュを使う構成、ちょうど今のプロジェクトで試してるやつだ。IAMトークンを毎回取得するせいでevent loopが詰まるケースがあったらしい。自分は症状に気づかないままだったかもしれない。

あとは`feat(proxy): add --timeout_worker_healthcheck flag for uvicorn worker triage`も地味に嬉しい。uvicornワーカーが固まってるのかどうか、今まで判断しにくかった。healthcheckのタイムアウトを明示的に設定できるようになるのはk8sのliveness probeと組み合わせるときに助かる。

dev版という位置づけなので本番には入れないけど、自分はstaging環境で試すつもりでいる。dev.1のリリースを見てから本番の1.84.0正式版が出たとき何が変わったかを比較するのが、最近のLiteLLMの追い方として自分の中でルーティンになってきた。

cosign自体まだ全然使いこなせてないので、次は自分のプロジェクトのイメージにも署名を入れる実験をやってみるつもりだ。

無料相談受付中

AI開発・DX推進についてお気軽にご相談ください。オンライン30分から。

無料相談を申し込む