はじめまして。VMware の伊藤です。Tanzu 製品のプラットフォームアーキテクトとして働いており、開発と運用双方の経験があります。この記事では Tanzu Application Catalog の概要と利用法について扱います。
みなさんもすでにご存知でしょうが、昨今のアプリケーションはオープンソースソフトウェア(以下 OSS)を多様することが多いです。たとえば、データベースとして MySQL や Postgres を採用したり、ウェブサーバーとして Nginx や Apache HTTP Server を利用するといった具合です。この OSS を利用する傾向はコンテナ環境のほうが従来の仮想化基盤(VMware の仮想マシンや AWS の EC2 インスタンス)より一層強いです。どこでもすぐにコンテナを展開できるという特性から、プロプライエタリな製品よりも OSS のほうが考慮事項少なく利用できるのが一因かと思います。
今回ご紹介する Tanzu Application Catalog (以下 TAC)はコンテナ環境において、OSS 製品のコンテナをより安心して利用できるようにするための製品となります。製品の特徴を一言で言ってしまうと、OSS のコンテナのセキュリティ対策を VMware が責任を持って実施し、そのコンテナイメージのサポートを提供するというものです。
ここからは以下の流れで製品の紹介をおこないます。
- TACが必要な背景
- TACの概要
- TACの利用法
Tanzu Application Catalog が必要な背景
私もそうですが、多くのコンテナ利用者は様々なコンテナイメージを Docker Hub から無償で取得しています。Docker Hub に登録されているコンテナイメージは有象無象のものが多いですが、いくつかは「公式リポジトリ」と呼ばれる信頼される発行元のコンテナイメージなどがあります。たとえば Nginx や Postgres などの開発組織が自分たちで Docker Hub に公開したいとなった場合、Docker 社から特別な公式リポジトリが与えられることがあります。私が nginx のイメージを登録しようとすると「iyuichivm/nginx:latest」などと自分のDockerユーザー名をネームスペースとしてイメージ名に与える必要がありますが、公式リポジトリは「nginx:latest」などとグローバルな名前付けがされています。
この公式イメージはどこの誰が作ったかもわからないコンテナイメージより信頼がおけますので、多くのユーザーが利用しています。ただ、「開発元の信頼がおける」ということと「公開されているイメージに問題がない」ことはイコール関係にありません。あたりまえですが、信頼できる開発元が、問題のあるコンテナイメージを公開することは珍しくありません。
ここでは、実際に公式リポジトリのイメージを調べてみたいと思います。イメージのクオリティの尺度は様々ですが、多くの場合は「脆弱性があるか」を基準とします。この脆弱性検査のやりかたはいくつかありますが、一番簡単なのは「docker scan <コンテナイメージ名>」というコマンドを発行することです。この記事を書いた2021年の8月時点では比較的新しい機能なので、docker が古い場合は事前にアップデートをしておいてください。
全ての出力結果を張ると非常に長くなってしまうため抜粋しましたが、公式の nginx リポジトリの latest タグイメージで scan をかけると、「Criticalが2つ、Highが13、Medium 以下が90」という結果となりました。
同様の調査法で、よく使われそうな公式リポジトリの latest イメージを調べた結果を以下の表にまとめます。
この結果を見ると、公式リポジトリのコンテナイメージを疑いなくそのまま利用するリスクを理解して頂けると思います。
この問題の解決方法はいくつかありますが、一番原始的な手法は「安全なベースとなるコンテナイメージに自分で OSS をセキュアにのせる」という方法です。この方法は実際に実現可能で、Docker Hub にある Linux 自体の公式イメージを調査すると、そこそこセキュリティが高いことがわかります。ここに自分で安全に OSS をのせればよいわけです。
ただ、この作業は「OSS ごとにじぶんたちで構築手順を確立させ、それをずっとメンテナンスし続ける」という苦行の道の選択でもあると認識する必要があります。時間が立てば構築手順は陳腐化するかもしれませんし、「Postgres のバージョン X が欲しい、バージョン Y がよい」などと様々な構成が要求されることも考えられます。他には「Apache Zookeeper が欲しいのだけど」などと、今まで利用していた OSS とまったく違うものがいきなり要求される可能性もあります。
Tanzu Application Catalog の概要
TAC は上記の背景で説明した「自分たちで安全な OSS のコンテナイメージを構築する」ということを、VMware がお客様の代わりに実施するというソリューションです。VMware の TAC の開発チームは主要な OSS のコンテナイメージを安全なベース OS(Linux)上にビルドをし、テストや脆弱性検査にパスしたものをお客様に提供します。つまり、お客様の視点では Docker Hub の代わりに VMware の TAC のコンテナリポジトリのイメージを使うことで、サポートされた安全なコンテナイメージを採用できます。
最新の Linux や OSS も時間が経つにつれて新しい脆弱性が見つかりますが、それらの脆弱性を解決した新しいイメージを TAC はリリースし続けますので、お客様の視点では「利用するコンテナイメージのバージョンをあげていくだけ」で脆弱性対応がなされます。そして「新規の脆弱性が解決しない」といった場合は VMware のサポートチケットという形で VMware 側に問題解決を依頼することができます(もちろん TAC の開発チームは SLA に基づいて脆弱性対応処理をしているため、ずっと脆弱性が解決しないということはないとは思います)。
ご参考までに、先ほどの Docker Hub での検査と同じことを、TAC のコンテナリポジトリのイメージにたいして実施した結果を共有いたします。
表をみると分かるように、致命的(Critical)/危険度の高い(High)な脆弱性は全て解決されています。
VMware が用意したコンテナイメージを利用する流れは一般的なものと変わりません。以下の2つの方法が挙げられます。
- VMware のリポジトリを直接利用
- VMware のリポジトリ上のイメージを自組織のリポジトリに移して利用(なんらかの自動化)
この利用法を図に記載します。
今回は割愛しましたが、複雑なアプリケーションの展開に使う Helm Chart も提供していますので、マルチコンテナで構成される OSS アプリも VMware がサポートするかたちで展開できます。
また、VMware が用意したイメージを使うのではなく、お客様が必要とする形式のコンテナイメージを選択して、VMware がビルドして提供するという機能もあります(これはライセンスに依存する機能です。)
Tanzu Application Catalog の利用法
TAC の利用法は Docker Hub とほとんど変わりません。事前準備として以下を実施します。
- ユーザーの登録とトークンの生成 (アカウント作成相当)
- 手元の Docker や Kubernetes に上記のクレデンシャルを登録 (”docker login” or “k8s secret 作成”)
これで VMware のリポジトリからコンテナ基盤にイメージ Pull できるようになったので、docker コマンドなり、K8s の YAML 定義なりでコンテナを使います。
TAC のリポジトリは Docker Hub と同様に SaaS として提供されています。VMware が多くの SaaS を提供している「VMware Cloud」にログインし、そこで TAC を選択します(TAC のユーザーである必要があります)。
そうすると、登録されているコンテナイメージの一覧が画面上に表示されます。検索することで目的のイメージにたどりつけます。
ここでは Nginx を利用することを想定して、検索して Details をクリックしたとします。すると、Nginx のページでは以下のような情報が表示されます。
ページ上部にリポジトリのURLが書かれていますので、それをコピペして Docker なり K8s なりでコンテナイメージを使います。また、コンテナを利用するだけであれば必要のない情報となりますが、ページ下部には VMware がイメージをビルドした際に実施したテスト内容や脆弱性検査の内容がレポートとしてダウンロードできるようになっています。
Helm チャートの利用も上記のコンテナイメージのページ情報と大差なく、画面上部に利用するための情報が書かれています。画面下部にはテスト情報に加えて、どのコンテナイメージ(もちろんTACのコンテナイメージを利用)を使っているかも表示されています。
以上で Tanzu Application Catalog の概要解説を終えます。もし TAC の詳細を知りたかったり、試用をしてみたい場合は弊社営業にお声がけください。ご拝読ありがとうございました。