CloudNativeSecurityConから、WebAssemblyのパッケージレジストリプロトコルWargのセッションを紹介
CloudNativeSecurityCon 2023から、WebAssemblyのパッケージの真正性を担保するための新しいプロジェクトであるWargのセッションを紹介する。これはSingleStoreのKyle Brown氏が行ったセッションで「Package Transparency for WebAssembly Registries」と題されている。約20分間を使ってWargのコアとなっているLogとMapの解説を行っている。
●動画:Package Transparency for WebAssembly Registries - Kyle Brown, SingleStore
ここでは内部の動きを中心に紹介しているが、よりシンプルに理解するためには2022年11月にデトロイトで行われたKubeCon+CloudNativeConの共催イベントとして開催されたCloud Native WASM Dayのライトニングトークの内容が適しているだろう。まずはその動画を解説したい。これもKyle Brown氏とCosmonicのBailey Hayes氏が行っているセッションだ。ちなみにCosmonicはwasmCloudというWebAssemblyをベースにしたクラウドサービスを提供している、WebAssemblyをリードするベンチャーの1社である。
9分という短い時間の中でWebAssemblyのパッケージの真正性を担保する必要性について解説しているが、モダンなアプリケーションに複数のオープンソースソフトウェアが含まれてビルドされるという現在の状況において、その真正性を保証するための仕組みがWebAssemblyにおいても必要だと言うのがこのWargが開発されている背景である。スライドは以下から参照できる。
●スライド(PDF):Wasm Day - SIG-Registry Talk
これはWebAssemblyがホストされているBytecode AllianceのSIG-Registryによる発表だが、Cloud Native WASM Dayで発表されていることからWASMに興味のあるエンジニアには有用な情報と言える。
ここで前提知識として、RegistryとRepositoryについて整理しておこう。Registryは認証された結果を保持するインデックス、Repositoryはパッケージ本体が保存される保管場所であり、実際にはクラウドサービスでもオンプレミスのサーバーでもかまわないニュートラルな仕様になっている。Wargはオープンソースとして開発されているWebAssemblyパッケージのためのRegistry Protocolである。
この動画の中では例としてアプリケーションの中でlibURL、Authz、Envoyなどが使われている場合にそれぞれのコンポーネントのバージョンが上がっていく時に異常なコードが紛れ込んでいないかなどをハッシュを作り、それを常に追記していくLogを使うことで追跡ができると説明。
またそれぞれのパッケージの組み合わせをMapとして使い、LogとMapを組み合わせることで真正性と透明性を確保できると説明している。
途中で異常なコードが紛れ込むという攻撃を受けても、検証(Audit)を行うことでコードの正しさが確認できる。単に追記型のLogだけではなくMapと組み合わせることで確実に正しさを確認できるというのがWargのコアコンセプトだ。
ではここからCloudNativeSecurityConで行われたKyle Brown氏のセッションを見て行こう。
最初に、WebAssemblyとは何かについて簡単に解説。
その後でWebAssemblyがブラウザーだけのテクノロジーではなく、すでにバックエンドやエッジでも使われていることを紹介。
Microsoftがフライトシミュレーターの中でDLLを使わないためにWebAssemblyを使っているのは有名な例だろう。実際にSDKの中のドキュメントにも明記されている。
●参考:SDK Documentation WebAssembly
そしてRegistryの仕事として、パッケージに対して名前とバージョンというメタデータを使ってリリースを定義することであると説明。
またパッケージ自体は、どのような形でどこに保存されるのかを限定されないと説明。ここでメタデータと実体が分離されることを解説している。
Registryはパッケージに異常なコードが追加された時にそれを追跡できる機能が必要であるとして、ここからBrown氏のLogとMapの解説が始まった。
Logは追記だけを行う仕様になっており、変更されたことが記録として残り続ける形式となっていることを説明した。
ここでLogとMapの組み合わせによって必要とするパッケージの真正性が確認できると説明。ここではチェックポイント自体も追記型の記録として保存される。
ここでパッケージの透明性を確保するために必要な3つの要件について、再度確認の意味で解説を行った。ここではパッケージ更新のログが追記型で残されること、暗号技術によって生成されたキーで改変を検出できること、そしてパッケージ検査が行えることを再度強調し、そのためにRegistryのプロトコルとしてWargが開発されていると説明した。
最後にこのセッションのまとめとして、WebAssemblyの紹介、パッケージレジストリーはインデックスであり、パッケージリポジトリーではないこと、パッケージの透明性確保のためにCA(認証局)の仕組みを参考にしていること、パッケージレジストリーによってWebAssemblyのパッケージの安全性が確保できることを解説してセッションを終えた。セッション終了後も参加者から多くの質問が寄せられていたが、Brown氏は丁寧に回答を行っていた。
Warg自体はプロトコルの定義であり、実装はそれぞれのビルドツールやCIツール、リポジトリーサービスの提供者側がそれぞれ行っていくことになるのだろう。Bytecode AllianceのGitHubにはリファレンス実装のページが用意されている。
地味なソフトウェアだがこれから必要性が高くなることが予想され、開発も徐々に活発になることが予想される。注目していきたいプロジェクトだ。
●参考:Warg公式ページ
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- Wasmの現状と将来の計画をBytecode Allianceが公開。CosmonicのBailey Hayes氏によるセッションを紹介
- KubeCon NA 2021開催。プレカンファレンスのWASM Dayの前半を紹介
- 初めてのWasmCon開催。キーノートからコンポーネントモデルを解説するFastlyのセッションを紹介
- KubeCon Europe 2024からWASMとeBPFを使ってストリーム処理を解説するセッションを紹介
- ヨーロッパ最大のテックカンファレンスKubeCon Europe 2023の共催イベントのWASM Dayを紹介
- KubeCon+CloudNativeCon NA 2023の併催イベントCloud Native Wasm Dayのキーノートを紹介
- KubeCon Europe 2024、共催イベントのCloud Native WASM DayからCosmonicが行ったセッションを紹介
- KubeCon Europe 2023共催のWasm Day、Cosmonicが作成したWASMを解説する絵本を紹介
- KubeCon Europe 2023共催のWasm Dayから、AdobeのWASMユースケースを紹介
- 「KubeCon NA 2022」のプレカンファレンスからCloudNative Wasm DAYを紹介