Linux Daily Topics

2022年3月11日"ディストロレス"なエコシステムの拡大を―apkベースの軽量OCIイメージ作成ツール「apko」

軽量でセキュアなLinuxディストリビューションとして人気の高い「Alpine Linux」は、とくにコンテナイメージ(OCIイメージ)の作成において使われることが多い。Alpine Linuxはパッケージマネージャに独自のシステムである「apk」を採用しており、Alpine Linuxが軽量でありながら扱いやすいOSとしてコンテナ周りで普及しているのはapkによるところが大きい。

このapkをベースに"ディストロレス(distroless)"なイメージ ―アプリケーションを動作させるために必要な最小限のコンポーネントだけを含むイメージを作成するツールが「apko」だ。作成するのはオープンソースをベースにしたサプライチェーンセキュリティの実現をめざすスタートアップChainguardで、2月28日にバージョン0.1がリリースされた。

Introducing apko: bringing distroless nirvana to Alpine Linux -blog.chainguard.dev
Build OCI images using APK directly without Dockerfile -GitHub

ディストロレスというコンセプトはコンテナ周りではとくに新しいものではなく、代表的な取り組みとしてはGoogleのプロジェクトが挙げられる。コンテナ内部にディストロ固有のパッケージマネージャやシェルを含まず、アプリケーションとそれを動かすための最小限の依存関係にとどめれば、攻撃者が脆弱性を突く機会を低減させることにつながる。コンテナ軽量化のメリットとしてはアプリケーションパフォーマンスの高速化やサーバ効率の向上が挙げられるが、ディストロレスイメージではそれらに加えてセキュリティ強化が非常に重要なポイントとなる。

ただし上記のGoogleのディストロレスツールはビルドに「Bazel」を使う。Chainguardは「Bazelは大規模でモノリシックなアプリケーションのビルドを想定しており、コンテナエコシステムのユーザにとってはそれがディストロレスイメージを敬遠する理由になる。彼らは(ディストロレスイメージを使う)かわりにAlpineやDebian上でイメージをビルドするが、その結果、攻撃にさらされる機会を増やすことになる」として、Bazel前提ではディストロレスイメージの活用が拡がりにくい、つまりエコシステムが拡大しにくいと指摘している。

Chainguardが開発するapkoはBazelに依存するのではなく、かわりにパッケージマネージャのapkをベースにした宣言型のOCIイメージビルダーである。ユーザはapkによく似たコマンド操作でコードのビルドやpublishが可能で、アプリケーションの動作に必要なコンポーネントだけを含めたイメージを容易に、かつ高速(1秒未満)で作成できる。Chainguardは似たようなシステムとしてGoogleが開発するGoアプリケーション用のコンテナイメージビルダー「ko」を挙げている。

Chainguardは引き続き、ディストロレスなエコシステムの拡大とともに、セキュアでスケーラブルなソフトウェアの世界の実現をめざしていくという。シンプルで使いやすいapkoの開発はその第一歩であり、さらなるケイパビリティの拡充を図っていく。

おすすめ記事

記事・ニュース一覧